Тема: Как сделать новости на главной?
Как лучше реализовать «новости» на главной сайта?
Пробовал сделать чтобы на главной отображались последние 3-5 постов из блога по тегу «Новости», но тоже не разобрался как.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Это обсуждение устаревшей версии S2 1.0. Об актуальной версии читайте на главной.
Страницы 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.