Регистрация
Вход через соцсети
Восстановление пароля

Многоуровневый каталог товаров

Новый топик
12.06.2010, 00:03
Ответить | Цитировать
Заур

Зарегистрирован:
2010-06-10
Сообщений: 1

Здравствуйте!
По акции CMSMagazine мы получили лицензию Community, чему очень рады.

Но мы хотим сделать на основе "Товары и услуги: Адаптивный каталог товаров" каталог товаров улыбка Но увы, нам необходима вложенность, т.е. (Машины -> BMW -> Седаны) и так далее.. и текущий компонент этого не поддерживает. По этому я прошу у Вас совета, можно ли это сделать стандартными средствами?

Если нет, могли бы вы подсказать, где находится в коде данные о "Товары и услуги: Адаптивный каталог товаров", каким примерно образом можно реализовать такую структуру на вашей архитектуре? Хорошо бы чтобы ответил программист, но я не могу от Вас этого требовать.

Заранее благодарю!
13.06.2010, 22:17
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Сделать это можно, но конкретная реализация зависит от ваших задач. Самый простой вариант это создать в админке требуемое дерево разделов и присвоить им компонент
14.06.2010, 16:45
Ответить | Цитировать
Гость
Гость

Вот, а как можно дереву присвоить компонент так, чтобы я зашел в "Машины" и увидел все машины из подкатегорий, а не только те, которые которые которые конкретно к категории "Машины"?

благодарю)
15.06.2010, 08:30
Ответить | Цитировать
malich
Андрей Малков

Зарегистрирован:
2005-08-09
Сообщений: 522

Логика должна быть примерно следующая:
1. в карте сайта создаем необходимое дерево разделов
2. присваиваем эти разделам нужный компонент
3. создаем в компоненте нужный набор полей
4. настраиваем вывод информации: префикс списка, список объектов, суффикс списка и детальный просмотр

5. Дописываете ваш функционал.
Для того что бы вывести в родительском разделе информацию из всех его подразделов в системных настройках компонента нужно написать примерно следующие

Код:
if ($sub==97){
$ignore_sub = 1;
$ignore_cc = 1;
$query_where = "Subdivision_ID=98 OR Subdivision_ID=99 OR Subdivision_ID=100";
}

Этот код означает, что в разделе с id 97 мы выводим все записи нашего компонента ($ignore_sub = 1; $ignore_cc = 1;), но так как нам нужно вывести только записи из подразделов этого раздела, добавляем условие выборки $query_where

Вы можете привязаться к id разделов ($sub) и к уровню вложенности ($parent_sub_tree, $sub_level_count) возможно можно использовать еще какието переменные.

id разделов вы можете получить sql запросом к базе данных (listQuery, $db->), табличке Subdivision в которой хранится карта сайта
16.06.2010, 13:01
Ответить | Цитировать
Insight

Зарегистрирован:
2010-06-14
Сообщений: 1

Благодарю за помощь, всё отлично получилось. Спасибо
16.04.2011, 19:07
Ответить | Цитировать
Александр

Зарегистрирован:
2011-04-15
Сообщений: 13

Цитата:
Логика должна быть примерно следующая:
1. в карте сайта создаем необходимое дерево разделов
2. присваиваем эти разделам нужный компонент
3. создаем в компоненте нужный набор полей
4. настраиваем вывод информации: префикс списка, список объектов, суффикс списка и детальный просмотр

5. Дописываете ваш функционал.
Для того что бы вывести в родительском разделе информацию из всех его подразделов в системных настройках компонента нужно написать примерно следующие

Код:
if ($sub==97){
$ignore_sub = 1;
$ignore_cc = 1;
$query_where = "Subdivision_ID=98 OR Subdivision_ID=99 OR Subdivision_ID=100";
}

Этот код означает, что в разделе с id 97 мы выводим все записи нашего компонента ($ignore_sub = 1; $ignore_cc = 1;), но так как нам нужно вывести только записи из подразделов этого раздела, добавляем условие выборки $query_where

Вы можете привязаться к id разделов ($sub) и к уровню вложенности ($parent_sub_tree, $sub_level_count) возможно можно использовать еще какието переменные.

id разделов вы можете получить sql запросом к базе данных (listQuery, $db->), табличке Subdivision в которой хранится карта сайта


вот подскажите, где это прописать? Где находятся эти самые "системные настройки компонента"?
16.04.2011, 19:43
Ответить | Цитировать
Гость
Гость

Поле "Системные настройки" на странице "Редактирование компонента" - самое последнее поле.

Андрей Малков, когда-то вот как советовал - рабочий вариант:
Вставьте этот код в системные настройки Вашего компонента (ничего не меняя)

Код:
// В главном разделе категории выведем все объекты из под категорий.
// Если мы находимся на 1-ом уровне вложенности навигации (сайт - раздел сайта 1-го уровня).
if ($sub_level_count == 1){
// посмотрим есть ли у раздела подразделы
if(($db->get_var("SELECT COUNT(*) as n FROM Subdivision WHERE Parent_Sub_ID=$sub AND Checked=1") >> 0)){
// получим id подразделов раздела в виде 34,35,36
$viborka = listQuery("SELECT Subdivision_ID FROM Subdivision WHERE Parent_Sub_ID=$sub AND Checked=1","\".(\$i == 0?\"$sub\": NULL ).\",\$data[Subdivision_ID]");
// игнорируем привязку записей в компоненте к разделу
$ignore_sub=1;
// и компоненту в разделе
$ignore_cc=1;
// условие вывода публикаций только из нужных нам подразделов
$query_where = "a.Subdivision_ID IN ($viborka)";
}
}
05.04.2012, 21:08
Ответить | Цитировать
Барабанщиков Денис Юрьевич

Зарегистрирован:
2011-10-05
Сообщений: 24

а как выводить названия разделов?
05.04.2012, 21:20
Ответить | Цитировать
Kirs
ООО "КИРАНА"

Зарегистрирован:
2007-02-01
Сообщений: 96

Денис, в переменную $viborka нужно получить значения полей Subdivision_Name
198 196 2012-04-05 21:20:24 10516
Описание проекта