Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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

  • 1 месяц спустя...

<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-шники руками прописывать?

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

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.