[IPB 3.1.4] Добавляем возможность указания баннера для каждого форума в отдельности - Дизайн и модификация Invision Power Board

Перейти к содержимому

 
***** 2 голосов
Главный админ портала захотел определять рекламный блок в шапке для каждого подфорума в отдельности, а не только глобальный. Немного полазив по исходникам IPB 3.1.4 было решено сделать такую возможность. На всю реализацию затеи ушло 1,5 часа (вместе с проверкой).

Для начала полазил по Админской Панели и нашёл место, в котором указываются стандартные рекламные блоки:
-IMG-

Выяснил, что код рекламных блоков хранится в таблице core_sys_conf_settings. За рекламные блоки в шапке отвечают следующие записи: ad_code_global_header , ad_code_board_index_header , ad_code_forum_view_header. Именно параметр ad_code_forum_view_header отвечает за отрисовку баннера в форумах.

Руководство к действию.

Через phpMyAdmin добавляем в таблицу forums новое поле banner (тип TEXT, сравнение utf8_general_ci):
-IMG-
Проверьте, что данное поле появилось.

Открываем на редактирование файл /admin/applications/forums/modules_admin/forums/forums.php и ищем следующий код:
'description'				=> '',
'status'					=> 0,

который заменяем на такой кодес:
'description'				=> '',
'banner'				=> '',
'status'					=> 0,


Чуть ниже находим кодес такого содержания:
'description'				=> '',
'status'					=> 1,

который заменяем на такой кодес:
'description'				=> '',
'banner'				=> '',
'status'					=> 1,


Ещё ниже находм следующий участок:
$form['sub_can_post'] = $this->registry->output->formYesNo(  'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] )         ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) );

и заменяем его на:
$form['sub_can_post'] = $this->registry->output->formYesNo(  'sub_can_post', ( isset($_POST['sub_can_post']) AND $_POST['sub_can_post'] )         ? $_POST['sub_can_post'] : ( $forum['sub_can_post'] == 1 ? 0 : 1 ) );
$form['banner']       = $this->registry->output->formTextarea("banner"      , IPSText::br2nl( ( isset( $_POST['banner']) AND $_POST['banner'] ) ? $_POST['banner'] : $forum['banner'] ) , 120, 5 );

Как раз тут указываются размеры поля ввода кода рекламного баннера в шапке (ширина: 120, высота: 5).

Далее находим кодес:
'description'             => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['description'] ) ) ),
'use_ibc'                 => intval($this->request['use_ibc']),

который меняем на такой:
'description'             => IPSText::getTextClass('bbcode')->xssHtmlClean( nl2br( IPSText::stripslashes( $_POST['description'] ) ) ),
'banner'                  => nl2br( IPSText::stripslashes($_POST['banner']) ),
'use_ibc'                 => intval($this->request['use_ibc']),


Сохраняем файл /admin/applications/forums/modules_admin/forums/forums.php и копируем его на WEB-сервер.


Открываем на редактирование файл /admin/applications/forums/modules_public/forums/forums.php и ищем следующий код:
    /* Set Ad code for the board index */
    if( $this->registry->getClass('IPSAdCode')->userCanViewAds() )
    {
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'header', 'ad_code_forum_view_header' );
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' );
    }

заменяем его на ткой кодес:
    /* Set Ad code for the board index */
    if( $this->registry->getClass('IPSAdCode')->userCanViewAds() )
    {
      if ($this->forum['parent_id'] == 'root') {
        // category
        $fbanner = $this->DB->buildAndFetch( array( 'select' => 'banner', 'from' => 'forums', 'where' => "id=".$this->forum['id']) );
        if ($fbanner['banner']) $this->forum['banner'] = $fbanner['banner'];
      }
      if (strlen($this->forum['banner']) > 3) {
        $this->registry->getClass('IPSAdCode')->headerCode = $this->forum['banner'];
      } else {  
        $this->registry->getClass('IPSAdCode')->headerCode = $this->settings['ad_code_forum_view_header'];
      }
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' );
    }


Сохраняем файл /admin/applications/forums/modules_public/forums/forums.php и копируем его на WEB-сервер.


Открываем на редактирование файл /admin/applications/forums/modules_public/forums/topics.php и ищем следующий код:
    /* Set Ad code for the board index */
    if( $this->registry->getClass('IPSAdCode')->userCanViewAds() )
    {
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'header', 'ad_code_forum_view_header' );
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_forum_view_footer' );
    }

и заменяем его на такой кодес:
    /* Set Ad code for the board index */
    if( $this->registry->getClass('IPSAdCode')->userCanViewAds() )
    {
      if (strlen($this->forum['banner']) > 3) {
        $this->registry->getClass('IPSAdCode')->headerCode = $this->forum['banner'];
      } else {  
        $this->registry->getClass('IPSAdCode')->headerCode = $this->settings['ad_code_topic_view_header'];
      }      
      $this->registry->getClass('IPSAdCode')->setGlobalCode( 'footer', 'ad_code_topic_view_footer' );
    }


Сохраняем файл topics.php и копируем его на WEB-сервер.


Открываем на редактирование файл /admin/applications/forums/skin_cp/cp_skin_forums.php и ищем следующую строчку:
<li><label class='head'>{$this->lang->words['frm_f_basic']}</label></li>

Перед этой строкой нужно вставить следующие строчки:
<li><label class='head'>Header Banner</label></li>
<li>
  {$form['banner']}
</li>


Сохраняем файл cp_skin_forums.php и копируем его на WEB-сервер.

Все изменения внесены. Кеш обновлять не нужно.

В админке теперь видим новое поле для ввода (настройки конкретно форума):
-IMG-

В настройках категории новое поле тоже есть:
-IMG-
3
Это нравится Алексей и metos

0 комментариев

Обратные ссылки на эту запись [ URL для обратной ссылки ]

Нет обратных ссылок на эту запись

Случайное изображение

nouvivt.ru

0 посетителей

0 гостей
0 пользователей
0 скрытых

Теги

    Категории

    Последние посетители

    • Турин  »
      04 Ноя 2017 - 04:21
    • Estomel  »
      01 Ноя 2017 - 18:00
    • vitfix  »
      26 Авг 2017 - 21:11
    • Strategius  »
      22 Фев 2017 - 12:51
    • siv1987  »
      20 Авг 2016 - 15:09
    • ovi8  »
      12 Авг 2016 - 23:54
    • danzo  »
      21 Окт 2015 - 11:37
    • nervud  »
      27 Июл 2015 - 18:07
    • Mac  »
      05 Май 2015 - 17:02
    • FOMEN  »
      02 Мар 2015 - 12:51
    • tolik777  »
      15 Фев 2015 - 14:44
    • NoName  »
      11 Янв 2015 - 14:47
    • verbatim1  »
      07 Дек 2014 - 16:10
    • Zero108  »
      10 Сен 2014 - 11:06
    • 6letpwnz  »
      16 Авг 2014 - 23:00

    MyBlogLog

    Twitter


    Контактная информация

    Вопросы по работе сайта

    +7 (917) 501-4765
    C 10 до 20 в рабочие дни (время московское)

    Техническая поддержка

    Контактные данные специалистов

    Дизайн форумов

    IPB 3.x ¦ IPB 2.x

    Бесплатные шаблоны

    IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
    Лицензия на использование ¦ Ваша поддержка ¦ О проекте
    Copyright © 2005-2017 IPBSkins.ru Team
    При копировании материалов с сайта
    прямая ссылка на источник обязательна