Логотип

Документация по макросам и шаблонам UMI.CMS

news lastlist()

Название

%news lastlist()% — Выводит список последних новостей.

Параметры: news lastlist(element_path [, template = 'default', per_page = '10', ignore_paging = '0', s_days_interval = '', b_skip_order_by_time = 0])

element_path

Путь до ленты новостей, либо id ленты новостей, из которой следует брать новости для вывода. Можно указать несколько путей до лент новостей (см. блок "Дополнительная информация" во вкладках TPL- и XSLT-шаблонизаторов), тогда новости из лент объединятся. Обратите внимание, что при выводе новостей из нескольких лент макрос %archive% будет недоступен.

template

Имя шаблона, по которому следует вывести список последних новостей.

per_page

Число, которое обозначает максимальное количество последних новостей. Если этот параметр не указывать, будет взято значение, указанное в настройках модуля «Новости».

ignore_paging

Булево значение («1» или «0»), указывающее макросу игнорировать значение текущей страницы списка вывода (параметр http-запроса p). То есть, если указать «1», макрос будет всегда выводить только первую страницу списка новостей (количество на странице определяется параметром per_page макроса). Как правило, данный параметр применяют, когда на той же странице сайта есть макрос, использующий постраничный вывод (например, сообщения форума), и его текущая страница не должна влиять на текущую страницу списка новостей (например, когда по логике сайта на любой странице списка сообщений форума должны выводиться 3 самые свежие новости).

s_days_interval

Строка, определяющая временной интервал по отношению к моменту начала отработки макроса, которым следует ограничить список выводимых новостей, а также порядок вывода новостей. По умолчанию (пустая строка), выводятся все новости, имеющиеся в ленте/лентах в порядке уменьшения даты публикации новости (чем новость более «свежая», тем «выше» ее позиция в списке), что соответствует также значению параметра, равному «+ -». Формат строки-значения параметра следующий: «[+-]?\d?[mhd]?\s?[+-]?\d?[mhd]?». Это два числа, разделенных пробелом, которым предшествуют знаки плюс или минус, и за которыми следует латинская буква m, h или d. Например: «+10d -5d». Эти два числа задают две границы временного интервала ограничения выборки.

Границы высчитываются системой относительно текущего момента (момента работы макроса, что соответствует моменту загрузки страницы сайта, на которой он «прописан»). Знак перед числом определяет, прибавлять или отнимать его от текущего момента, буква после числа — m, h, d — определяет значение числа — минуты, часы или дни соответственно.

Если первый указанный момент времени хронологически раньше второго, то новости будут выведены в порядке от самых старых к самым свежим. Если же первый указанный момент времени хронологически позже второго, то новости будут выведены в обратном порядке. Например, "-1d +1d " - макрос выведет новости за интервал "вчера-сегодня-завтра", начиная со вчерашних новостей, если же значения поменять местами - "+1d -1d" - макрос выведет те же новости, но в обратном порядке.

Если число отсутствует (присутствует только знак), система воспринимает его как «бесконечность». Некоторые примеры: «+10d -5d» — макрос выведет новости за интервал «не старше пяти дней и не более чем на 10 дней в будущее в порядке уменьшения даты публикации (более свежие новости 'выше' более старых)»(обратите внимание, что при публикации новости вы можете указать любую дату публикации, в том числе и будущую, что удобно, допустим, для создания лент анонсов событий) «- +» — макрос выведет новости так же, как и по умолчанию (то есть без ограничения по дате публикации), но в обратном порядке «+ +1m» — макрос выведет только «будущие новости» (если совсем точно, то в данном случае — «новости, дата публикации которых произойдет не ранее, чем через минуту от текущего момента») «-1m -10d» — макрос выведет новости за последние 10 суток.

Обратите внимание, что данный параметр отсчитывает интервал относительно текущего момента, не привязываясь ко времени начала/завершения календарных суток. То есть, если текущий момент 14 часов 37 минут 12-го января, и параметр равен «-1m -10d», то выражение «за последние 10 суток» значит буквально «новости, дата публикации которых не ранее 14 часов 37 минут 2-го января». Если вы хотите использовать вывод новостей, привязанный к календарю, используйте параметры year, month и day http-запроса при обращении к той странице, на которой «отрабатывает» данный макрос (см. далее в описании макроса).

b_skip_order_by_time

Если параметр не указан, то новости сортируются по дате публикации (последняя — в начале списка). Если указать «1», то новости выводятся в том порядке, в котором они находятся в административной части (в большинстве случаев совпадает с сортировкой по дате публикации). С установленным параметром выполнение макроса происходит быстрее.

Описание

Выводит список последних новостей из ленты новостей или нескольких лент новостей, указанных в параметре element_path. Количество выводимых новостей можно вручную ограничить параметром per_page.

Кроме параметров, которые передаются в макрос при его вызове из шаблона и параметра http-запроса p, результат вывода данного макроса учитывает также такие параметры http-запроса как year, month и day. Таким образом вы можете вывести только новости, ограничив список интервалом за определенный календарный год, месяц или день. Например, «хвост» url при запросе к странице может выглядеть как ?year=2008&month=1, что даст указание скрипту вывести только новости за январь 2008 года.

Дополнительные сведения

<?=$this->render($this->macros('news', 'lastlist', array('news', null, null, true)), 'news/rightcolumnlist'); ?>

Пример вызова

udata://news/lastlist/(vse_novosti/novosti_sajta)/notemplate/10/0

XML-ответ UData

<udata module="news" method="lastlist" generation-time="0.017119">
  <items>
    <item id="35" 
      link="/vse_novosti/novosti_sajta/nashi_bannery_i_usloviya_obmena_bannerami/"
      xlink:href="upage://35" 
      publish_time="1236685560" 
      lent_id="34" 
      lent_name="Новости сайта" 
      lent_link="/vse_novosti/novosti_sajta/">
      Наши баннеры и условия обмена баннерами
    </item>
    <item id="37" 
      link="/vse_novosti/novosti_sajta/razvedenie_homyachkov/" 
      xlink:href="upage://37" 
      publish_time="1236685260" 
      lent_id="34" 
      lent_name="Новости сайта" 
      lent_link="/vse_novosti/novosti_sajta/">
      Разведение хомячков
    </item>
  </items>
  <archive>file://news/default#lastlist_archive</archive>
  <archive_link>/vse_novosti/novosti_sajta/</archive_link>
  <total>2</total>
  <per_page>3</per_page>
</udata>

Элементы и атрибуты

<items>

Ветвь, включающая элементы <items> — новости в указанной ленте.

<item>

Элемент, содержащий данные об отдельной новости в указанной ленте. Значение элемента — название страницы новости.

@id

Идентификатор страницы новости.

@link

Ссылка на страницу полного текста новости.

@xlink:href

Ссылка UPage на страницу полного текста новости.

@publish_time

Время публикации новости в UNIX TIMESTAMP.

@lent_id

Идентификатор ленты, в которой находится эта новость.

@lent_name

Имя ленты, в которой находится эта новость.

@lent_link

Ссылка на страницу ленты, в которой находится эта новость.

<archive>

Используется только в TPL-шаблонах.

<archive_link>

Ссылка на архив ленты.

<total>

Общее количество элементов — новостей в указанной ленте (или лентах).

<per_page>

Количество элементов, отображаемых на странице.

Дополнительная информация

Если вам необходимо указать несколько лент новостей, то вызовы в шаблоне будут примерно следующими:

<xsl:apply-templates select="document(concat('udata://news/lastlist/', '(17)', '(21)', '//10/0'))/udata"/>
      
<xsl:apply-templates select="document(concat('udata://news/lastlist/', '(17)(21)', '//10/0'))/udata"/>
      

Будьте внимательны, при использовании параметра s_days_interval символ "+" в вызове необходимо заменить на "%2B". Например:

udata://news/lastlist/(news1)/default/10//%2B10d%20-10d/

Вывод списка последних новостей осуществляется по шаблону, указанному в параметре template. Вы можете не указывать этот параметр, в этом случае для вывода списка последний новостей будет использован шаблон по умолчанию — default.tpl.

Пример вызова

%news lastlist('vse_novosti/novosti_sajta','default',10,0)%

Используемые шаблоны

Макрос оперирует шаблонами, находящимися в каталоге /tpls/news/.

Используемые блоки шаблона

lastlist_block

Выводит блок оформления для списка новостей.

%items%

Выводит список новостей, используя блок lastlist_item .

%archive%

Выводит содержание блока lastlist_archive в том случае, если количество новостей в ленте больше, чем параметр per_page.

%archive_link%

Выводит ссылку на ленту новостей, из которой берутся новости для вывода списка последних новостей.

%total%

Выводит общее количество новостей в ленте. Можно использовать для макроса %system numpages()%.

%per_page%

Выводит значение параметра per_page. Можно использовать для макроса %system numpages%.

lastlist_block_empty

Используется вместо блока lastlist_block в том случае, если новостей, которые необходимо вывести нет.

lastlist_item

Выводит отдельную новость в списке последних новостей.

%id%

Выводит id новости.

%name%

Выводит название новости.

%header%

Выводит название новости (аналогично макросу %name%).

%link%

Выводит ссылку на новость.

%lent_id%

Выводит id ленты новостей, в которой содержится новость.

%lent_name%

Выводит название ленты новостей, в которой содержится новость.

%lent_link%

Выводит ссылку на ленту новостей, в которой содержится новость.

%list-class-first%

в случае, если элемент первый, выводит "first"

%list-class-last%

в случае, если элемент последний, выводит "last"

%list-class-odd%

в случае, если элемент четный, выводит "odd"

%list-class-even%

в случае, если элемент нечетный, выводит "even"

%list-position%

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

lastlist_archive

Используется в том случае, если количество выводимых новостей меньше, чем общее количество новостей в ленте.

%archive_link%

Выводит ссылку на ленту новостей, из которой берутся новости для вывода списка последних новостей.

Примеры использования

В поле HTML-редакторе какой-либо страницы вставьте макрос: %news lastlist('/path/to/newslist/', 'sample', '3')%.

В папке /tpls/news создайте файл sample.tpl, который содержит следующий пример:


<?php
$FORMS = Array();

$FORMS['lastlist_block'] = <<<END

%items%


END;

$FORMS['lastlist_item'] = <<<END

<div class="item">
<span class="date">%system convertDate(%publish_time%, 'd.m.Y')%</span> | 
<a href="%link%" class="title">%header%</a>
<p>%anons%</p>
</div>

END;
?>

Зайдите на страницу, которую вы редактировали. Вы увидите список последних новостей из ленты новостей /path/to/newslist/.

Дополнительная информация

Если вам необходимо указать несколько лент новостей, то вызов будет примерно следующим:

%news lastlist('vse_novosti/novosti_sajta akcii','default',10,0)%