Перейти к контенту

Возможно в IPDL добавить блоки из iBFPortal4.0?


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

Во-первых там центральная часть портала работает по другому принципу - там отображаются последнее энное кол-ко тем, которые были обновлены, там есть топ-постеров, там лругая статистика, календарь....ты просто так спросил?
Ссылка на комментарий
Поделиться на других сайтах

Ну так это можно организовать, вставив необходимые функции из Portal.php в csite.php, также из skin_portal.php в skin_csite.php! И добавив пару настроек аналогично! Это ведь не очень сложно!
Ссылка на комментарий
Поделиться на других сайтах

ОК. Покажу тут, когда время будет для одной функции, и что и куда я вставлял. Остальное я думаю по аналогии можно будет забабахать :D
Ссылка на комментарий
Поделиться на других сайтах

Как перенести функцию из IBF Portal 4.0 в IPDynamicLite?

1. Заходим в Skin/../skin_portal.php

Находим function render_portal

Это основной шаблон всего. Выбираем то, что нужно. Например, {$data['top_forums']}

2. Заходим в Portal.php от IBF Portal 4.0

Там находим эту переменную (в начале файла где перечисляется список функций) $this->data['top_forums']

Ей соответствует функция - do_top_forums()

Ищем ее ниже в файле!

 

Полностью копируем ее:

function do_top_forums() {
           global $DB, $ibforums, $std;

           if ($ibforums->vars['portal_top_forums'])
           {
           if ($ibforums->vars['portal_num_top_forums'])
              $number_of_forums = $ibforums->vars['portal_num_top_forums'];
           else
              $number_of_forums = 5;            

           // Get User Data
           $query = $DB->query( "SELECT f.* FROM ibf_forums AS f WHERE f.read_perms = '*' OR f.read_perms LIKE '".$ibforums->member['mgroup']."' OR f.read_perms LIKE '%,".$ibforums->member['mgroup']."' OR f.read_perms LIKE '".$ibforums->member['mgroup'].",%' OR f.read_perms LIKE '%,".$ibforums->member['mgroup'].",%' ORDER BY (topics+posts) DESC LIMIT 0,".$number_of_forums );

           $rating = 0;
               while( $row = $DB->fetch_row($query) ) {
                   $rating++;
                   $data.= $this->html->top_forums_row($row+array("rating"=>$rating));
               }

               return $this->html->top_forums($data);
           }
       else
       {
           return '';
       }        
   }

 

Копируем и вставляем аналогично в sources/dynamiclite/csite.php

Смотрим в этой функции обращения к шаблонам. Он начинаются записью $this->html. В нашем примере таких функций шаблонов 2:

top_forums_row и top_forums.

Ищем их в skin_portal.php

и копируем аналогично в skin_csite.php

 

Теперь в основной шаблон в IPDynamicLite надо вставить, чтобы вставлялась наша функция, для этого в sources/dynamiclite/csite.php среди этих строк (перечисляющих функции):

$this->site_bits['welcomebox']     = $this->_show_welcomebox();
   	$this->site_bits['search']         = $this->_show_search();
   	$this->site_bits['changeskin']     = $this->_show_changeskin();
   	$this->site_bits['sitenav']        = $this->_show_sitenav();
   	$this->site_bits['onlineusers']    = $this->_show_onlineusers();
   	$this->site_bits['poll']           = $this->_show_poll();
   	$this->site_bits['latestposts']    = $this->_show_latestposts();
   	$this->site_bits['recentarticles'] = $this->_show_recentarticles();
   	$this->site_bits['articles']       = $this->_show_articles();
   	$this->site_bits['affiliates']     = $this->_show_affiliates();

Придумываем название нашей (слева)и вставляем в этот список. Справа мы берем имя то функции, которую вставляли. Получилось примерно так:

$this->site_bits['welcomebox']     = $this->_show_welcomebox();
   	$this->site_bits['search']         = $this->_show_search();
   	$this->site_bits['changeskin']     = $this->_show_changeskin();
   	$this->site_bits['sitenav']        = $this->_show_sitenav();
   	$this->site_bits['onlineusers']    = $this->_show_onlineusers();
   	$this->site_bits['poll']           = $this->_show_poll();
   	$this->site_bits['latestposts']    = $this->_show_latestposts();
   	$this->site_bits['recentarticles'] = $this->_show_recentarticles();
   	$this->site_bits['articles']       = $this->_show_articles();
   	$this->site_bits['affiliates']     = $this->_show_affiliates();
$this->site_bits['topforums']     = $this->do_top_forums();

 

Теперь в основной шаблон в файле skin_csite.php (этим является function csite_skeleton_template)

вставляем туда, куда надо вставить наш вывод следующее:

<!--CS.TEMPLATE.ЗДЕСЬ_ИМЯ_ПЕРЕМЕННОЙ_КОТОРАЯ_ИДЕТ_СЛЕВА В СПИСКЕ НИЖЕ->

 

У нас получается это - <!--CS.TEMPLATE.TOPFORUMS-->

 

Так как почти все функции вывода в IBf Portal зависят от значений в файле конфигурации (conf_global.php), они же меняются через AdminCP в настройках портала!

Т.к. в IPDynamicLite таких значений вам придется вручную разрешить использование нашей функции, добавив необходимый параметр со значением в conf_global.php

Смотрим на ту функцию do_top_forums, которую мы добавили в файл csite.php. Сразу видно, что проверка идет на переменные: portal_top_forums и portal_num_top_forums!

Также отсюда понятно, что если в cong_global.php мы не зададим количество вывода - portal_num_top_forums, то он по умолчанию равен 5! Значит мы не будем вдаваться в подробности и добавим в conf_global.php только такую строку:

$INFO['portal_top_forums'] = '1';

 

Тем самым включив эту нашу функцию. Ну а уж лэнги поправить и шаблоны это не мое дело, а ваше!

 

Вопросы сюда же :D

 

 

Добавлено:

Как перенести функцию из IBF Portal 4.0 в IPDynamicLite?

1. Заходим в Skin/../skin_portal.php

Находим function render_portal

Это основной шаблон всего. Выбираем то, что нужно. Например, {$data['top_forums']}

2. Заходим в Portal.php от IBF Portal 4.0

Там находим эту переменную (в начале файла где перечисляется список функций) $this->data['top_forums']

Ей соответствует функция - do_top_forums()

Ищем ее ниже в файле!

 

Полностью копируем ее:

function do_top_forums() {
           global $DB, $ibforums, $std;

           if ($ibforums->vars['portal_top_forums'])
           {
           if ($ibforums->vars['portal_num_top_forums'])
              $number_of_forums = $ibforums->vars['portal_num_top_forums'];
           else
              $number_of_forums = 5;            

           // Get User Data
           $query = $DB->query( "SELECT f.* FROM ibf_forums AS f WHERE f.read_perms = '*' OR f.read_perms LIKE '".$ibforums->member['mgroup']."' OR f.read_perms LIKE '%,".$ibforums->member['mgroup']."' OR f.read_perms LIKE '".$ibforums->member['mgroup'].",%' OR f.read_perms LIKE '%,".$ibforums->member['mgroup'].",%' ORDER BY (topics+posts) DESC LIMIT 0,".$number_of_forums );

           $rating = 0;
               while( $row = $DB->fetch_row($query) ) {
                   $rating++;
                   $data.= $this->html->top_forums_row($row+array("rating"=>$rating));
               }

               return $this->html->top_forums($data);
           }
       else
       {
           return '';
       }        
   }

 

Копируем и вставляем аналогично в sources/dynamiclite/csite.php

Смотрим в этой функции обращения к шаблонам. Он начинаются записью $this->html. В нашем примере таких функций шаблонов 2:

top_forums_row и top_forums.

Ищем их в skin_portal.php

и копируем аналогично в skin_csite.php

 

Теперь в основной шаблон в IPDynamicLite надо вставить, чтобы вставлялась наша функция, для этого в sources/dynamiclite/csite.php среди этих строк (перечисляющих функции):

$this->site_bits['welcomebox']     = $this->_show_welcomebox();
   	$this->site_bits['search']         = $this->_show_search();
   	$this->site_bits['changeskin']     = $this->_show_changeskin();
   	$this->site_bits['sitenav']        = $this->_show_sitenav();
   	$this->site_bits['onlineusers']    = $this->_show_onlineusers();
   	$this->site_bits['poll']           = $this->_show_poll();
   	$this->site_bits['latestposts']    = $this->_show_latestposts();
   	$this->site_bits['recentarticles'] = $this->_show_recentarticles();
   	$this->site_bits['articles']       = $this->_show_articles();
   	$this->site_bits['affiliates']     = $this->_show_affiliates();

Придумываем название нашей (слева)и вставляем в этот список. Справа мы берем имя то функции, которую вставляли. Получилось примерно так:

$this->site_bits['welcomebox']     = $this->_show_welcomebox();
   	$this->site_bits['search']         = $this->_show_search();
   	$this->site_bits['changeskin']     = $this->_show_changeskin();
   	$this->site_bits['sitenav']        = $this->_show_sitenav();
   	$this->site_bits['onlineusers']    = $this->_show_onlineusers();
   	$this->site_bits['poll']           = $this->_show_poll();
   	$this->site_bits['latestposts']    = $this->_show_latestposts();
   	$this->site_bits['recentarticles'] = $this->_show_recentarticles();
   	$this->site_bits['articles']       = $this->_show_articles();
   	$this->site_bits['affiliates']     = $this->_show_affiliates();
$this->site_bits['topforums']     = $this->do_top_forums();

 

Теперь в основной шаблон в файле skin_csite.php (этим является function csite_skeleton_template)

вставляем туда, куда надо вставить наш вывод следующее:

<!--CS.TEMPLATE.ЗДЕСЬ_ИМЯ_ПЕРЕМЕННОЙ_КОТОРАЯ_ИДЕТ_СЛЕВА В СПИСКЕ НИЖЕ->

 

У нас получается это - <!--CS.TEMPLATE.TOPFORUMS-->

 

Так как почти все функции вывода в IBf Portal зависят от значений в файле конфигурации (conf_global.php), они же меняются через AdminCP в настройках портала!

Т.к. в IPDynamicLite таких значений вам придется вручную разрешить использование нашей функции, добавив необходимый параметр со значением в conf_global.php

Смотрим на ту функцию do_top_forums, которую мы добавили в файл csite.php. Сразу видно, что проверка идет на переменные: portal_top_forums и portal_num_top_forums!

Также отсюда понятно, что если в cong_global.php мы не зададим количество вывода - portal_num_top_forums, то он по умолчанию равен 5! Значит мы не будем вдаваться в подробности и добавим в conf_global.php только такую строку:

$INFO['portal_top_forums'] = '1';

 

Тем самым включив эту нашу функцию. Ну а уж лэнги поправить и шаблоны это не мое дело, а ваше!

 

Вопросы сюда же ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Огромное спасибо, но у меня неборльшая проблема, вообще-то их 2:

во-первых, новый блок у меня без заголовка, как его добавить?

во-вторых, новый блок у меня "приклеивается" к верхнему блоку - почему? как его сделать отдельным? только когда я <!--CS.TEMPLATE.TOPFORUMS--> ставлю в самый верх над остальными блоками - тогда он весит отдельно, но он мне не очень нравится "торчащим" над всеми остальными, ещё раз повотряю - ОГРОМНОЕ СПАСИБО, благодаря тебе я свой портал сделаю ядерным :D

Ссылка на комментарий
Поделиться на других сайтах

-первых, новый блок у меня без заголовка, как его добавить

что ты понимаешь под заголовком? Приведи пример пожалуйста!

вторых, новый блок у меня "приклеивается" к верхнему блоку - почему? как его сделать отдельным? только когда я <!--CS.TEMPLATE.TOPFORUMS--> ставлю в самый верх над остальными блоками - тогда он весит отдельно, но он мне не очень нравится "торчащим" над всеми остальным

 

Скриншотики хорошо бы увидеть, чтобы понять, что там с чем склеивается!

Ссылка на комментарий
Поделиться на других сайтах

Спасибо за помощь, но я предпочёл установить iBFPortal-v4-0, он меня больше устраивает чем IPDL, я просто хотел как бы объединить их, но слишком это муторно :D Спасибо!
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.