Lastnews в dle

12
S0
На сайте с 25.01.2012
Offline
1
2254

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

<?php

if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

$lastnewsconf['news'] = 150;
$lastnewsconf['link'] = 30;
$lastnewsconf['limit'] = 5;
$lastnewsconf['hide_html'] = true;
$lastnewsconf['only_hide_main'] = false;
$lastnewsconf['category'] = '3,4,61,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,58';
$lastnews = dle_cache("lastnews", $config['skin']);

if (!$lastnews) {
//include(ENGINE_DIR.'/inc/parse.class.php');
//$parse = new ParseFilter(Array(), Array());

if ($lastnewsconf['only_hide_main'])
$ln_allow_main = 'and allow_main=0';
else
$ln_allow_main = '';

if ($lastnewsconf['category'])
$ln_category = 'and category = '. str_replace(',',' or ', $lastnewsconf['category']);
else
$ln_category = '';

$tpl->load_template('lastnews.tpl');
$db->query("SELECT id, title, short_story , date, alt_name FROM ". PREFIX . "_post WHERE approve='1' $ln_allow_main $ln_category ORDER BY date DESC LIMIT 0,{$lastnewsconf['limit']}");

while($row = $db->get_row()){

$row['date'] = strtotime($row['date']);

if (strlen($row['title']) > $lastnewsconf['link'])
$title = substr ($row['title'], 0, $lastnewsconf['link'])." ..";
else
$title = $row['title'];

//$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($parse->BB_Parse($parse->process($row['short_story']))));
$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($row['short_story']));
$row['short_story'] = preg_replace("/<!--*-->/si","",$row['short_story']);
if($lastnewsconf['hide_html'])$row['short_story'] = strip_tags($row['short_story']);


if (strlen($row['short_story']) > $lastnewsconf['news'])
$short_story = substr ($row['short_story'], 0, $lastnewsconf['news'])." ...";
else
$short_story = $row['short_story'];

$go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : "";

if ($config['allow_alt_url'] == "yes")
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">\\1</a>");
else
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">\\1</a>");


$tpl->set('{title}', stripslashes($title));
$tpl->set('{short_news}', $short_story);

$tpl->compile('lastnews');

}
$lastnews = $tpl->result['lastnews'];
}

?>
md5by
На сайте с 30.12.2011
Offline
68
#1

Для вывода новостей из определенных категорий можно использовать стандартную возможность:

Тег {custom}, отвечает за вывод статей в пользовательском формате, имеет следующие параметры:

{custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"}

Где

category это список ID категорий, из которых производить выборку новостей, разделяются запятой без пробелов.

template файл шаблона который будет использоваться при выводе новостей в данном случае это будет custom.tpl если вы используете на сайте несколько шаблонов то данный файл должен присутствовать в каждом шаблоне. В данном шаблоне используются теги аналогичные для короткой новости.

aviable раздел в котором будет выводится запрашиваемые новости, может принимать следующие значения:

global - во всех разделах
main - на главной странице
date - при просмотре новостей за определенные даты
cat - при просмотре категории
showfull - при просмотре полной новости
search - при просмотре результатов поиска
userinfo - при просмотре профиля
register - при регистрации
stats - при просмотре статистики
pm - при просмотре персональных сообщений
feedback - при просмотре обратной связи
favorites - при просмотре закладок
newposts - при просмотре новых сообщений
addnews - при добавлении новости
lastcomments - при просмотре последних комментариев
static - при просмотре статических страниц
catalog - при просмотре каталога страниц
alltags - при просмотре облака тегов
tags - при просмотре новостей из облака тегов

Вы можете комбинировать разделы при помощи "|", например aviable="userinfo|register|main" будет выводить ваши новости на главной, при регистрации и при просмотре профиля пользователя.

from номер новости с которой начнется вывод

limit сколько новостей будет выведено

cache принимает значения yes или no - устанавливает кешировать вывод или нет, рекомендуется кешировать для снижения нагрузки.

Внимание необходимо указывать все параметры обязательны а также необходимо соблюдать их порядок.
S0
На сайте с 25.01.2012
Offline
1
#2

Спасибо за подробности,но не очень понимаю что именно нужно сделать с тегом {custom} ? Точнее,не представляю даже как написать данную ф-цию...

S
На сайте с 03.01.2012
Offline
26
#3
sanya06:
Точнее,не представляю даже как написать данную ф-цию...

Ничего не надо писать.

Просто вставляете это: {custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"} в нужное место в шаблоне, создаете файл custom.tpl, например, с таким содержанием: [full-link] {title} [/full-link] и все.

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

Подробнее здесь.

Garik666
На сайте с 20.09.2008
Offline
66
#4

вот это:

{custom category="2,7" template="custom" aviable="global" from="0" limit="10" cache="yes"}

в блок слева или справа вставь и прочитай пост md5by и всё поймёшь

)
S0
На сайте с 25.01.2012
Offline
1
#5

Спасибо. Теперь разобрался)

Подскажите пожалуйста ,а как можно теперь добавить описание (урезанное на 150 символов,и чтобы так же урезало заголовок до 30 символов) ?

md5by
На сайте с 30.12.2011
Offline
68
#6
sanya06:
Спасибо. Теперь разобрался)
Подскажите пожалуйста ,а как можно теперь добавить описание (урезанное на 150 символов,и чтобы так же урезало заголовок до 30 символов) ?

Тут уже наверное я думаю надо через Ява Скрипты урезать. Т.к. стандартные функции DLE не предусматривают урезание в шаблонах или просто мне о них не известно ( ...

Или написать Хак!

S0
На сайте с 25.01.2012
Offline
1
#7

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

<?php

if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

$lastnewsconf['news'] = 150;
$lastnewsconf['link'] = 30;
$lastnewsconf['limit'] = 5;
$lastnewsconf['hide_html'] = true;
$lastnewsconf['only_hide_main'] = false;
$lastnewsconf['category'] = '3,4,61,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,58';
$lastnews = dle_cache("lastnews", $config['skin']);

if (!$lastnews) {
//include(ENGINE_DIR.'/inc/parse.class.php');
//$parse = new ParseFilter(Array(), Array());

if ($lastnewsconf['only_hide_main'])
$ln_allow_main = 'and allow_main=0';
else
$ln_allow_main = '';

if ($lastnewsconf['category'])
$ln_category = 'and category = '. str_replace(',',' or ', $lastnewsconf['category']);
else
$ln_category = '';

$tpl->load_template('lastnews.tpl');
$db->query("SELECT id, title, short_story , date, alt_name FROM ". PREFIX . "_post WHERE approve='1' $ln_allow_main $ln_category ORDER BY date DESC LIMIT 0,{$lastnewsconf['limit']}");

while($row = $db->get_row()){

$row['date'] = strtotime($row['date']);

if (strlen($row['title']) > $lastnewsconf['link'])
$title = substr ($row['title'], 0, $lastnewsconf['link'])." ..";
else
$title = $row['title'];

//$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($parse->BB_Parse($parse->process($row['short_story']))));
$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($row['short_story']));
$row['short_story'] = preg_replace("/<!--*-->/si","",$row['short_story']);
if($lastnewsconf['hide_html'])$row['short_story'] = strip_tags($row['short_story']);


if (strlen($row['short_story']) > $lastnewsconf['news'])
$short_story = substr ($row['short_story'], 0, $lastnewsconf['news'])." ...";
else
$short_story = $row['short_story'];

$go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : "";

if ($config['allow_alt_url'] == "yes")
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">\\1</a>");
else
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">\\1</a>");


$tpl->set('{title}', stripslashes($title));
$tpl->set('{short_news}', $short_story);

$tpl->compile('lastnews');

}
$lastnews = $tpl->result['lastnews'];
}

?>
S0
На сайте с 25.01.2012
Offline
1
#8

Кто нибудь сможет помочь с данной проблемой?

md5by
На сайте с 30.12.2011
Offline
68
#9
sanya06:
Кто нибудь сможет помочь с данной проблемой?

Попробуйте вот так:

<?php

if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

$lastnewsconf['news'] = 150;
$lastnewsconf['link'] = 30;
$lastnewsconf['limit'] = 5;
$lastnewsconf['hide_html'] = true;
$lastnewsconf['only_hide_main'] = false;
$lastnewsconf['category'] = '3,4,61,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,58';
$lastnews = dle_cache("lastnews", $config['skin']);

if (!$lastnews) {
//include(ENGINE_DIR.'/inc/parse.class.php');
//$parse = new ParseFilter(Array(), Array());

if ($lastnewsconf['only_hide_main'])
$ln_allow_main = 'and allow_main=0';
else
$ln_allow_main = '';

if ($lastnewsconf['category'])
$ln_category = 'and category IN (' . $lastnewsconf['category'] . ')';
else
$ln_category = '';

$tpl->load_template('lastnews.tpl');
$db->query("SELECT id, title, short_story , date, alt_name FROM ". PREFIX . "_post WHERE approve='1' $ln_allow_main $ln_category ORDER BY date DESC LIMIT 0,{$lastnewsconf['limit']}");

while($row = $db->get_row()){

$row['date'] = strtotime($row['date']);

if (strlen($row['title']) > $lastnewsconf['link'])
$title = substr ($row['title'], 0, $lastnewsconf['link'])." ..";
else
$title = $row['title'];

//$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($parse->BB_Parse($parse->process($row['short_story']))));
$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($row['short_story']));
$row['short_story'] = preg_replace("/<!--*-->/si","",$row['short_story']);
if($lastnewsconf['hide_html'])$row['short_story'] = strip_tags($row['short_story']);


if (strlen($row['short_story']) > $lastnewsconf['news'])
$short_story = substr ($row['short_story'], 0, $lastnewsconf['news'])." ...";
else
$short_story = $row['short_story'];

$go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : "";

if ($config['allow_alt_url'] == "yes")
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/', $row['date']).$row['alt_name'].".html\">\\1</a>");
else
$tpl->set_block("'\[full-link\](.*?)\[/full-link\]'si", "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">\\1</a>");


$tpl->set('{title}', stripslashes($title));
$tpl->set('{short_news}', $short_story);

$tpl->compile('lastnews');

}
$lastnews = $tpl->result['lastnews'];
}

?>
siv1987
На сайте с 02.04.2009
Offline
427
#10


$ln_category = 'and category = '. str_replace(',',' or ', $lastnewsconf['category']);

заменить на


$ln_category = 'AND category IN ('. $lastnewsconf['category'] .')';
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий