Jump to content

вывод товаров из подкатегорий


Recommended Posts

Здравствуйте.

существует категория: лампы в которой находятся подкатегории лампы накаливания и светодиодные лампы.

а в них уже находятся товары.

Необходимо чтобы при входе в категорию лампы отображались все товары подкатегорий, в следующем виде:

Лампы накаливания (рядом картинка подкатегории)

лампа 1

лампа 2

светодиодные лампы (рядом картинка подкатегории)

лампа 3

лампа 4

____________

как вывести просто списком,я нашел.. есть настройка в админке.

Link to post
Share on other sites

В Админке - Настройки - Вывод товара включить опцию Показывать товар из подкатегорий, вроде бы так называется опция, там видно будет.

Link to post
Share on other sites

да, но там выводится просто товар списком

без названия подкатегорий и без картинки подкатегории, а мне надо как написал в предидущем посте

Link to post
Share on other sites

Ничего другого по умолчанию нет.

Тогда правьте скрипты и делайте вывод такой какой Вам нужен.

Link to post
Share on other sites

Много файлов править.

/includes/modules/default.php

/includes/modules/product_listing.php

шаблоны списка товаров и т.д.

Link to post
Share on other sites
  • 2 years later...
mariolast

Может кто подскажет.

Нашел интересную заметку, как выводить подкатегории. Суть.

Одновременный вывод подкатегорий и товаров в 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

Так код принципиально не менялся, если заметка правильная, всё должно работать.

Link to post
Share on other sites
mariolast

Может подскажете тогда. Код рабочий.

Пытаюсь теперь прикрутить эту идею к ниспадающему меню в новом шаблоне.

Создал новый бокс 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

Все категории берутся из php файла бокса, из sql запроса.

По идее, Вам нужно sql запрос переписывать.

Link to post
Share on other sites

В Админке - Настройки - Вывод товара включить опцию Показывать товар из подкатегорий, вроде бы так называется опция, там видно будет.

А каким образом эта опция завязана на глубину вложенности?

Было 

Категория - подкатегория - товар

Жмем на Категория - выводятся товары списком, согласно установленной опции

 

Появился новый раздел

Категория - подкатегория- подподкатегория - товар

Жмем на Категория - НЕ выводятся товары списком,  "Не найдено товаров, соответствующих Вашему запросу.

Воспользуйтесь поиском!"

Как починить?

Link to post
Share on other sites
support

Вроде как выводится только на один уровень глубины подкатегорий, не ниже.

Link to post
Share on other sites

Ну таки да, а как больше сделать?

Link to post
Share on other sites
support

Да вроде никак, разве что код переписывать в /includes/modules/default.php

Link to post
Share on other sites
mariolast

Вот он этот 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

Уж пардон, но код за Вас писать не буду.

Link to post
Share on other sites
×
×
  • Create New...