Как создать следующие и предыдущие ссылки на продукты?


Вопрос говорит сам за себя. Я нашел 2 сообщения в блоге об этом. Должен ли я создать свой собственный вспомогательный класс, такой как Здесь, или сделать это правильно в представлении.phtml, как здесь. Какой подход был бы лучшим, и нет ли лучшего?

Author: ruuter, 2013-03-07

4 answers

Должен ли я создать свой собственный вспомогательный класс или сделать это правильно в view.phtml?

Ответ заключается в том и другом.

Вам нужно создать помощника, а затем вызвать эту форму класса в view.phtml, как описано в статье Inchoo.

Обе ссылки, которые вы предоставили, используют один и тот же код, но одна из Inchoo - это оригинальная публикация, а другая - задание копирования+вставки с некоторыми небольшими изменениями. Используйте код Inchoo, это лучший способ реализовать эту функциональность на стандартном сайте.

Обратите внимание на то, что говорится в статье о многоуровневой навигации - этот код будет работать только со стандартными категориями, для которых "Привязка" установлена на "Нет".

 2
Author: jharrison.au, 2016-03-24 16:18:54

Существует также еще одно расширение для предыдущих/следующих продуктов, созданное Бранко Айзеле. Вы можете найти его на github: https://github.com/ajzele/Inchoo_Prevnext (взгляните на оригинальное сообщение в блоге)

Основная идея состоит в том, чтобы создать наблюдателя, который захватывает загруженную в данный момент коллекцию продуктов из блока списка продуктов. Так что этот на самом деле работает с многоуровневой навигацией.

 1
Author: mnp, 2013-12-02 09:04:41

Код inchoo не сработал для меня. Это работает, хотя:

function getNextProductUrl($category, $currentProduct) {

    $productPositions = $category->getProductsPosition();
    asort($productPositions);
    $sortedCatProductIds = array_keys($productPositions);

    $currentProductCategoryIndex = @array_search($currentProduct->getId(), $sortedCatProductIds);

    $nextProductIds = array_slice($sortedCatProductIds, $currentProductCategoryIndex + 1, count($sortedCatProductIds)); //+1 for next product, -1 for previous product

    foreach ($nextProductIds as $productId) {
        $product = Mage::getModel('catalog/product')->load($productId);

        if ($product && $product->getId() && $product->isVisibleInCatalog() && $product->isVisibleInSiteVisibility()) {
            return $product->getProductUrl();
        }
    }

    return false;
}
 1
Author: Willster, 2015-06-10 10:21:04

Есть расширение от AheadWorks, с которым я работал в прошлом. Это недешево, но делает свое дело.

Http://ecommerce.aheadworks.com/magento-extensions/user-experience/previous-next.html

 0
Author: Fabian Blechschmidt, 2013-03-07 07:19:20