Создание блока новостей в NetCat

Пример реализации информационного блока новостей на CMS NetCat.
Манипуляции с формированием и выводом информации из БД в NetCat производятся посредством компонентов и шаблонов компонентов.

То есть начиная с версии 3.6 достаточно найти компонент «Пyбликaции: Hoвocти кoмпaнии» нажать кнопку «Добавить шаблон» и заполнить нужные поля:

// Префикс списка объектов:
$f_AdminCommon
<div class='nc_list nc_news'>
...
// Объект в списке:
$f_AdminButtons
<div class='news'><small>$f_Date_day.$f_Date_month.$f_Date_year</small><p><a href='$fullLink'>$f_Title</a></p></div>
...
// Суффикс списка объектов:
</div>
...
// Отображение объекта (по умолчанию):
<div class='nc_full nc_news'>
<h2>$f_Title</h2>
<div class='nc_full_text'>$f_Text</div>
".opt( $cc_settings[DateStyle]!='disable' , "<div class='nc_datetime'>".
opt( $cc_settings[DateStyle]!='time' , "<span class='nc_date'>$f_Date_day.$f_Date_month.$f_Date_year </span>" ).
opt( $cc_settings[DateStyle]!='date' , "<span class='nc_time'>$f_Date_hours:$f_Date_minutes </span>" )."</div>"
)
.opt( $f_SourceTitle || $f_SourceLink ,
"<div class='nc_source'><span>Источник: </span>".opt_case( $f_SourceTitle && $f_SourceLink , "<a href='$f_SourceLink'>$f_SourceTitle</a>",
opt_case( !$f_SourceLink,$f_SourceTitle , "<a href='$f_SourceLink'>$f_SourceLink</a>" )
)."</div>"
)."
</div>
 
".(nc_module_check_by_keyword("comments") ? "<div class='nc_comments'>".$nc_comments->wall($f_RowID)."</div>" : "")."

Чтобы при вызове в макете дизайна:

<div class='type_block'>
<h2>События</h2>
<div class='nc_row'>
".s_list_class(15,5,'recNum=3&nc_ctpl=88')."
</div>
</div>

получить блок новостей с датой и заголовком новости в виде ссылки на полную новость (15 — раздел, 5 — компонент в разделе, 88 — номер шаблона компонента).

Раньше (до версии 3.6) все было немного (совсем немного) сложнее:
В поле «Объект в списке» того же компонента («Пyбликaции: Hoвocти кoмпaнии») используем тернарный оператор получим следующее:

$f_AdminButtons
// добавили проверку на существование и неравенство нулю переменной $isTitle и соответствуюищий шаблон вывода новостей если все ок
".($isTitle ? "<div class='news'><small>$f_Date_day.$f_Date_month.$f_Date_year</small><p><a href='$fullLink'>$f_Title</a></p></div>" : "
 
<div class='nc_row'>
...
То что здесь есть по умолчанию
...
</div>
 
")." // добавили

Теперь в любом месте любого макета дизайна можно показать новости в кратком формате так:

<div class='type_block'>
<h2>События</h2>
<div class='nc_row'>
<!--".s_list_class(15,5,'recNum=3&nc_ctpl=88')." для сравнения-->
".s_list_class(15,5,'recNum=3&isTitle=1')."
</div>
</div>

Отличий немного, а порядка в движке прибавилось. Отрадно.

Комментариев: 6

  • 05.03.2010 Юрий:

    Я читал что не нужно выводить информацию функцией s_list_class() из-за большого количества запросов к базе и что можно воспользоваться функцией listQuery(),

    как с помощью этой функции можно организовать вывод?

  • 11.03.2010 Кирилл:

    Вариант навскидку:

    ".listQuery("SELECT title AS title, priority AS priority, date AS date FROM message22",<li><b>\$data[date]</b>&nbsp;<a href='companynews_\$data[priority].html' rel="nofollow">\$data[title]</a>")."

  • 19.04.2010 deniska:

    2 Юрий:

    Большое кол-во запросов - это вы преувеличиваете.

    Во-первых - есть модуль кеширование.

    Во-вторых, можно посчитать:

    — запрос к полям

    — запрос к данным

    — запрос к инфе о компоненте-в-разделе

    — м.б. дополнительный запрос, если есть файлы

    итого 3 — 5 запросов, не так уж и много для универсальной цмс

  • 19.04.2010 deniska:

    Предложение админам: выводить дату в «русском» виде 19.04.10, а не в буржуйском: «04.19.10»

  • 19.04.2010 Кирилл:

    2deniska:

    1. Спасибо за дельные комменты.

    2. Думал все даты перепилил с американского формата, а в архивах и шаблонах категорий остались — исправлено.

    3. Спасибо за позитивную оценку блога, чертовски приятно.

  • 10.06.2010 Дмитрий:

    Огромное человеческое спасибо,за толковую и грамотную статью.Очень помогли.

    Спасибо!


Добавление комментария:

 css.php