Опубликовано: 2 августа 201213 г Здравствуйте, я хочу выводить блок на форуме только при определенном уровне вложенности, подскажите как мне это сделать?Например мир (1 ур.)-африка (2 ур.)-америка-евразия--европа (3 ур.)---германия (4 ур.)---дания--азияТак вот, блок необходимо отображать только в форумах уровня германии и дании (то есть только на 4 уровне вложенности)
Опубликовано: 2 августа 201213 г Используйте условие принадлежности к конкретному форуму. Уровень вложенности не знаю если можно определить. <if test="in_array( $this->request['f'], array(1,2,3) )"> <div>HTML блок для форумов с id 1,2 или 3</div> </if> 1,2,3 - ид нужных форумов.
Опубликовано: 3 августа 201213 г Автор Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет...
Опубликовано: 3 августа 201213 г Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет... Речь о дополнительном информационном блоке с правой стороны?
Опубликовано: 4 августа 201213 г У форумов нет такого понятия, как "глубина". Есть только непосредственная отсылка на вышестоящий форум. Следовательно: <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-запросов хорошо бы подключиться к кэшу форумов и использовать его данные.
Опубликовано: 22 сентября 201213 г <if test="$level == 3">так ведь вывод будет на всех форумах третьего уровня по всему форуму?А нужно в конкретном - "европа" и все что ниже: германия, дания и пр. (если применительно к ТС).
Опубликовано: 22 сентября 201213 г @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> П.С. Писать, думаю, стоило в своей теме.
Опубликовано: 22 сентября 201213 г В посте #4 как раз об этом и сказано: никогда не знаешь, сколько уровней будет завтра, что ж каждый раз ID-шники руками прописывать?
Опубликовано: 22 сентября 201213 г что ж каждый раз ID-шники руками прописывать? Лень - безусловно, двигатель прогресса. Напишите/закажите хук, что будет выводить рекламу с учетом текущего форума и/или его родителей.
Здравствуйте, я хочу выводить блок на форуме только при определенном уровне вложенности, подскажите как мне это сделать?
Например
мир (1 ур.)
-африка (2 ур.)
-америка
-евразия
--европа (3 ур.)
---германия (4 ур.)
---дания
--азия
Так вот, блок необходимо отображать только в форумах уровня германии и дании (то есть только на 4 уровне вложенности)