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


- - - - -

Можно ли выводить новости с кратким описанием?


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

#1 vasko

vasko

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

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

Отправлено 04.07.2009, 18:28

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

#2 support

support

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

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

Отправлено 05.07.2009, 06:04

Просмотр сообщенияvasko (4.7.2009, 22:28) писал:

Добрый вечер, подскажите можно ли выводить новости с кратким описанием.
В текущей версии Zebrum Lite у страниц нет свойства, которое бы отвечало за аннотацию к статье, поэтому при выводе списка дочерних страниц используется метатэг описания страницы или, если его нет, первый абзац страницы (http://blog.zebrum.r...additional.html, текст под ссылкой на страницу лицензии).

Можно добавить к страницам свое свойство, где прописывать аннотацию к странице, а там где требуется, использовать ее.

#3 vasko

vasko

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

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

Отправлено 05.07.2009, 21:11

Просмотр сообщенияsupport (5.7.2009, 9:04) писал:

В текущей версии Zebrum Lite у страниц нет свойства, которое бы отвечало за аннотацию к статье, поэтому при выводе списка дочерних страниц используется метатэг описания страницы или, если его нет, первый абзац страницы (http://blog.zebrum.r...additional.html, текст под ссылкой на страницу лицензии).

Можно добавить к страницам свое свойство, где прописывать аннотацию к странице, а там где требуется, использовать ее.
А не смогли бы Вы поподробнее объяснить, я вывожу новости в шаблоне, в блоке, с помощью   <?php zsidebarmanager::displaySidebar(2); ?>, но там отображается только @@title, которое и является ссылкой на полную новость а @@description= хоть и прописываю но не отображается.

#4 support

support

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

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

Отправлено 06.07.2009, 03:48

Просмотр сообщенияvasko (6.7.2009, 1:11) писал:

А не смогли бы Вы поподробнее объяснить, я вывожу новости в шаблоне, в блоке, с помощью   <?php zsidebarmanager::displaySidebar(2); ?>, но там отображается только @@title, которое и является ссылкой на полную новость а @@description= хоть и прописываю но не отображается.
В меню не выводятся описания страниц. Для того, чтобы они выводились нужно создать свой виджет и использовать его. В качестве основы можно использовать стандартный виджет zwidget_pages. Созданный класс помещаем в отдельный файл в папке темы сайта и подключаем его в файле functions.php, после чего используем вместо zwidget_pages там, где нужно выводить пункты с описанием.

В качестве примера привожу возможный вариант реализации этого класса (комментарии класса zwidget_pages удалены для сокращения кода, добавленный код выделен комментариями):
<?php
class widget_news extends zwidget
{
	public function displayContent ()
	{
		$this->nofollow = '';
		if (zengine::config()->get('menu.nofollow')) {
			$this->nofollow = ' rel="nofollow"';
		}

		$this->zpage = zengine::ztemplate()->zpage;
		$this->pagepath = $this->zpage->getPagepath();

		$menu = zengine::zsource()->getMenu()->find($this->getParam('childs_of'));
		if (!$menu) {
			return;
		}

		echo '<ul>';
		$this->displayItems($menu, 1);
		echo '</ul>';
	}

	private function displayItems ($items, $currentDepth)
	{
		$displayed = 0;
		foreach ($items as $item) {
			if ($this->getParam('number') > 0 && $displayed >= $this->getParam('number')) {
				break;
			}

			if ($item->nomenuitem || (false !== $this->getParam('menuid') && $item->menuid !== $this->getParam('menuid'))) {
				continue;
			}

			$itemClasses = array('page_item');
			// Мы находимся на этой странице
			if ($this->pagepath == $item->uri) {
				$itemClasses[] = 'current_page_item';
			}
			// Эта страницы выше по нашей ветке
			if (strpos($this->pagepath, $item->uri . '/') === 0) {
				$itemClasses[] = 'current_page_ancestor';
				// Эта страницы является родительской для текущей
				if (false === strpos(substr($this->pagepath, strlen($item->uri) + 1), '/')) {
					$itemClasses[] = 'current_page_parent';
				}
			}

			echo '<li class="' . implode(' ', $itemClasses) . '">';

			if (strpos($this->pagepath, $item->uri . '/') === 0 || strpos($item->uri, dirname($this->pagepath)) !== 0) {
				echo '<a href="' . $item->link . '"' . $this->nofollow . '>' . $item->name . '</a>';
			} else {
				echo '<a href="' . $item->link . '">' . $item->name . '</a>';
			}

			// Добавление вывода описания страницы
			$page = zpage::find($item->uri, true);
			$description = $page->getDescription();
			if (strlen($description) != 0) {
				echo '<br />' . $description;
			}
			// ---

			if ((!$this->getParam('depth') || $currentDepth < $this->getParam('depth')) && !$item->nosubmenu && $item->hasSubmenu() && $this->showSubmenu($item)) {
				echo '<ul>';
				$this->displayItems($item, $currentDepth + 1);
				echo '</ul>';
			}

			echo '</li>';
			++$displayed;
		}
	}

	private function showSubmenu ($item) {
		if ($this->getParam('type', 'minimal') == 'minimal') {
			if ($item->uri == $this->pagepath || strpos($this->pagepath, $item->uri . '/') === 0) {
				return true;
			} else {
				return false;
			}
		}

		return true;
	}

	private $nofollow;
	private $pagepath;
	protected $defaults = array(
		'type' => 'minimal',
		'depth' => 0,
		'menuid' => 'main',
		'childs_of' => '',
		'number' => 0,
	);
}

Если данный класс поместить в файл widget_news.php рядом с файлом functions.php, то для его использования можно прописать следующий код (параметры создания виджета подправить):

require_once(dirname(__FILE__) . '/widget_news.php');
$sidebar2 = new zsidebar();
$sidebar2->addWidget(new widget_news('news', array(
	'title' => 'Последние новости', // Заголовок блока
	'type' => 'full', // Тип вывода меню: minimal или full
	'menuid' => 'news', // тип меню, false - все пункты, main
	'childs_of' => '/news', // выводить дочерние страницы этой страницы
	'depth' => 1, // глубина иерархии меню ограничена первым уровнем
	'number' => 10, // выводить не более 10 пунктов меню
)));


#5 vasko

vasko

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

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

Отправлено 06.07.2009, 06:16

Спасибо большое, все получилось  :).




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

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