Как создать следующие и предыдущие ссылки на продукты?
4 answers
Должен ли я создать свой собственный вспомогательный класс или сделать это правильно в view.phtml?
Ответ заключается в том и другом.
Вам нужно создать помощника, а затем вызвать эту форму класса в view.phtml
, как описано в статье Inchoo.
Обе ссылки, которые вы предоставили, используют один и тот же код, но одна из Inchoo - это оригинальная публикация, а другая - задание копирования+вставки с некоторыми небольшими изменениями. Используйте код Inchoo, это лучший способ реализовать эту функциональность на стандартном сайте.
Обратите внимание на то, что говорится в статье о многоуровневой навигации - этот код будет работать только со стандартными категориями, для которых "Привязка" установлена на "Нет".
Существует также еще одно расширение для предыдущих/следующих продуктов, созданное Бранко Айзеле. Вы можете найти его на github: https://github.com/ajzele/Inchoo_Prevnext (взгляните на оригинальное сообщение в блоге)
Основная идея состоит в том, чтобы создать наблюдателя, который захватывает загруженную в данный момент коллекцию продуктов из блока списка продуктов. Так что этот на самом деле работает с многоуровневой навигацией.
Код 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;
}
Есть расширение от AheadWorks, с которым я работал в прошлом. Это недешево, но делает свое дело.
Http://ecommerce.aheadworks.com/magento-extensions/user-experience/previous-next.html