Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.