1 garyss Mar 03, 2011 21:45
3 garyss Mar 08, 2011 16:27
По первому вопросу, не так я объяснил. Вопрос чисто технический. Можно ли в свой блог, не прибегая к каким-то кардинальным изменениям кода всего движка, а лишь используя самодельную тему, выводить блок (напр. контейнер 'Header') из блога другого пользователя? Желательно и в таком же виде как и в CSS темы блога этого пользователя. Если это технически реализуемо, то буду штудировать, как это сделать. Про _html_header.inc.php я понял, его конечно нужно задействовать, чтоб включить в своей теме JS. Так сказать не замена html_header, а сборка нужного со всех или определенных блогов. Таким образом можно реализовать большое разнообразие возможностей, для создания не только мультиблогового формата, но и хорошо оснащенных сайтов.
По второму вопросу (и первого касаемо), то все конечно наилучшим образом сделать плагином. Спасибо, Александр, за подсказку. Про плагины не подумал сразу. Но в написании плагинов для b2evo пока не силен. :oops: Мануала по физической модели нет на русском))) Модель стандарт MVC, но что откуда берется пока не въезжаю во все тонкости.
Вот код навигации , можно задействовать в _item.class.php стр. 1820 в b2evo 4.0.3
// Проверяем нужны ли страницы назад
if ($page != 1) $pervpage = '<a href="'.$url.'?page=1"><< '.T_('First').'</a> <a href="'.$url.'?page='.($page - 1).'"> < '.T_('Back').'</a>';
// Проверяем нужны ли страницы вперед
if ($page != $text) $nextpage = '<a href="'.$url.'?page='.($page + 1).'"> '.T_('Next').' > </a> <a href="'.$url.'?page='.$text.'">'.T_('Last').' >></a> ';
// Находим три ближайшие страницы с обоих краев, если они есть
if($page - 3 > 0) $page3left = '<a href="'.$url.'?page='.($page - 3).'">'.($page - 3).'</a>';
if($page - 2 > 0) $page2left = '<a href="'.$url.'?page='.($page - 2).'">'.($page - 2).'</a>';
if($page - 1 > 0) $page1left = '<a href="'.$url.'?page='.($page - 1).'">'.($page - 1).'</a>';
if($page + 3 <= $text) $page3right = '<a href="'.$url.'?page='.($page + 3).'">'.($page + 3).'</a>';
if($page + 2 <= $text) $page2right = '<a href="'.$url.'?page='.($page + 2).'">'.($page + 2).'</a>';
if($page + 1 <= $text) $page1right = '<a href="'.$url.'?page='.($page + 1).'">'.($page + 1).'</a>';
// навигация
echo $before;
echo $pervpage.' '.$page3left.' '.$page2left.' '.$page1left.' '.$page.' '.$page1right.' '.$page2right.' '.$page3right.' '.$nextpage;
echo $after;
+локализация и оформление в скине.
но грамотно сделать плагин, спрашивал об этом, как сделать чтобы была возможность задействовать отдельно. Просто туплю :D , еще раз спасибо, Александр (надеюсь на подсказку по контейнерам:oops: ). Буду писать и вникать в виджеты .
4 sam2kb Mar 08, 2011 20:41
За код спасибо.
Список всех plugin events можно найти тут /inc/plugins/model/_plugins_admin.class.php:90 и тут /inc/plugins/_plugin.class.php (весь файл)
Примеры плагинов /plugins/_test.plugin.php и skeleton.plugin.php
Контейнер выводится просто
$params = array(
'block_start' => '',
'block_end' => '',
);
$sco_name = NT_('Header');
// Change $Blog->ID to some blog ID
$EnabledWidgetCache = & get_EnabledWidgetCache();
$Widget_array = & $EnabledWidgetCache->get_by_coll_container( $Blog->ID, $sco_name );
if( !empty($Widget_array) )
{
foreach( $Widget_array as $ComponentWidget )
{ // Let the Widget display itself (with contextual params):
$ComponentWidget->display_with_cache( $params, array() );
}
}
5 garyss Mar 08, 2011 20:57
Спасибо! То что нужно :)
6 dertoi1 Apr 11, 2011 14:14
Спасибо. Мне тоже это информация стала отличным помощником
Если я правильно понял первый вопрос, то для изменения <head> и HTTP Headers то можно скопировать файл /skins/_html_header.inc.php в /skins/your-skin/_html_header.inc.php и изменять его.
Если улучшите ядро, пишите код сюда, я внесу изменения ;)
Все зависит от конкретных задач. В большинстве случаев достаточно сделать плагин в дополнение к скину. Или просто изменять глобальные переменные