Как изменить вывод каждой второй статьи в Textpattern

Textpattern очень мощный движок для создания сайтов и основное его достоинство – это простота всех изменений. Хотя, оценить это могут только люди, которым слова HTML, CSS, PHP и JS не кажутся странными.

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

И в Textpattern сделать это достаточно просто. Нужно только немного подумать.

Отступление от темы

Я себя давно ловлю на мысли, что некоторые вещи, которые приходится реализовывать в Textpattern`е при создании сайтов, я делаю сложным способом, прибегая к PHP. Но после того, как все уже написано, смотрю на код, и понимаю, что все это можно сделать средствами самого TXP. Переписывать все конечно же не решаюсь, но каждый раз корю себя за это.

Реализация

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

Помочь в этом могут так называемые variable (переменные), которыми редко кто пользуется в TXP. До последнего времени я даже и не задумывался о них, что могу где-то их использовать, но как оказалось – это очень удобный инструмент, которым можно решить некоторые нетривиальные задачи.

Алгоритм работы этого когда заключается в простой проверке на четность. В самом начале переменной (у меня это stat), при выводе первой статьи, присваивается значение 1. При выводе каждой последующей статьи идет проверка этой переменной и выводиться статья с противоположным оформлением. После каждого вывода переменная меняется на противоположное значение.

К примеру, нам нужно в каждой нечетной статье (1, 3, 5 и т.д.) — выводить изображение статьи с лево, а в каждой четной статье (2, 4, 6 и т.д.) — выводить изображение статьи справа. Тогда код будет иметь вид вот такой:

<txp:title />
<txp:if_variable name="stat">
    <txp:if_variable name="stat" value="1">
        <txp:variable name="stat" value="2" />
    <txp:else />
        <txp:variable name="stat" value="1" />
        <txp:article_image />
    </txp:if_variable>
<txp:else />
    <txp:variable name="stat" value="1" />
</txp:if_variable>
<txp:body />

Благодаря умелому использованию variable в этом случае, можно добиться разного эффекта: можно менять, как в моем примере, вывод только изображений, а можно менять отображение полностью целиком всей статьи. Тут у кого на что фантазии хватит.

P.S. Если Вы планируете свой праздник самостоятельно, то стоит обратить больше внимание на сервировку вашего стола. Стол должен быть идеален. Есть отличный магазин – ПрофПосуда, в котором можно найти все что Вам для этого нужно. И не важно, организовываете Вы коктейльную вечеринку или строгий ужин в стиле XVIII века. В магазине ПрофПосуда найдется все.

Комментарии:

  1. adida опубликовал комментарий 6 Ноябрь 2012, 10:31 #

    Спасибо за раскрытие потенциала variable в txp. Для меня эта тема была наиболее непонятной. Подобные штуки помогает делать старый добрый плагин zem_nth

    | Ответить
  2. ITShaman опубликовал комментарий 6 Ноябрь 2012, 20:07 #

    adida: Спасибо за раскрытие потенциала variable в txp. Для меня эта тема была наиболее непонятной. Подобные штуки помогает делать старый добрый плагин zem_nth

    Надо посмотреть, что это за такой zem_nth

    | Ответить
Имя
e-mail
Сайт
Текст комментария: