snip 0 Posted August 17, 2011 Report Share Posted August 17, 2011 Здравствуйте. существует категория: лампы в которой находятся подкатегории лампы накаливания и светодиодные лампы. а в них уже находятся товары. Необходимо чтобы при входе в категорию лампы отображались все товары подкатегорий, в следующем виде: Лампы накаливания (рядом картинка подкатегории) лампа 1 лампа 2 светодиодные лампы (рядом картинка подкатегории) лампа 3 лампа 4 ____________ как вывести просто списком,я нашел.. есть настройка в админке. Link to post Share on other sites
support 447 Posted August 17, 2011 Report Share Posted August 17, 2011 В Админке - Настройки - Вывод товара включить опцию Показывать товар из подкатегорий, вроде бы так называется опция, там видно будет. Link to post Share on other sites
snip 0 Posted August 17, 2011 Author Report Share Posted August 17, 2011 да, но там выводится просто товар списком без названия подкатегорий и без картинки подкатегории, а мне надо как написал в предидущем посте Link to post Share on other sites
support 447 Posted August 17, 2011 Report Share Posted August 17, 2011 Ничего другого по умолчанию нет. Тогда правьте скрипты и делайте вывод такой какой Вам нужен. Link to post Share on other sites
snip 0 Posted August 17, 2011 Author Report Share Posted August 17, 2011 а какой файл править? Link to post Share on other sites
support 447 Posted August 17, 2011 Report Share Posted August 17, 2011 Много файлов править. /includes/modules/default.php /includes/modules/product_listing.php шаблоны списка товаров и т.д. Link to post Share on other sites
mariolast 4 Posted May 17, 2014 Report Share Posted May 17, 2014 Может кто подскажет. Нашел интересную заметку, как выводить подкатегории. Суть. Одновременный вывод подкатегорий и товаров в 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} Соответственно тут мы перебираем и выводим наши подкатегории. Мне тут интересен сам вывод подкатегорий. Пытаюсь прикрутить его к ниспадающему меню в новом шаблоне. Но вот только сейчас на новом 1.72 магазине это все не работает, проблема в самом запросе к БД $categories_query, сайт вообще не грузится, пустая страница после добавления сего кода. Где то есть ошибка. Может кто подскажет в чем ошибка, возможно на пред. версиях вамшопа оно работало. Link to post Share on other sites
support 447 Posted May 17, 2014 Report Share Posted May 17, 2014 Так код принципиально не менялся, если заметка правильная, всё должно работать. Link to post Share on other sites
mariolast 4 Posted May 19, 2014 Report Share Posted May 19, 2014 Может подскажете тогда. Код рабочий. Пытаюсь теперь прикрутить эту идею к ниспадающему меню в новом шаблоне. Создал новый бокс box_categories2.html, сделал чтобы он показывал все меню категорий. Теперь хочу сделать так, чтобы он показывал только 1-ю подкатегорию из категории с id=187. Для этого правим код в файле includes/modules/product_listing.php как как это описано в вышеприведенном коде. Далее открываем box_categories2.html. Его содержимое {config_load file="$language/lang_$language.conf" section="boxes"} <div id="boxCategories2"> <div id="categories2BoxMenu"> {$BOX_CONTENT} </div> меняю на {config_load file="$language/lang_$language.conf" section="boxes"} {$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=187">{$category_data.CATEGORIES_NAME}</a></li> {/foreach} </ul> </div> </div> Сохранил. По идее должно работать, но видимо где то допустил ошибку. Меню пустое. Где то видимо допустил ошибку Link to post Share on other sites
support 447 Posted May 20, 2014 Report Share Posted May 20, 2014 Все категории берутся из php файла бокса, из sql запроса. По идее, Вам нужно sql запрос переписывать. Link to post Share on other sites
alexts 18 Posted May 21, 2014 Report Share Posted May 21, 2014 В Админке - Настройки - Вывод товара включить опцию Показывать товар из подкатегорий, вроде бы так называется опция, там видно будет. А каким образом эта опция завязана на глубину вложенности? Было Категория - подкатегория - товар Жмем на Категория - выводятся товары списком, согласно установленной опции Появился новый раздел Категория - подкатегория- подподкатегория - товар Жмем на Категория - НЕ выводятся товары списком, "Не найдено товаров, соответствующих Вашему запросу. Воспользуйтесь поиском!" Как починить? Link to post Share on other sites
support 447 Posted May 22, 2014 Report Share Posted May 22, 2014 Вроде как выводится только на один уровень глубины подкатегорий, не ниже. Link to post Share on other sites
alexts 18 Posted May 22, 2014 Report Share Posted May 22, 2014 Ну таки да, а как больше сделать? Link to post Share on other sites
support 447 Posted May 22, 2014 Report Share Posted May 22, 2014 Да вроде никак, разве что код переписывать в /includes/modules/default.php Link to post Share on other sites
mariolast 4 Posted May 23, 2014 Report Share Posted May 23, 2014 Вот он этот sql запрос $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); А вот какой в модуле function vam_category3_get_category_products( $cat_id ) { global $categories_string3; $products_query = "select p.products_id, pd.products_name from ".TABLE_PRODUCTS." as p " . "left join ".TABLE_PRODUCTS_DESCRIPTION." as pd on (p.products_id = pd.products_id) " . "left join ".TABLE_PRODUCTS_TO_CATEGORIES." as ptc on (p.products_id = ptc.products_id) " . "where ptc.categories_id = '".$cat_id."' and p.products_status = '1' and pd.language_id='" . (int)$_SESSION[ 'languages_id' ] . "' " . "order by p.products_sort"; $products_query = vamDBquery( $products_query ); while ( $products = vam_db_fetch_array( $products_query, true ) ) { $p_url = vam_product_link( $products[ 'products_id' ], $products[ 'products_name' ] ); $p_url = vam_href_link( FILENAME_PRODUCT_INFO, $p_url ); $categories_string3 .= '<li class="categorie_product"><a href="' . $p_url . '">' . $products[ 'products_name' ] . '</a></li>'; }; // while ( $products = vam_db_fetch_array( $products_query, true ) ) } Здесь я менял "select p.products_id, pd.products_name from ".TABLE_PRODUCTS." as p " . "left join ".TABLE_PRODUCTS_DESCRIPTION." as pd on (p.products_id = pd.products_id) " . "left join ".TABLE_PRODUCTS_TO_CATEGORIES." as ptc on (p.products_id = ptc.products_id) " . "where ptc.categories_id = '".$cat_id."' and p.products_status = '1' and pd.language_id='" . (int)$_SESSION[ 'languages_id' ] . "' " . "order by p.products_sort"; на "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"; Не сработало, вообще сайт повис. Link to post Share on other sites
support 447 Posted May 24, 2014 Report Share Posted May 24, 2014 Уж пардон, но код за Вас писать не буду. Link to post Share on other sites
Recommended Posts