Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Позолото

[3.3.] Вложеность форума

Рекомендованные сообщения

Здравствуйте, я хочу выводить блок на форуме только при определенном уровне вложенности, подскажите как мне это сделать?

Например

мир (1 ур.)

-африка (2 ур.)

-америка

-евразия

--европа (3 ур.)

---германия (4 ур.)

---дания

--азия

Так вот, блок необходимо отображать только в форумах уровня германии и дании (то есть только на 4 уровне вложенности)

Поделиться сообщением


Ссылка на сообщение

Используйте условие принадлежности к конкретному форуму. Уровень вложенности не знаю если можно определить.

 

<if test="in_array( $this->request['f'], array(1,2,3) )">
<div>HTML блок для форумов с id 1,2 или 3</div>
</if>

 

1,2,3 - ид нужных форумов.

Поделиться сообщением


Ссылка на сообщение

Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет...

Поделиться сообщением


Ссылка на сообщение

Просто у меня больше 1000 форумов, в массиве не очень удобно работать будет...

 

Речь о дополнительном информационном блоке с правой стороны?

Поделиться сообщением


Ссылка на сообщение

У форумов нет такого понятия, как "глубина". Есть только непосредственная отсылка на вышестоящий форум. Следовательно:

 

<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-запросов хорошо бы подключиться к кэшу форумов и использовать его данные.

Поделиться сообщением


Ссылка на сообщение

<if test="$level == 3">

так ведь вывод будет на всех форумах третьего уровня по всему форуму?

А нужно в конкретном - "европа" и все что ниже: германия, дания и пр. (если применительно к ТС).

Поделиться сообщением


Ссылка на сообщение

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

 

П.С. Писать, думаю, стоило в своей теме.

Поделиться сообщением


Ссылка на сообщение

В посте #4 как раз об этом и сказано: никогда не знаешь, сколько уровней будет завтра, что ж каждый раз ID-шники руками прописывать?

Поделиться сообщением


Ссылка на сообщение
что ж каждый раз ID-шники руками прописывать?

Лень - безусловно, двигатель прогресса. Напишите/закажите хук, что будет выводить рекламу с учетом текущего форума и/или его родителей.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...