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

в 23:04, , рубрики: php, метки:

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

Черт меня дернул одному заказчику поставить интернет-магазин на движке 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}

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

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

Автор: MParshin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js