<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Design by Excellent</description><title>http://blog.excellent.by/</title><generator>Tumblr (3.0; @designbyexcellent)</generator><link>http://blog.excellent.by/</link><item><title>Использование сниппетов(snippets) в качестве выходных фильтров в MODx Revo</title><description>&lt;p&gt;Рассмотрим как использовать сниппеты MODx в качестве выходных фильтров в MODx Revo. Выходные фильтры (output filters) обновлённый эквивалент выходным виджетам, которые доступны в MODx Evolution, например &lt;span&gt;&lt;a href="http://wiki.modxcms.com/index.php/PHx"&gt;PHx&lt;/a&gt;&lt;/span&gt;  и будучи в состоянии использовать сниппеты, как выходной фильтр обеспечивают высокую гибкость.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;Например, для формата даты TV:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[[* Createdon: strtotime: дата = “% Y-% M-% D`]]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Выходные фильтры могут быть прикреплены к любому элементу, таких как TV (template variables) или плэйсхолдер, и они обеспечивают способ настроить вывод этого элемента на странице. В качестве примера, рассмотрим, использование сниппета как выходного фильтра для создания системы тегов.&lt;/p&gt;
&lt;p&gt;Для начала, сделаем новый TV для шаблона поста в блоге, для удобства назначим тип TV - мультиселект, для того, чтобы нам удобнее было выбирать тэги для записей.&lt;/p&gt;
&lt;p&gt;Теперь, в фронт-энде, я могу легко сделать из моей ссылки теги, установив тип вывода для TV как &lt;strong&gt;Delimiter&lt;/strong&gt; - это позволяет отображать разделенную запятыми строку из моих тегов на странице блога. В данном случае мы не можем использовать этот вариант, т.к. нам нужны тэги со ссылками, чтобы обеспечить вывод всех сообщений в блоге, содержащих этот тег. Для этого нужно создать пользовательский выходной фильтр для нашего TV с тегами.&lt;/p&gt;
&lt;p&gt;Каждый сниппет используемый как выходной фильтр получает несколько параметров, которые предоставляют необходимые данные об элементе который обрабатывается - вот параметры, которые относятся к нашему TV:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;вход: фактическое значение элемента - если у вас определены другие выходные фильтры, то будет обработано значение, полученное после предшествующих фильтров.&lt;/li&gt;
&lt;li&gt;опции: строка, которая может быть передана сниппету для определения каких-либо параметров, которые могут потребоваться. В данном примере это будет идентификатор страницы поиска тегов.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Так, на фрагменте:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt; (&lt;span class="variable"&gt;$scriptProperties&lt;/span&gt;[&lt;span class="string"&gt;‘input’&lt;/span&gt;] == &lt;span class="string"&gt;”&lt;/span&gt;) &lt;span class="keyword"&gt;return&lt;/span&gt; &lt;span class="string"&gt;”&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="variable"&gt;$tags&lt;/span&gt; = explode(&lt;span class="string"&gt;’||’&lt;/span&gt;, &lt;span class="variable"&gt;$scriptProperties&lt;/span&gt;[&lt;span class="string"&gt;‘input’&lt;/span&gt;]);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="variable"&gt;$output&lt;/span&gt; = &lt;span class="keyword"&gt;array&lt;/span&gt;(); &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="keyword"&gt;foreach&lt;/span&gt; (&lt;span class="variable"&gt;$tags&lt;/span&gt; &lt;span class="keyword"&gt;as&lt;/span&gt; &lt;span class="variable"&gt;$tag&lt;/span&gt;) { &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="variable"&gt;$output&lt;/span&gt;[] = &lt;span class="string"&gt;‘&lt;a href=”’&lt;/span&gt; . &lt;span class="variable"&gt;$modx&lt;/span&gt;-&gt;makeUrl(&lt;span class="variable"&gt;$scriptProperties&lt;/span&gt;[&lt;span class="string"&gt;‘options’&lt;/span&gt;], &lt;span class="string"&gt;”&lt;/span&gt;, &lt;span class="string"&gt;‘tags=’&lt;/span&gt; . &lt;span class="variable"&gt;$tag&lt;/span&gt;) . &lt;span class="string"&gt;’”&gt;’&lt;/span&gt; . &lt;span class="variable"&gt;$tag&lt;/span&gt; . &lt;span class="string"&gt;‘&lt;/a&gt;’&lt;/span&gt;; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;} &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span class="keyword"&gt;return&lt;/span&gt; implode(&lt;span class="string"&gt;’, ‘&lt;/span&gt;, &lt;span class="variable"&gt;$output&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Сначала проверяем входные параметры: обработка завершится, если будут отсутствовать данные для обработки. После чего мы разобьем строку по разделителю для последующего формирования ссылок. Наконец, пребираем массив и оформляем ссылки, чтобы вернуть их после обработки.&lt;/p&gt;
&lt;p&gt;Для применения этого фильтра, используем следующую конструкцию в вызове TV: [[*tags:toTagLinks=`14`]] возможность использовать сниппеты в качестве выходных фильтров еще одна мощная особенность MODx Revolution.&lt;/p&gt;</description><link>http://blog.excellent.by/post/1140408274</link><guid>http://blog.excellent.by/post/1140408274</guid><pubDate>Sat, 18 Sep 2010 04:34:13 +0300</pubDate><category>modx</category><category>modx revolution</category><category>cmf</category><category>output filters</category></item><item><title>Нами был разработан пакет айдентики для шкловского завода...</title><description>&lt;img src="http://27.media.tumblr.com/tumblr_kzh7obZG5s1qb480fo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Нами был разработан пакет айдентики для шкловского завода газетной бумаги, включающий название торговой марки,  фирменный стиль и общую стратегию позиционирования.&lt;/p&gt;</description><link>http://blog.excellent.by/post/456496230</link><guid>http://blog.excellent.by/post/456496230</guid><pubDate>Thu, 18 Mar 2010 13:52:00 +0200</pubDate></item><item><title>Первая заметка</title><description>&lt;p&gt;Привет, мы открываем этот блог специально для публикации событий, впечатлений и освещения некоторых интересных моментов жизни нашего предприятия. Будем рады видеть тебя в числе подписчиков!&lt;/p&gt;</description><link>http://blog.excellent.by/post/456465892</link><guid>http://blog.excellent.by/post/456465892</guid><pubDate>Thu, 18 Mar 2010 13:26:00 +0200</pubDate></item></channel></rss>

