|
|
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
|