Jump to content

Как сделать разные шаблоны для разных категорий?


Recommended Posts

Добрый день,

подскажите ,как сделать вывод содержимого категории различным для разных категорий. Конкретно надо применить разные реализации category_listing.html для разных категорий.

Как вариант думал о том ,чтобы в самом файле анализировать какая страница выводится и делать разную реализацию внешнего вида (меняться должен только внешний вид). Например ,анализируя в  category_listing.html содержимое {$smarty.server.REQUEST_URI}.

Может есть более простое и красивое решение? 

Link to post
Share on other sites

Вроде разобрался. Надо создать новый шаблон в папке category_listing и его прописать категории в админке. Правильно? 

Link to post
Share on other sites

Спасибо. 

Но есть еще вопросы:

1. как можно сделать разный стиль отображения модулей в зависимости от категорий. Например, на главной странице модуль рекомендуемых товаров в виде слайдера ,а на странице категорий - списком товаров.

2. Есть три шаблона рекомендуемых товаров feautured.html, featured_products_category.html, featured_products_default.html. В чем у них разница, как понять ,какой php файл за них отвечает (я что-то не нашел ,кроме ссылки на featured_products_default в feautured.php?

3. Есть ли модуль рекомендуемых товаров с фильтрацией тех товаров ,которые представлены в текущей категории?

 

Заранее благодарен.

Link to post
Share on other sites
support

1. Без правки кода никак не получится. По умолчанию нет такого функционала.

2. http://vamshop.ru/manual - там есть описание шаблонов.

3. По умолчанию так и есть, если заходите в категории, а в подкатегориях есть рекомендемые товара, то в блоке Рекомедуемые на странице категории выводятся рекомендуемые и новинки из подкатегорий текущей категории.

Link to post
Share on other sites

Спасибо.

Разбирая  feautured.php обнаружил ошибку. Если один и тот же товар присутствуебт в разных категориях (ссылки) ,то он дублируется в модуле рекомендуемых товаров. Мое предложение по исправлению:

Вместо

	$featured_products_query = "SELECT distinct * FROM
	                                         ".TABLE_PRODUCTS." p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pd.products_id = p.products_id,
	                                         ".TABLE_FEATURED." f where
	                                         p.products_id=f.products_id ".$group_check."
	                                         ".$fsk_lock."
	                                         and p.products_status = '1' and f.status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."'
	                                         order by p.products_date_added DESC limit ".MAX_DISPLAY_FEATURED_PRODUCTS;

вставляем

	$featured_products_query = "SELECT * FROM
	                                         ".TABLE_PRODUCTS." p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pd.products_id = p.products_id,
	                                         ".TABLE_FEATURED." f where
	                                         p.products_id=f.products_id ".$group_check."
	                                         ".$fsk_lock."
	                                         and p.products_status = '1' and f.status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."'
	                                         group by p.products_id order by p.products_date_added DESC limit ".MAX_DISPLAY_FEATURED_PRODUCTS;

вместо

	$featured_products_query = "SELECT distinct * FROM
	                                         ".TABLE_PRODUCTS." p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pd.products_id = p.products_id,
	                                         ".TABLE_FEATURED." f,
	                                        ".TABLE_PRODUCTS_TO_CATEGORIES." p2c,
	                                        ".TABLE_CATEGORIES." c
	                                        where c.categories_status='1'
	                                        and p.products_id = p2c.products_id and p.products_id=f.products_id
	                                        and p2c.categories_id = c.categories_id
	                                        ".$group_check."
	                                        ".$fsk_lock."
	                                        and c.parent_id = '".$featured_products_category_id."'
	                                        and p.products_status = '1' and f.status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."'
	                                        order by p.products_date_added DESC limit ".MAX_DISPLAY_FEATURED_PRODUCTS;

вставляем

	$featured_products_query = "SELECT * FROM
	                                         ".TABLE_PRODUCTS." p left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pd.products_id = p.products_id,
	                                         ".TABLE_FEATURED." f,
	                                        ".TABLE_PRODUCTS_TO_CATEGORIES." p2c,
	                                        ".TABLE_CATEGORIES." c
	                                        where c.categories_status='1'
	                                        and p.products_id = p2c.products_id and p.products_id=f.products_id
	                                        and p2c.categories_id = c.categories_id
	                                        ".$group_check."
	                                        ".$fsk_lock."
	                                        and c.parent_id = '".$featured_products_category_id."'
	                                        and p.products_status = '1' and f.status = '1' and pd.language_id = '".(int) $_SESSION['languages_id']."'
	                                        group by p.products_id order by p.products_date_added DESC limit ".MAX_DISPLAY_FEATURED_PRODUCTS;											

В общем - убираем dictinct (в данном случае он не имеет смысла ,т.к. строки у копий товара разные) и добавляем group by p.products_id (группируем по коду товара).

Link to post
Share on other sites
support

Спасибо, внёс правку в текущий код.

В том числе и эта правка будет в следующей версии VamShop.

Link to post
Share on other sites

Добрый день, обнаружил toot проблему. Есть модификатор lower (файл modifier.lower.php). Он не работает с кириллицей. Проблема в функции strtolower ,которая не работает с UTF 8. Возможно таже проблема  и с другими модификаторами. Я не проверял. Возможно ,мое решение не оптимально. Предлагаю внести в новый релиз и поправить остальные. 

/*
function smarty_modifier_lower($string)
{
    return strtolower($string);
}
*/
function smarty_modifier_lower($string, $cod = "utf-8")
{
	return mb_strtolower($string, $cod);
} 

TRUNСATE отрабатывет нормально.

Link to post
Share on other sites
support

Вообще файлы смарти править не очень хорошо.

 

Лучше завести свой модификатор в /includes/external/smarty/vam_plugins/

 

Что б не было проблем при обновлении smarty.

Link to post
Share on other sites

Еще вопрос ,как в popup окне задать размер картинки (шаблон vamshop1)? Сейчас ,как я понял ,изображение выводится в реальном размере. Где смотреть?

Link to post
Share on other sites

То что нет ,я понял. Хорошо буду искать..

Еще столкнулся с тем, что когда поиск по сайту ничего не находит ,то выдается предупреждение:

Warning: Cannot modify header information - headers already sent by (output started at W:\home\mysite.ru\www\includes\header.php:37) in W:\home\mysite.ru\www\includes\modules\error_handler.php on line 17

Если в файле error_handler.php

убрать строку 17

  header('HTTP/1.0 404 Not Found');

то все ОК. Это правильно или нет? На что-то может еще повлиять?

Link to post
Share on other sites

Еще всплыл вопрос. Как можно запретить индексацию части страниц поисковиками. Вручную прописывать в файле meta.php что-то типа этого:

вместо:

<meta name="robots" content="<?php echo META_ROBOTS; ?>" />

Вставить:

if (strstr($PHP_SELF, FILENAME_CHECKOUT) || strstr($PHP_SELF, FILENAME_SC_CHECKOUT_CONFIRMATION) || strstr($PHP_SELF, FILENAME_SHOPPING_CART)) {	
?>
<meta name="robots" content="noindex,follow" />
<?php
} else {
?>
<meta name="robots" content="<?php echo META_ROBOTS; ?>" />
<?php
}

 и перечислить все файлы, которые не должны индексироваться. Или есть что-то более красивое?

Link to post
Share on other sites
support

Так для этого есть файл /robots.txt

Туда добавляйте.

Link to post
Share on other sites
×
×
  • Create New...