BOBAHbI4 (16.10.2009, 17:33) писал:
Почему во 2й версии убран вывод краткого описания статьи?. Или есть иные способы вывести список подкатегорий на основной странице (не в меню).
На самой странице можно выводить дочерние странице в том же виде, что и на главной:
http://blog.zebrum.ru/lite/news/
Для этого достаточно прописать у страницы модуль zmodule_listpages:
@@module=zmodule_listpages
Там же можно прописать использование другого шаблона (отличного от того, что используется для главной) для вывода списка страниц:
@@params.template=listpages2
Например, на странице можно выводить список в другом формате или другом оформлении. При этом присутствует постраничная навигация и возможность управлять количеством выводимых на странице записей:
@@params.perpage=10
BOBAHbI4 (16.10.2009, 17:33) писал:
foreach ($pages as $page) {
/* @var $page zpage */
$description = $page->getDescription();
if (empty($description)) {
$description = strip_tags(substr(ltrim($page->getBody(), " \n"), 0, strpos($page->getBody(), "\n")));
} else {
$description = $description;
}
$from = array('#link', '#title', '#description');
$to = array($page->getLink(), $page->getTitle(), $description);
echo str_replace($from, $to, $line);
}
echo $close;
Может я ошибаюсь, тогда исправьте меня... Спасибо.
Не выводится описание, т.к. оно требует дополнительных расходов на его получение - нужно подгружать полную информацию о странице, а при большом количестве дочерних страниц это накладно.
Но новый виджет легко можно расширить и выводить ту информацию, которую хочется:
class mywidget_listpages extends zwidget_listpages
{
/**
* Формирует HTML блок и возвращает его
*
* @param zpageinfo $item
* @return string
*/
protected function getHTML ($item)
{
$page = $item->getPage();
$description = $page->getDescription();
if (empty($description)) {
$description = strip_tags(substr(ltrim($page->getBody(), " \n"), 0, strpos($page->getBody(), "\n")));
} else {
$description = $description;
}
return strtr($this->getParam('template'), array(
'#link' => $item->link,
'#title' => htmlspecialchars($item->name),
'#date' => date($this->params['date_format'], $item->time),
'#description' => $description
));
}
}
Определение класса можно прописать в functions.php или вынести в отдельный файл, а в functions.php его просто подключать. В шаблоне же вместо z_listpages() использовать:
$widget = new mywidget_listpages('listpages', array());
echo $widget->display();