Перед созданием новой темы, пожалуйста, ознакомьтесь с FAQ по LinkorCMS

Вывод названий категорий модуля "Новости"

Уважаемый пользователь
Сообщений: 18
Пытался написать блок выводящий только названия категорий модуля "Новости" и не получилось. Вот примерный код:
<?php

/*
* LinkorCMS 1.4
* © 2012 LinkorCMS Development Group
*/


// Блок Топ Новостей
// LinkorCMS Development Group
if(!defined('VALID_RUN')){
header("HTTP/1.1 404 Not Found");
exit;
}

$vars['title'] = $title;

$bcache_name = 'rubricks'.System::user()->AccessLevel();
if(!System::cache()->HasCache('block', $bcache_name)){
$block_config = unserialize($block_config);
$topic = SafeDB($block_config['topic'], 11, int); // Тема новостей
$max_news = SafeDB($block_config['count'], 11, int); // Количество новостей в блоке
if($topic != 0){
$where = "`enabled`='1' and `topic_id`='$topic'";
}else{
$where = "`enabled`='1'";
}
$newsdb = System::database()->Select('news_topics', GetWhereByAccess('view', $where), $max_news, 'date', true);
$news = array();
foreach($newsdb as $new){
$news[] = array(
'title' => SafeDB($new['title'], 255, str),
'text' => substr(SafeDB($new['start_text'], 0, str, true, false), 0, 255),
'date' => $new['date'],
'url' => Ufu('index.php?name=news&op=readfull&news='.SafeDB($new['id'], 11, int).'&topic='.SafeDB($new['topic_id'], 11, int), 'news/{topic}/{news}/'),
'image' => GetThumb(SafeDB($new['icon'], 255, str), 200, 190),
);
}
System::cache()->Write('block', $bcache_name, $news);
}else{
$news = System::cache()->Get('block', $bcache_name);
}

$count = count($news);
$en = !($count == 0);
$tempvars['content'] = 'block/content/rubricks.html';
System::site()->AddBlock('no_news', !$en);
System::site()->AddBlock('block_news', $en);
System::site()->AddBlock('block_news_news', true, true, 'news');

foreach($news as $new){
$text = $new['text'];
$pp = strpos($text, '. ');
if($pp !== false){
$text = substr($text, 0, $pp+1);
}else{
$text = substr($text, 0, 128).' ...';
}
$news_vars = array();
$news_vars['title'] = $new['title'];
$news_vars['url'] = $new['url'];
$news_vars['image'] = $new['image'];
$news_vars['text'] = $text;
$news_vars['date'] = TimeRender($new['date']);
System::site()->AddSubBlock('block_news_news', true, $news_vars);
}

Помогите люди. Знания php есть, но они низкие.
Разработчик
Сообщений: 605
Этот код проще выкинуть, чем переписывать. В нем много лишнего и по сути вы ничего не сделали: изменение таблицы, названий кэша и шаблона ничего не меняют. Запрос к базе не был переписан, так же как и последующая его обработка для вывода в шаблон.

Правильный код должен быть как-то так выглядеть:

<?
$vars['title'] = $title;<br />
<br />
$bcache_name = 'news_topics';<br />
if(!System::cache()->HasCache('block', $bcache_name)) {<br />
    $news_topics = System::database()->Select('news_topics');<br />
    $result = array();<br />
<br />
    foreach($news_topics as $topic) {<br />
        $result[] = array(<br />
            'id' => SafeDB($topic['id'], 11, int),<br />
            'title' => SafeDB($topic['title'], 255, str),<br />
            'desc' => SafeDB($topic['description'], 0, str),<br />
            'link' => Ufu('index.php?name=news&topic='.SafeD
B($topic['id'], 11, int), 'news/{topic}/')<br />
        );<br />
    }<br />
<br />
    System::cache()->Write('block', $bcache_name, $result);<br />
} else {<br />
    $result = System::cache()->Get('block', $bcache_name);<br />
}<br />
<br />
$tempvars['content'] = 'block/content/news_topics.html';<br />
System::site()->AddBlock('block_news_topics', true, true, 'nt');<br />
<br />
foreach($result as $res) {<br />
    System::site()->AddSubBlock('block_news_topics', true, $res);<br />
}
?>
Уважаемый пользователь
Сообщений: 18
а какие переменные в news_topics.html прописывать?
{block_news_topics}{/block_news_topics} - вот не работает
Гости не могут отвечать на темы. Войдите или Зарегистрируйтесь.
Здесь присутствуют
(пользователей: 0, гостей: 1)
Быстрый переход: