Позолото 0 08/02/12 12:53 Здравствуйте, я хочу выводить блок на форуме только при определенном уровне вложенности, подскажите как мне это сделать?Например мир (1 ур.)-африка (2 ур.)-америка-евразия--европа (3 ур.)---германия (4 ур.)---дания--азияТак вот, блок необходимо отображать только в форумах уровня германии и дании (то есть только на 4 уровне вложенности) Поделиться сообщением Ссылка на сообщение
siv1987 2628 08/02/12 15:08 Используйте условие принадлежности к конкретному форуму. Уровень вложенности не знаю если можно определить. <if test="in_array( $this->request['f'], array(1,2,3) )"> <div>HTML блок для форумов с id 1,2 или 3</div> </if> 1,2,3 - ид нужных форумов. Поделиться сообщением Ссылка на сообщение
Позолото 0 08/03/12 08:34 Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет... Поделиться сообщением Ссылка на сообщение
muslimgauze 14 08/03/12 15:54 Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет... Речь о дополнительном информационном блоке с правой стороны? Поделиться сообщением Ссылка на сообщение
Ritsuka 540 08/04/12 12:16 У форумов нет такого понятия, как "глубина". Есть только непосредственная отсылка на вышестоящий форум. Следовательно: <php> $parent = $forum_data['parent_id']; $level = 0; while($parent > 0) { $level += 1; $_parent = $this->DB->buildAndFetch( array( 'select' => '*','from' => 'forums', 'where' => 'id = '.$parent )); $parent = !empty($_parent['parent_id']) ? $_parent['parent_id'] : 0; } </php> <if test="$level == 3"> Текущй форум на третьем уровне вложенности. </if> Для оптимизации скорости работы и снижения числа SQL-запросов хорошо бы подключиться к кэшу форумов и использовать его данные. Поделиться сообщением Ссылка на сообщение
wcp 0 09/22/12 12:30 <if test="$level == 3">так ведь вывод будет на всех форумах третьего уровня по всему форуму?А нужно в конкретном - "европа" и все что ниже: германия, дания и пр. (если применительно к ТС). Поделиться сообщением Ссылка на сообщение
newbie 1723 09/22/12 13:06 @wcp, Я Вам ссылку на конкретный пост давал, а Вы пошли дальше. Используйте ф-ю in_array.в globaltemplate в нужное место воткнуть<if test="adForum:|:$this->request['f']==ID">контент-блока</if> Воткните так: <if test="in_array( $this->request['f'], array(1,2,3) )"> <div>HTML блок для форумов с id 1,2 или 3</div> </if> П.С. Писать, думаю, стоило в своей теме. Поделиться сообщением Ссылка на сообщение
wcp 0 09/22/12 13:41 В посте #4 как раз об этом и сказано: никогда не знаешь, сколько уровней будет завтра, что ж каждый раз ID-шники руками прописывать? Поделиться сообщением Ссылка на сообщение
Ritsuka 540 09/22/12 19:13 что ж каждый раз ID-шники руками прописывать? Лень - безусловно, двигатель прогресса. Напишите/закажите хук, что будет выводить рекламу с учетом текущего форума и/или его родителей. Поделиться сообщением Ссылка на сообщение