|
|
25.03.2013, 14:20
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Всем привет.
Подскажите кто-нибудь, можно как-то получить ID родительского раздела от корня в компоненте. Так это можно сделать к примеру в макете дизайна, с помощью функции $parent_sub_tree.
В таком виде в компоненте не работает
Код:$parent_sub_tree[$sub_level_count-2][Subdivision_Name]
Как это можно еще сделать!?
|
|
|
25.03.2013, 21:45
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
ну как-как, через sql-запрос:
Цитата:$db->get_var("select `Parent_Sub_ID` from `Subdivision` where `Subdivision_ID`=".$sub);
Temet nosce...
|
|
|
26.03.2013, 11:16
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Спасибо за ответ.
Да в этой таблице можно получить ближайшего родителя, т.е. раздел уровнем выше. здесь именно необходимость узнать родителя на 3 или 4 уровня выше. Т.е. нужно будет пробежаться по этой таблице.
|
|
|
26.03.2013, 13:53
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Сделал так, так как нужно было проверить содержимое разделов в конкретном родителе, а у них там вложенность не меньше 3х.
Цитата: $parentid = $db->get_var("SELECT Parent_Sub_ID FROM Subdivision WHERE Subdivision_ID ='".$sub."' ");
$i=0;
while ($i <= 4) {
if ($parentid !=140){
$parentid = $db->get_var("SELECT Parent_Sub_ID FROM Subdivision WHERE Subdivision_ID ='".$parentid."' ");
}
$i++;
}
Думал можно будет проще, одной строчкой обойтись, как в макете дизайна.
|
|
|
27.03.2013, 21:36
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Цитата:здесь именно необходимость узнать родителя на 3 или 4 уровня выше
Вы задачу ставьте сразу полностью. Вы ж не барышня, чтоб вам 100 наводящих вопросов задавать )))
Задача на 2 и более уровней решается просто тупо созданием рекурсивной функции. Почитайте мат. часть.
Приведу пример обратной функции - получение списка ИД через запятую всех вложенных подразделов у текущего раздела:
Цитата:
function SubdivisionChildsGet($subdivision_id) {
global $db;
$ids = "";
$childs = "";
$query = "select Subdivision_ID from Subdivision where Parent_Sub_ID='{$subdivision_id}'";
$res = $db->get_col($query);
foreach ((array)$res as $id) {
// получаем вложенные подразделы по рекурсии
$childs = SubdivisionChildsGet((int)$id);
$ids .= ($ids?",":"").$id.($childs?",":"").$childs;
}
return $ids;
}
// вызов ф-ии
$sub_list = SubdivisionChildsGet($sub);
Вам нужно переписать по принципу "от обратного". В функцию будете передавать ИД раздела, а в итоге получите массив. Либо передавайте ИД раздела и номер уровня, ИД раздела которого надо получить, в итоге ф-ия вернет число.
Temet nosce...
|
|
|
09.04.2013, 16:15
|
|
Nexwich
Панасин Александр

Зарегистрирован: 2011-04-05
Сообщений: 1037
|
Добавлю свой вариант не как решение, а как вариант.
И не клюйти меня.
Создать шаблон вывода навигации в настройках компонента
$browse_sub['prefix'] = "";
$browse_sub['unactive'] = "";
$browse_sub['active'] = "%SUB";
$browse_sub['active_link'] = $browse_sub['active'];
$browse_sub['suffix'] = "";
И можно использовать s_browse_level(0,$browse_sub)
где 0 текущий уровень раздела с которого нужно получить id или другую какую-нибудь информацию
PS: API системы и не какого PHP. Источник этого варианта Я
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
19.04.2013, 15:20
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Цитата:И можно использовать s_browse_level(0,$browse_sub)
Как вариант!))
Встречный вопрос, функция s_browse_level не работает вродь как в компоненте, как можно тогда ее использовать!?
Спрашиваю только потому, что сейчас уперся в такой случай, что нужно вывести навигацию по разделам в префиксе компонента...
|
|
|
29.04.2013, 16:43
|
|
Nexwich
Панасин Александр

Зарегистрирован: 2011-04-05
Сообщений: 1037
|
$browse_sub['prefix'] = "";
$browse_sub['unactive'] = "";
$browse_sub['active'] = "%SUB";
$browse_sub['active_link'] = $browse_sub['active'];
$browse_sub['suffix'] = "";
Вставляете это в настройки компонента и все начинает работать. Я ведь это все описал выше. И ваша тема называется для компонета
Я не с коленки все это пишу а потому что использовал сам. Так что если я где то еще что то опишу то знайте это полностью рабочии варианты
Модуль "Почтовые уведомления" – настройка email уведомлений на вашем сайте без программирования. Бесплатно. http://netcat.ru/products/CatStore/solution_242.html
|
|
|
29.04.2013, 19:25
|
|
viros
Правдин Виталий
Зарегистрирован: 2008-12-03
Сообщений: 126
|
Да,да все прекрасно работает! Воспользовался Вашим вариантом в итоге и не только для описанной выше задачи))Большое спасибо за помощь!
|