Тема: Как сделать новости на главной?
Как лучше реализовать «новости» на главной сайта?
Пробовал сделать чтобы на главной отображались последние 3-5 постов из блога по тегу «Новости», но тоже не разобрался как.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как лучше реализовать «новости» на главной сайта?
Пробовал сделать чтобы на главной отображались последние 3-5 постов из блога по тегу «Новости», но тоже не разобрался как.
Я специально не делал ничего похожего на новости, потому что это не очень хорошая практика:
http://www.artlebedev.ru/kovodstvo/sections/129/
Если новости всё же нужны, их лучше всего делать вручную, вдумчиво удаляя неактуальные записи (а не по принципу «выводим последние N записей»).
Для вставки последнего поста блога есть метка <!-- s2_blog_last_post -->. Могу сделать что-то похожее для вставки нескольких постов подряд. Специально делать метку для вывода постов с некоторым ключевым словом считаю избыточным. Тем не менее, если нужна именно такая функциональность, могу привести соответствующий код.
Я бы и сам лучше апишку Твиттера туда засунул, но заказчик требует.
Было бы здоровою, такой код увидеть.
Сначала вам нужно взять самую свежую версию расширения s2_blog (я там один запрос подправил): http://s2cms.ru/downloads/development/extensions/
Я сделал расширение из одного манифеста, которое добавляет метку <!-- s2_blog_news -->. Поместите ее в шаблоны. Вам осталось подобрать правильный идентификатор ключевого слова (в строчке ' AND pt.tag_id = 1') и количество последних постов в вызове s2_blog_news_last(5).
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<!--
/**
* Blog News
*
* @copyright (C) 2012 Roman Parpalak
* @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
* @package s2_blog_news
*/
-->
<extension for="S2" engine="1.0">
<id>s2_blog_news</id>
<title>Blog news</title>
<version>1.0a</version>
<description>Adds a placeholder for blog posts with a tag specified.</description>
<author>Roman Parpalak</author>
<minversion>1.0b3</minversion>
<maxtestedon>1.0b3</maxtestedon>
<dependencies>
<dependency>s2_blog</dependency>
</dependencies>
<hooks>
<hook id="fn_s2_blog_last_posts_array_pre_get_ids_qr"><![CDATA[
if (isset($GLOBALS['s2_blog_news_enabled']) && $GLOBALS['s2_blog_news_enabled'])
{
$query['WHERE'] .= ' AND pt.tag_id = 1';
$query['JOINS'] = array(
array(
'INNER JOIN' => 's2_blog_post_tag AS pt',
'ON' => 'pt.post_id = p.id'
)
);
}
]]></hook>
<hook id="idx_pre_get_queries"><![CDATA[
if (strpos($template, '<!-- s2_blog_news -->') !== false)
{
if (!defined('S2_BLOG_FUNCTIONS_LOADED'))
include $ext_info['path'].'/../s2_blog/blog_functions.php';
function s2_blog_news_last ($num_post)
{
$posts = s2_blog_last_posts_array($num_post);
if (!count($posts))
return '';
$html = '<h2 class="preview">%1$s<a href="%2$s">%3$s</a></h2>'."\n".
'<div class="preview time">%5$s</div>'."\n".
'<div class="post body">%6$s</div>'."\n";
($hook = s2_hook('fn_s2_blog_news_last_start')) ? eval($hook) : null;
$output = '';
foreach ($posts as $post)
{
$link = S2_BLOG_PATH.date('Y/m/d/', $post['create_time']).urlencode($post['url']);
$tag_prefix = $post['tags'] ? '<small>'.str_replace('<a ', '<a class="preview_section" ', $post['tags']).' →</small> ' : '';
($hook = s2_hook('fn_s2_blog_last_post_pre_post_merge')) ? eval($hook) : null;
$output .= sprintf($html,
$tag_prefix,
$link,
s2_htmlencode($post['title']),
s2_date($post['create_time']),
s2_date_time($post['create_time']),
$post['text']
);
}
return $output;
}
$GLOBALS['s2_blog_news_enabled'] = true;
$replace['<!-- s2_blog_news -->'] = s2_blog_news_last(5);
$GLOBALS['s2_blog_news_enabled'] = false;
}
]]></hook>
</hooks>
</extension>
Этот код нужно поместить в файл _extensions/s2_blog_news/manifest.xml (в кодировке UTF-8 без метки порядка байт, BOM), потом установить это расширение.
Про разработку расширений я написал в документации: http://s2cms.ru/docs/extensions
Круто, но что-то не работает.
09.10.2012 06:03:47. Текст был изменен (@GlebVelikanov).
Вы хоть симптомы напишите, я же не обладаю телепатическими способностями :)
Есть какие-нибудь сообщения об ошибках (возможно, в логе ошибок веб-сервера)?
Точно метка в шаблонах написана именно так, без лишних пробелов?
<!-- s2_blog_news -->
Очевидно, если хотите новости на главной, нужно эту метку добавить в шаблон mainpage.php.
Посмотрите последний абзац про отладку: http://s2cms.ru/docs/extensions
Вы удаляли и заново устанавливали это расширение s2_blog_news после изменений в манифесте?
Ни ошибок, ни работы — никаких симптомов не вижу. Про лог ошибок веб-сервера, не слышал.
Метка точно правильно. Удалял, устанавливал заново — не помогает.
Можете сделать аккаунт для меня и прислать логин и пароль по почте или в личных сообщениях? Я сам попробую разобраться.
Так не охота другую cms искать только из-за новостей.
Возможно, я идентификатор ключевого слова не могу правильный подобрать. Как посмотреть какой id у какого тега?
На мой взгляд, по названию, было бы удобнее чем по id указывать тег, или чтоб вообще по-умолчанию этот тег «новости» назывался.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум работает на движке PunBB, поддерживаемом Informer Technologies, Inc.