Я использую отдельное отображение для некоторых категорий со своим шаблоном и думал что если я задам в шаблоне параметр {$settings.Appearance.products_per_page = 50} то это повлияет на кол-во отображаемых товаров, но это не так. как я могу изменить для своего шаблона это ?
почистите кэш шаблонов, например добавив в url
&ctpl
{$settings.Appearance.products_per_page|fn_print_r}
{$settings.Appearance.products_per_page = 50}
{$settings.Appearance.products_per_page|fn_print_r}
выводит
значение меняется, если смотреть так, но на кол-во отображаемых товаров, к сожалению, это не влияет…
для наглядности я вывел один товар и ничего не изменилось… Screenshot by Lightshot
Lightshot недоступен у меня.
Это потому что расчет и выборка товаров ведется не в шаблоне, а в контроллере. То есть по хорошему надо в категорию добавить поле, чтобы заполнять его в настройках категории, а в своем pre-контроллере смотреть, если значение поля для текущей категории указано, то подменять
я надеялся, что есть возможность проще сделать это) понял, спасибо
Есть платный модуль, в котором можно настраивать для категорий количество выводимых товаров и сортировку.
Может сможете помочь/подсказать как исправить ситуацию)
добился я того чего хотел через пре контроллер
if (!defined('BOOTSTRAP')) { die('Access denied'); }
if ($mode == 'view' && !empty($_REQUEST['category_id'])) {
$category_id = $_REQUEST['category_id'];
$is_child = isChildOfCategory($category_id, 269);
if ($is_child) {
$total_products = getTotalProductsInCategory($category_id);
$_REQUEST['items_per_page'] = $total_products > 0 ? $total_products : 1;
} else {
$_REQUEST['items_per_page'] = '';
}
}
function isChildOfCategory($category_id, $parent_category_id) {
$id_path = db_get_field('SELECT id_path FROM ?:categories WHERE category_id = ?i', $category_id);
$path_ids = explode('/', $id_path);
return in_array($parent_category_id, $path_ids);
}
function getTotalProductsInCategory($category_id) {
$total_products = db_get_field("SELECT COUNT(*) FROM ?:products_categories
JOIN ?:products ON ?:products_categories.product_id = ?:products.product_id
WHERE ?:products_categories.category_id = ?i AND ?:products.status = 'A'", $category_id);
return $total_products;
}
но теперь я не могу в других категориях переключить кол-во отоборажаемых товаров в поле сортировки… там остается только то значение которое установлено в настройках и не переключается… как это можно исправить подскажите ?
Настройки - внешний вид, попробуйте отметить чекбокс “Использовать выбранное отображение только для текущей категории или страницы поиска:”
он уже был отмечен ранее…
Попозже посмотрю в коде, сейчас не могу, наверное в сессию пишется.
Здесь напишите так
if ($is_child) {
$total_products = getTotalProductsInCategory($category_id);
if ($total_products > 0) {
$_REQUEST['items_per_page'] = $total_products;
}
}
И видимо нужен еще post контроллер, чтобы вернуть значение обратно (включая сессию)
Заменил в этом условии $_REQUEST[‘items_per_page’] на $_SESSION[‘items_per_page’] и ситуация улучшилась) теперь могу в категории переключать кол-во отображаемых товаров… Спасибо за внимание и потраченное время )