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

ID родительского раздела в компоненте

Новый топик
25.03.2013, 14:20
Ответить | Цитировать
viros
Правдин Виталий

Зарегистрирован:
2008-12-03
Сообщений: 120

Всем привет.

Подскажите кто-нибудь, можно как-то получить ID родительского раздела от корня в компоненте. Так это можно сделать к примеру в макете дизайна, с помощью функции $parent_sub_tree.
В таком виде в компоненте не работает
Код:
$parent_sub_tree[$sub_level_count-2][Subdivision_Name]

Как это можно еще сделать!?
25.03.2013, 21:45
Ответить | Цитировать
DiGGy
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
Сообщений: 120

Спасибо за ответ.
Да в этой таблице можно получить ближайшего родителя, т.е. раздел уровнем выше. здесь именно необходимость узнать родителя на 3 или 4 уровня выше. Т.е. нужно будет пробежаться по этой таблице.
26.03.2013, 13:53
Ответить | Цитировать
viros
Правдин Виталий

Зарегистрирован:
2008-12-03
Сообщений: 120

Сделал так, так как нужно было проверить содержимое разделов в конкретном родителе, а у них там вложенность не меньше 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
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
Панасин Александр
Nexwich

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

Добавлю свой вариант не как решение, а как вариант.
И не клюйти меня.

Создать шаблон вывода навигации в настройках компонента

$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. Источник этого варианта Я

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
19.04.2013, 15:20
Ответить | Цитировать
viros
Правдин Виталий

Зарегистрирован:
2008-12-03
Сообщений: 120

Цитата:
И можно использовать s_browse_level(0,$browse_sub)

Как вариант!))
Встречный вопрос, функция s_browse_level не работает вродь как в компоненте, как можно тогда ее использовать!?
Спрашиваю только потому, что сейчас уперся в такой случай, что нужно вывести навигацию по разделам в префиксе компонента...
29.04.2013, 16:43
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

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

$browse_sub['prefix'] = "";
$browse_sub['unactive'] = "";
$browse_sub['active'] = "%SUB";
$browse_sub['active_link'] = $browse_sub['active'];
$browse_sub['suffix'] = "";

Вставляете это в настройки компонента и все начинает работать. Я ведь это все описал выше. И ваша тема называется для компонета

Я не с коленки все это пишу а потому что использовал сам. Так что если я где то еще что то опишу то знайте это полностью рабочии варианты

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
29.04.2013, 19:25
Ответить | Цитировать
viros
Правдин Виталий

Зарегистрирован:
2008-12-03
Сообщений: 120

Да,да все прекрасно работает! Воспользовался Вашим вариантом в итоге и не только для описанной выше задачи))Большое спасибо за помощь!
198 196 2013-04-29 19:25:56 12969
Описание проекта