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