Одновременный вывод подкатегорий и товаров в Vamshop

от автора

Доброго времени суток.

Черт меня дернул одному заказчику поставить интернет-магазин на движке Vamshop. И вот встала задача выводить на странице категории как список подкатегорий, так и список товаров. А движок работает так, что если в категорие есть товары, то он выводит только товары. В интернете решения этого вопроса не нашел, так что предлагаю свой вариант. Кому интересно, прошу под кат.

В файле includes/modules/product_listing.php после строк

	$listing_query = vamDBquery($listing_split->sql_query); 	while ($listing = vam_db_fetch_array($listing_query, true)) { 		$rows ++; 		$module_content[] =  $product->buildDataArray($listing);		 	} 

добавляем:

	if ($_GET['cat']) { 		$categories_query = "SELECT c.categories_id, cd.categories_name FROM categories AS c, categories_description AS cd WHERE c.categories_id=cd.categories_id AND c.parent_id=$current_category_id"; 		$categories_query = vamDBquery($categories_query); 		$categories_list = array(); 		while ($subcategory = vam_db_fetch_array($categories_query, true)) { 			$categories_list[] =  array ('CATEGORIES_NAME' => $subcategory['categories_name'], 'CATEGORIES_ID' => $subcategory['categories_id']);	 		} 		$module->assign('categories_list', $categories_list); 	} 

В кратце поясню, что мы банально выбираем из базы подкатегории нашей текущей категории и при помощи $module->assign(‘categories_list’, $categories_list); делаем их доступными для системы шаблонов (Vamshop использует Smarty).

Далее в templates/<current_template>/modules/product_listing/product_listing_columns.html добавляем в нужном нам месте строки вида:

{if $categories_list} <div class="page">   <div class="pageItem">     <ul class="categories-list">      {foreach name=aussen item=category_data from=$categories_list}  	   <li><a href="index.php?cat={$category_data.CATEGORIES_ID}">{$category_data.CATEGORIES_NAME}</a></li>      {/foreach}     </ul>   </div> </div> {/if} 

Соответственно тут мы перебираем и выводим наши подкатегории.

Все очень просто, но гугл мне на мой вопрос ответа не дал. И я надеюсь, что это кому-нибудь да поможет.

ссылка на оригинал статьи http://habrahabr.ru/post/157479/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *