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


- - - - -

Несколько публикаций на главной


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

#1 activizator

activizator

    Новичок

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

Отправлено 27.12.2008, 15:39

Хотелось бы видеть несколько последних публикаций на главной странице. Почему не сделано, например вот так:

<h1><?php z_h1(); ?></h1>
<?php z_content1(); ?>


<h1><?php z_h2(); ?></h1>
<?php z_content2(); ?>


<h1><?php z_h3(); ?></h1>
<?php z_content3(); ?>

Возможно есть иной способ? Подскажите?

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

Кроме того, хотелось бы иметь ссылки Предыдущие публикации и Следующие публикации. Это возможно?

#2 shdenis

shdenis

    Новичок

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

Отправлено 15.02.2009, 15:06

Я смотрю, в плане публикаций новостей или анонсов на гл.странице в автоматическом режиме, ничего не реализовано.

#3 zebrum

zebrum

    Администратор

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

Отправлено 16.02.2009, 05:23

Специального функционала для этого пока нет, но можно поступить следующим образом.
Создать отдельный шаблон для главной страницы, где вместо вывода содержимого будет примерно следующий PHP-код:
<?php
$html = zengine::zcache()->get('mplist');
if (false === $html) {
   // Получаем список всех страниц в структуре сайта
   $items = array();
   foreach (new
RecursiveIteratorIterator(zengine::zsource()->getMenu()) as $item) {
	   $items[] = $item;
   }
   // Сортируем страницы в порядке убывания по дате публикации
   $sorter = new zpagesorter('publish desc');
   $sorter->sort($items);
   // Оставляем только 10 страниц начиная со второй страницы (первая
всегда главная, т.к. у неё текущее время)
   $items = array_slice($items, 1, 10);
   // Выводим информацию о страницах
   $html = '';
   foreach ($items as $item) {
	   // Создаем объект страницы, т.к. $item - это пункт меню
	   $page = zpage::load($item->uri);
	   // Выводим информацию, которая
	   $html .= $item->link . '<br />';
	   $html .= $page->getTitle() . '<br />';
	   $html .= $page->getDescription() . '<br /><br />';
   }

   zengine::zcache()->put('mplist', $html);
}
echo $html;
?>

Этот код является отправной точкой для решения Вашей задачи,
т.к. не оформлен вывод информации о странице и описание берется из мета-тэгов страницы (getDescription).
В нем уже используется стандартное кэширование Zebrum Lite.

#4 milkfake

milkfake

    Новичок

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

Отправлено 09.05.2009, 17:35

А не подскажите как рандомную запись вывести?
UPD Вроде разобрался.


убить код $items = array_slice($items, 1, 10);

и добавить
$max_items=count($items);
$rand_item=mt_rand(1, $max_items);

и заменить $page = zpage::load($item->uri);
на $page = zpage::load($items[$rand_item]->uri);

Както так




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

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