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