Вы не зашли.
$template['vars']['plugin_lastnews_stati'] = plugin_lastnewsGenerator($orderBy = 'postdate desc', $categories = array (НОМЕРА КАТЕГОРИЙ ЧЕРЕЗ ЗАПЯТУЮ), $overrideParams = array('number' => СКОЛЬКО ВЫВОДИТЬ ПОСЛЕДНИХ НОВОСТЕЙ - ЧИСЛО, 'overrideTemplatePath' => tpl_site . '/plugins/lastnews/НАЗВАНИЕ ШАБЛОНА/'));
Даты ты хочешь, чтобы тоже разные были у каждого блока?
Не в сети
Trashcka, да мне надо разные форматы даты, + у мня чтото нехочет шаблон хавать, есть разница чтобы укразывать путь полностю или так как ты написала, и в таком случае темплейты должны лежать в папках плагинов или в папке мой сайт.com/engine/plugins/lastnews/НАЗВАНИЕ ШАБЛОНА
Не в сети
legenda, по датам сразу не скажу, не было еще такой надобности, путь как угодно по идее можно указывать, шаблон без разницы где лежит.
Не в сети
Wolverine, спасибо.
Но встал вопрос обработки ббтегов, попробовал присобачить из top_news, но ничего не вышло.
Вот собственно код:
list ($short, $full) = explode('<!--more-->', $row['content'], 2);
$tvars['vars'] = array(
'link' => newsGenerateLink($row),
'views' => $row['views'],
'content' => $parse->truncateHTML($short, 300)
$short = $parse -> bbcodes($short);
$short = $parse -> smilies($short);
);
Помогите пожалуйста сделать обработку тегов.
I ♥ NGeneration CMS
Не в сети
Не в сети
Wolverine, я это уже сделал давно.
Вобщем для тех кто еще пользуется данным плагином, и хочет сделать обработку смайлов и тегов, а так же обрезание короткой новости, я выкладываю найденое решение:
<?php
// Protect against hack attempts
if (!defined('NGCMS')) die ('HAL');
add_act('index', 'plugin_lastnews');
function plugin_lastnews(){
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_2'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1), $overrideParams = array('number' => 1, 'maxlength' => 85, 'overrideTemplatePath' => tpl_site . 'plugins/lastnews_2'));
$template['vars']['plugin_lastnews_3'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1), $overrideParams = array('number' => 1, 'maxlength' => 85, 'overrideTemplatePath' => tpl_site . 'plugins/lastnews_3'));
$template['vars']['plugin_lastnews_4'] = plugin_lastnewsGenerator($orderBy = '', $categories = array (1), $overrideParams = array('number' => 1, 'maxlength' => 85, 'overrideTemplatePath' => tpl_site . 'plugins/lastnews_4'));
}
//
// $orderby - param for news order in show (SQL expression, NO SECURITY CHECK !!!)
// $categories - a list of categories - array of elements, each element may be a category ID or an array of categories
// $overrideParams - a list of overriding params
// * number - number of news to show
// * offset - news number offset
// * dateformat - manually set date format for display [default: "{day0}:{month0}:{year}"]
// * {day} - day number
// * {day0} - day number with leading zero
// * {month} - month number
// * {month0} - month number with leading zero
// * {year} - year (in 4 digit format)
// * {year2} - year (in 2 digit format)
// * {month_s} - month name, short
// * {month_l} - month name, long
// * {hour} - hour
// * {hour0} - hour with leading zero
// * {minute0} - minute with leading zero
//
// * maxlength - maximum length of news title (cut)
// * overrideTemplatePath - path for template
function plugin_lastnewsGenerator($orderby = '', $categories = array(), $overrideParams = array()) {
global $config, $mysql, $tpl, $lang, $langShortMonths, $langMonths, $parse, $PFILTERS;
// Generate cache file name [ we should take into account SWITCHER plugin & calling parameters ]
$cacheFileName = md5('lastnews'.$config['theme'].$config['default_lang'].var_export($categories, true).var_export($overrideParams, true)).'.txt';
if (extra_get_param('lastnews','cache')) {
$cacheData = cacheRetrieveFile($cacheFileName, extra_get_param('lastnews','cacheExpire'), 'lastnews');
if ($cacheData != false) {
// We got data from cache. Return it and stop
return $cacheData;
}
}
if (intval($overrideParams['number']) <= 1) {
$number = 1;
} else {
$number = intval($overrideParams['number']);
}
$offset = isset($overrideParams['offset'])?intval($overrideParams['offset']):0;
if (intval($overrideParams['maxlength']) <= 1) {
$maxlength = 100;
} else {
$maxlength = intval($overrideParams['maxlength']);
}
// Determine paths for all template files
if (isset($overrideParams['overrideTemplatePath']) && $overrideParams['overrideTemplatePath']) {
$tpath = array('entries' => $overrideParams['overrideTemplatePath'], 'lastnews' => $overrideParams['overrideTemplatePath']);
} else {
$tpath = locatePluginTemplates(array('entries', 'lastnews'), 'lastnews', extra_get_param('lastnews', 'localsource'));
}
$filter = array ('approve = 1');
//
$catfilter = array();
foreach ($categories as $cat) {
if (is_array($cat)) {
$catsubfilter = array();
foreach ($cat as $subcat)
$catsubfilter [] = "(catid regexp '[[:<:]](".$subcat.")[[:>:]]')";
$catfilter [] = '('.join (' AND ', $catsubfilter).')';
} else {
$catfilter [] = "(catid regexp '[[:<:]](".$cat.")[[:>:]]')";
}
}
if (count($catfilter))
$filter [] = '('.join(' OR ', $catfilter).')';
// Preparation for plugin integration [if needed]
$callingParams = array();
if (extra_get_param('lastnews', 'pcall')) {
$callingParams['plugin'] = 'lastnews';
switch (intval(extra_get_param('lastnews', 'pcall_mode'))) {
case 1: $callingParams['style'] = 'short';
break;
case 2: $callingParams['style'] = 'full';
break;
default: $callingParams['style'] = 'export';
}
// Preload plugins
load_extras('news:show');
load_extras('news:show:one');
}
$result = '';
foreach ($mysql->select("select * from ".prefix."_news where ".join(" AND ", $filter)." order by ".($orderby?$orderby:"id desc")." limit ".$offset.",".$number) as $row) {
// Execute filters [ if requested ]
if (extra_get_param('lastnews', 'pcall') && is_array($PFILTERS['news']))
foreach ($PFILTERS['news'] as $k => $v) { $v->showNewsPre($row['id'], $row, $callingParams); }
list ($short, $full) = explode('<!--more-->', $row['content'], 2);
if (extra_get_param('lastnews', 'maxshort')!=0) { $short = $parse->truncateHTML($short, extra_get_param('lastnews', 'maxshort')); }
if ($config['blocks_for_reg']) { $short = $parse -> userblocks($short); }
if ($config['use_htmlformatter']) { $short = $parse -> htmlformatter($short); }
if ($config['use_bbcodes']) { $short = $parse -> bbcodes($short); }
if ($config['use_smilies']) { $short = $parse -> smilies($short); }
$tvars['vars'] = array(
'link' => newsGenerateLink($row),
'views' => $row['views'],
'content' => $short,
);
// Set formatted date
$dformat = (isset($overrideParams['dateformat']))?$overrideParams['dateformat']:(extra_get_param('lastnews','dateformat')?extra_get_param('lastnews','dateformat'):'{day0}.{month0}.{year}');
$tvars['vars']['date'] = str_replace(array('{day}', '{day0}', '{month}', '{month0}', '{year}', '{year2}', '{month_s}', '{month_l}', '{hour}', '{hour0}', '{minute0}'),
array(date('j',$row['postdate']), date('d',$row['postdate']), date('n',$row['postdate']), date('m',$row['postdate']), date('y',$row['postdate']), date('Y',$row['postdate']), $langShortMonths[date('n',$row['postdate'])-1], $langMonths[date('n',$row['postdate'])-1], date('G', $row['postdate']), date('H', $row['postdate']), date('i', $row['postdate'])), $dformat);
if (strlen($row['title']) > $maxlength) {
$tvars['vars']['title'] = substr(secure_html($row['title']), 0, $maxlength)."...";
} else {
$tvars['vars']['title'] = secure_html($row['title']);
}
// Execute filters [ if requested ]
if (extra_get_param('lastnews', 'pcall') && is_array($PFILTERS['news']))
foreach ($PFILTERS['news'] as $k => $v) { $v->showNews($row['id'], $row, $tvars, $callingParams); }
$tpl -> template('entries', $tpath['entries']);
$tpl -> vars('entries', $tvars);
$result .= $tpl -> show('entries');
}
unset($tvars);
$tvars['vars'] = array ( 'tpl_url' => tpl_url, 'entries' => $result);
$tpl -> template('lastnews', $tpath['lastnews']);
$tpl -> vars('lastnews', $tvars);
$output = $tpl -> show('lastnews');
if (extra_get_param('lastnews','cache'))
cacheStoreFile($cacheFileName, $output, 'lastnews');
return $output;
}
I ♥ NGeneration CMS
Не в сети
Евгений, кривой вариант слегка вышел, не во всех вариациях работает, это так к сведению.
А меня другой момент, как вывести только картинку из краткой?
Не предлагать доп-поля и т.п., надо именно в таком ключе.
Изменено Trashcka (2010-08-05 21:39:09)
Не в сети
проще в top_news запрос поменять
Не в сети
Trashcka, тоесть не нашла... там же есть плагин которій можно скачать, если очень надо могу на досуге написать где че поменять нуно, но вроде уже тут на форуме писал
Не в сети
infinity237, то, что оно проще, это понятно, но как?, это другое дело )
Насколько я понимаю нужно в shortnews найти а остальное обрезать? Если в shortnews больше чем 1 img, то выбрать первый, а остальное обрезать?
Если нужно именно так, то я вижу пока что только такой вариант решения:
1. Обработать shortnews, заменить bb теги на html.
2. Выбрать из shortnews все ссылки на изображения.
Например вот так:
preg_match('|<img src=(.*) >|Uis', $short, $output);
3. Вывести первый элемент массива ($output[1]).
На практике могут возникнуть проблемы с регулярными выражениями.
Возможно есть и более простые варианты, но я чёт туплю.
P.S. чтобы из top_news превратить lastnews нужно фактически подставить в переменную $orderby = id
Изменено infinity237 (2010-08-15 03:46:11)
Не в сети
P.S. чтобы из top_news превратить lastnews нужно фактически подставить в переменную $orderby = id
Скорее postdate
Не в сети
Нужна помощь с плагином lastnews, точнее с выводом коротких новостей.
задаю блок, делю его на 2 колонки (для 2 последних новостей в одной категории), нужно в каждую колонку выводить по одной короткой новости с ограничением по количеству знаков и выводом заголовка каждой новости.
HELP!!! как это сделать - ну оч-чень нужно.
UPD
интересует вариант вывода через один плагин - реально это или нет?
Изменено Boris (2010-08-19 16:27:00)
Не в сети
Boris, что выводить через один плагин?, если по одной новости в каждом блоке, то реально, читать первый пост.
Изменено Trashcka (2010-08-19 16:38:50)
Не в сети