Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Позолото

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

Recommended Posts

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

Например

мир (1 ур.)

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

-америка

-евразия

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

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

---дания

--азия

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
что ж каждый раз ID-шники руками прописывать?

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...