Вы не зашли.
[font=verdana]Новая версия плагина поддерживает интеграцию с другими новостыми плагинами.
А именно - теперь вы можете в шаблоне entries.tpl использовать переменные созданные, к примеру, плагином xfields.
[/font]
Почти все из вас знакомы с плагином lastnews, который отображает на сайте в отдельном боковом меню список последних новостей сайта. Но мало кто знает, что основные возможности плагина можно раскрыть только если настройку проводить в самом коде.
Эта небольшая статья предназначена для тех, кто хочет выводить несколько блоков последних новостей, хочет выводить их из заданных категорий или использовать другой порядок следования.
Детальное описание есть в документации по плагину, но самое важное я продублирую тут.
=====
За вывод всех информационных блоков в файле lastnews.php отвечает следующая функция:
function plugin_lastnews();
При этом фактической подготовкой занимается функция ( plugin_lastnews() просто вызывает
её):
$template['vars']['plugin_lastnews'] = plugin_lastnewsGenerator('', array(), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength')));
Вкратце остановимся на не очень знакомом куске кода: $template['vars']['plugin_lastnews'] - он говорит, что в основном шаблоне (main.tpl) будет создана переменная plugin_lastnews (при этом данная переменная будет отображаться в шаблоне только в том случае, если плагин lastnews включен).
Для создания дополнительных блоков вам необходимо использовать переменные вида plugin_lastnew_ДОПОЛНЕНИЕ, в качестве ДОПОЛНЕНИЕ лучше всего использовать цифры. Т.е. plugin_lastnews_1, plugin_lastnews_2,...
Данная функция принимает следующие параметры:
$orderBy - порядок сортировки новостей в БД (напрямую передаётся в SQL запросе).
Используйте с осторожностью, т.е. неправильное указание вызовет ошибку исполнения.
$categories - массив со списком ID категорий, из которых выводить новости. Если не заполнен,
то выводится информация по всем категориям.
Правила заполнения:
* каждый элемент может содержать как цифру так и массив.
* отображаются новости, которые находятся в любом из указанных в массиве элементов
* если элемент является массивом, то он должен содержать список категорий в которых
новость должна быть одновременно.
Пример:
array (1, 3, array(7,8), array(15,23,33), 48) означает:
Выводить все новости, которые находятся в:
. категории 1 ИЛИ
. категории 3 ИЛИ
. одновременно в категориях 7 и 8 ИЛИ
. одновременно в категориях 15, 23 и 33 ИЛИ
. категории 48
Создаём дополнительный блок lastnews, выводимый в переменную plugin_lastnews_2 (которая будет доступна в шаблоне в виде {plugin_lastnews_2} по указанным выше параметрам и задавая максимальное кол-во новостей для отображения равное 7:
$template['vars']['plugin_lastnews_2'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1, 3, array(7,8), array(15,23,33), 48), $overrideParams = array('number' => 7));
$overrideParams - конфигурационный ассоциативный массив со следующими параметрами:
* number - кол-во новостей для отображения
* offset - номер (по порядку) с которого начинать показ
* dateformat - формат даты, описание см. в конфигураторе
* maxlength - обрезание макс. длины названия новости
* overrideTemplatePath - путь, в котором хранятся шаблоны lastnews.tpl/entries.tpl для данного
блока.
При задании этой переменной вы можете использовать встроенную константы:
> tpl_site - указывает путь к текущему шаблону сайта (с '/' в конце)
пример: tpl_site . 'plugins/lastnews/skin1'
> root - указывает путь к каталогу /engine (без '/' в конце)
пример: root . '/plugins/lastnews/tpl/skins/skin1'
Все параметры конфигурационного массива не являются обязательными и имеют свои значения
по умолчанию.
Не в сети
RocketBoy, примеры же есть (см. последние ~10 строк).
Или тебе полностью строку запуска плагина?
Держи:
$template['vars']['plugin_lastnews_2'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1, 3, array(7,8), array(15,23,33), 48), $overrideParams = array('number' => 7, 'overrideTemplatePath' => tpl_path . 'plugins/lastnews/skin1'));
Не в сети
Нашел решение
$tvars['vars'] = array(
'link' => GetLink('full', $row),
'views' => $row['views']
);
заменил на
list ($short, $full) = explode('<!--more-->', $row['content'], 2);
$tvars['vars'] = array(
'link' => GetLink('full', $row),
'views' => $row['views'],
'content' => $short
);
Не в сети
sparco, учти, что в твоём варианте не будут отрабатывать плагины (финансовый и аналогичные), BB коды и тег [hide]. Если это приемлимо, то вариант подходящий.
Не в сети
Попробуй добавить их обработку, посмотри код в других плагинах, как там производится работа с ними и делай.
Изменено oktano (2009-01-08 17:29:40)
Обзор модулей IPB v2.3.
Русская локализация форума FluxBB.
Не в сети
По просьбе sparco, добавил в плагин возможно указывать расположение:
Нигде - не отображать нигде
Морда - только на головной странице
!Морда - везде кроме главной
Везде - на всех страницах
Изменено ROZARD (2009-01-16 23:49:50)
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
Не в сети
была фраза "А уже в lastnews - выводить поля из xfields'а."
где прочитать? может кто опишет как это сделать?
Не в сети
coreldraw, Просто попробовать объединить lastnews и xfields...:rolleyes:
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ну ты завернул...
насколько понимаю должны быть возможности вставить какие-то переменные в ентри.тпл
Не в сети
Делаю:
function plugin_lastnews(){
global $template;
$template['vars']['plugin_lastnews'] = plugin_lastnewsGenerator('', array(2), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength')));
$template['vars']['plugin_lastnews2'] = plugin_lastnewsGenerator('', array(5), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength')));
}
{plugin_lastnews2} не выводится. Что не так делаю?
Изменено Eterex (2009-02-03 16:30:36)
Не в сети
Делаю:
function plugin_lastnews(){ global $template; $template['vars']['plugin_lastnews'] = plugin_lastnewsGenerator('', array(2), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength'))); $template['vars']['plugin_lastnews2'] = plugin_lastnewsGenerator('', array(5), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength'))); }
{plugin_lastnews2} не выводится. Что не так делаю?
Должно быть так:
$template['vars']['plugin_lastnews_2'] = plugin_lastnewsGenerator('', array(5), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength')));
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
ROZARD, благодарствую. Все дело в черточке)). Кстати, а почему не работает, если задается
$template['vars']['plugin_lastnews2']
и в шаблоне ставится {plugin_lastnews2}? А через подчеркивание все ОК.
Не в сети
Eterex, переменные вида {plugin_ИМЯ} и {plugin_ИМЯ_чтото} - специальные переменные.
Они отображаются двигом только в том случае, если плагин с данным именем сейчас активирован.
Сделано для того, чтобы в шаблоны можно было заложить поддержку многих плагинов и в случае, когда пользователь отключает плагин - сразу же пропадают его переменные.
Ну а раз у тебя нет плагина lastnews2 ({plugin_lastnews2}), то переменная и не отображается.
По этой же причине переменная {plugin_lastnews_2} отображается - ведь плагин lastnews у тебя есть.
Не в сети
У меня следующая проблема. При выводе четвертого блока при помощи
{plugin_lastnews_4}
в место него выводится третий. Прописано все верно, как мне кажется это баг. Хотя могу ошибаться. Есть тут люди у кого выводится более трех разделов с помощью данного плагина?
Вот что в шаблоне прописано:
<!-- / -->
<table cellpadding="0" cellspacing="0" width="230" style="margin-bottom: 10px; border: 1px solid #c4c4c4; ">
<tr>
<td class="greenblock"><b><font color="#ffffff"> </font></b>
</td>
</tr>
<tr>
<td class="blockcontent">
{plugin_lastnews_humor}
</td>
</tr>
</td>
</table>
<!-- / -->
global $template;
$template['vars']['plugin_lastnews'] = plugin_lastnewsGenerator('', array(), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','maxlength')));
$template['vars']['plugin_lastnews_reviews'] = plugin_lastnewsGenerator('', array(2), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','12')));
$template['vars']['plugin_lastnews_soft'] = plugin_lastnewsGenerator('', array(5), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','8')));
$template['vars']['plugin_lastnews_blogs'] = plugin_lastnewsGenerator('', array(6), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','10')));
$template['vars']['plugin_lastnews_humor'] = plugin_lastnewsGenerator('', array(6), array('number' => extra_get_param('lastnews','number'), 'maxlength' => extra_get_param('lastnews','10')));
Это содержимое lastnews
Но на сайте вместо humor выводится содержимое blogs.
Изменено Rohan (2009-05-30 16:32:33)
Не в сети
Rohan, Это может по тому что блок {plugin_lastnews_humor} идентичен {plugin_lastnews_blogs}
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
Не в сети