Перейти к содержимому


- - - - -

Испольозование описания в выводе списка поддиректорий


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 BOBAHbI4

BOBAHbI4

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 16.10.2009, 17:33

Почему во 2й версии убран вывод краткого описания статьи?. В коде в данный момент стоит код:
return strtr($this->getParam('template'), array(
			'#link' => $item->link,
			'#title' => htmlspecialchars($item->name),
			'#date' => date($this->params['date_format'], $item->time),
			'#description' => ''
		));
Как видно "#description" тут только для совместимости со старыми версиями, а шаблон в новой версии уже имеет вид "<li><a href="#link">#title</a></li>", а не как ранее "<a href="#link">#title</a><p>#description</p>"
В версии 1.14 выводилось краткое описание, а в новой версии перестали поддерживать это. Приходится оставаться пока на старой 1.14 :(
Или есть иные способы вывести список подкатегорий на основной странице (не в меню).
Вот код из рабочего куска
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;
Может я ошибаюсь, тогда исправьте меня... Спасибо.

#2 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 16.10.2009, 18:59

Просмотр сообщения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();


#3 BOBAHbI4

BOBAHbI4

    Новичок

  • Пользователи
  • Pip
  • 2 сообщений

Отправлено 17.10.2009, 06:01

спс.. будем пробовать :)

#4 blacktop

blacktop

    Активный участник

  • Пользователи
  • PipPipPip
  • 51 сообщений

Отправлено 18.01.2010, 09:12

А существует ли какое-нибудь свойство, которое можно указать, чтобы
@@module=zmodule_listpages
выводил только заголовки страниц, как в зебре 1.х?
Читал тут http://zebrum.ru/for...p?showtopic=672 про <!--more-->, но этот вариант не очень удобен, мне нужен просто список страниц, чтобы не было "Читать запись полностью »"

#5 support

support

    Активный участник

  • Главные администраторы
  • PipPipPip
  • 1 140 сообщений

Отправлено 18.01.2010, 09:17

Просмотр сообщенияblacktop (18.01.2010, 09:12) писал:

А существует ли какое-нибудь свойство, которое можно указать, чтобы
@@module=zmodule_listpages
выводил только заголовки страниц, как в зебре 1.х?
Читал тут http://zebrum.ru/for...p?showtopic=672 про <!--more-->, но этот вариант не очень удобен, мне нужен просто список страниц, чтобы не было "Читать запись полностью »"
Указываем свойство @@params.template=onlytitles, копируем listpages.php в onlytitles.php и правим по своему усмотрению.

#6 blacktop

blacktop

    Активный участник

  • Пользователи
  • PipPipPip
  • 51 сообщений

Отправлено 18.01.2010, 09:19

Спасибо.

#7 Swonie

Swonie

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 20.01.2010, 13:54

потерто..




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей