Перейти к содержанию
Форум поддержки пользователей VamShop

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


Рекомендуемые сообщения

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

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

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

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

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

лампа 1

лампа 2

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

лампа 3

лампа 4

____________

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

/includes/modules/default.php

/includes/modules/product_listing.php

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

Ссылка на сообщение
Поделиться на другие сайты
  • 2 years later...

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

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

Одновременный вывод подкатегорий и товаров в 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, сайт вообще не грузится, пустая страница после добавления сего кода.

Где то есть ошибка.

Может кто подскажет в чем ошибка, возможно на пред. версиях вамшопа оно работало.

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Сохранил. По идее должно работать, но видимо где то допустил ошибку. Меню пустое.

Где то видимо допустил ошибку

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Было 

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

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

 

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Не сработало, вообще сайт повис.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...