Создание в карточке товара ссылок на предыдущий и следующий товар

В интернет-магазине очень важную роль играет перелинковка товара. Это касается как SEO, так юзабилити сайта. Очень важно чтоб посетитель Вашего магазина мог спокойно перемещаться по товарам не покидая карточки товара.

Мы Вам покажем, как в интернет магазине на JoomShopping реализовать навигацию в карточке товара по предыдущему и следующему товару.

Как это выглядит:

maket

Чтобы при обновлении JoomShopping наше решение не было затронуто будем все изменения проводить в шаблоне карточки товара.

Заходим в шаблон карточки товара:

/components/com_jshopping/templates/default/product/product_default.php

Находим строку:

<?php include(dirname(__FILE__)."/load.js.php");?>

и после неё вставляем код:

<?php $product_id = JRequest::getInt('product_id');
$product_nav = &JTable::getInstance('product', 'jshop');
$product_nav->load($product_id);
$category_id = $product_nav->getCategory();
$products = &$this->getModel("products"); //Определяем сортировку и направление сортировки пользователя
$mainframe =& JFactory::getApplication();
$jshopConfig = &JSFactory::getConfig();
$order = $mainframe->getUserStateFromRequest( 'jshoping.list.front.productorder', 'order', $jshopConfig->product_sorting, 'int');
$orderby = $mainframe->getUserStateFromRequest( 'jshoping.list.front.productorderby', 'orderby', $jshopConfig->product_sorting_direction, 'int');
$orderbyq = getQuerySortDirection($order, $orderby);
$field_order = $jshopConfig->sorting_products_field_select[$order];
$order_query = "";
if (!$field_order) return $order_query;
$order_original = $field_order;
$multyCurrency = count(JSFactory::getAllCurrency());
if ($multyCurrency>1 && $field_order=="prod.product_price"){
if (strpos($adv_from,"jshopping_currencies")===false){
$adv_from .= " LEFT JOIN `#__jshopping_currencies` AS cr USING (currency_id) ";
}
if ($jshopConfig->product_list_show_min_price){
$field_order = "prod.min_price/cr.currency_value";
}else{
$field_order = "prod.product_price/cr.currency_value";
}
}
if ($field_order=="prod.product_price" && $jshopConfig->product_list_show_min_price){
$field_order = "prod.min_price";
}
$order_query = " ORDER BY ".$field_order;
if ($orderbyq){
$order_query .= " ".$orderbyq;
}
//Собственно сам запрос
$db =& JFactory::getDBO();
$query = "SELECT *, `prod`.`name_ru-RU` as name FROM `#__jshopping_products` AS prod
INNER JOIN `#__jshopping_products_to_categories` AS pr_cat ON `pr_cat`.`product_id` = `prod`.`product_id`
LEFT JOIN `#__jshopping_categories` AS cat ON `pr_cat`.`category_id` = `cat`.`category_id`
WHERE `prod`.`product_quantity`> 0 AND `prod`.`product_publish` = 1 AND `pr_cat`.`category_id` = ".$category_id." ".$order_query;
$db->setQuery($query);
$rows = $db->loadObjectList();
$total = Count($rows);
addLinkToProducts($rows, 0, 1);
$Next = false;
$Prev = false;
foreach($rows as $Key=>$row){
If ($row->product_id == $product_id){
if($rows[$Key + 1]->product_link) $Next='<a style="font-size: 10px;text-decoration: none;" href="'.$rows[$Key + 1]->product_link.'" title="'.$rows[$Key + 1]->name.'">'.$rows[$Key + 1]->name.' ></a>';
if($rows[$Key - 1]->product_link) $Prev='<a style="font-size: 10px;text-decoration: none;" href="'.$rows[$Key - 1]->product_link.'" title="'.$rows[$Key - 1]->name.'">< '.$rows[$Key - 1]->name.'</a>';
Break;
}
}
?>

Всё готово!!!

Если в Вашем магазине товары находиться в нескольких категориях и Вам нужно чтобы предыдущий и следующий товар были из текущей категории - Вам необходимо во втором блоке кода в 4 строке вместо $category_id = $product->getCategory(); вставить $category_id = JRequest::getInt('category_id');

В магазинах в которых не выводятся остаток товара - количество которого равно 0. В этом случаи необходимо из запроса удалить "`prod`.`product_quantity`> 0 AND " после WHERE

Также Вы можете скачать специальный плагин после установки которого Вам только остаётся вывести в карточки товара информацию в любом подходящем месте для Вас.

.Еще сайты сделаные нами: