Информационные поля для статей, плагин «OtG: Fields»

От автора

Существующий в CMS «Textpattern» (далее TxP) механизм «custom fields» мне всегда казался недостаточно гибким, кроме того для статей с различным по характеру материалом использовать стандартные средства не очень удобно, да и зарезервированных полей может попросту не хватить (с этой частью проблемы разработчики справились в версии 4.2.0, сделав число полей настраиваемым, но это всего лишь выход, но никак не решение проблемы).

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

Скачать плагин

Скачать плагин можно отсюда: OtG: Fields v0.3. Работоспособность плагина проверена на стадартных сборках TxP версии 4.0.8 и 4.2.0.

Возможности модуля

Основное предназначение модуля — предоставить пользователю TxP средства для работы со списком полей, а также для заполнения этих полей при редактировании статьи.

  • Создание произвольного перечня полей с возможностью разнесения полей по смысловым группам, например в группу «Книги» можно внести поля «Автор» и «Жанр», а в группу «Фильмы» — «Режиссёр», «Год выпуска» и «Сборы».
  • Выбор произвольного перечня полей (с возможностью дублирования) и указание их значений при редактировании статьи. То есть, для статьи, посвящённой, например, какой-нибудь книге, пользователь может занести лишь те поля, которые действительно относятся к книгам.
  • Внесение комментария к каждому значению поля. Комментарий в данном случае — это сопроводительная информация. Так, указывая сборы фильма, можно завести несколько полей «Бюджет», а в комментариях к каждому из них указать, для какого региона: «США», «Европа» или «Россия».
  • Использование специальных тегов в шаблоне вывода статьи для проверки заполнения тех или иных полей, а также выводить поля, фильтруя их по значению и комментарию.
  • При внесении изменений в файл «publish.php» в стандартных тегах <txp:article> и <txp:article_custom> появляется возможность фильтровать статьи по интересующим полям, а также сокращается число запросов к БД при выводе перечня статей.

Установка модуля

Для установки модуля необходимо проделать следующие операции:

  1. В каталоге textpattern сайта создать подкаталоги «plugins/otg_cicada/» и скопировать туда файлы «otg_cicada.css» (файл со стилями элементов блока полей) и «otg_cicada.js» (функции для добавления, перемещения и удаления блоков полей). В принципе, можно создать и свою папку (но в каталоге «…/textpattern/»), но тогда нужно будет вручную прописать путь к этой директории в коде плагина после установки.
  2. Установить и активировать плагин из файла «otg_cicada_fields.txt».
  3. В разделе «Extensions» на появившейся закладке «Поля для статей» в пункте «Настройки» нужно нажать на кнопку «Создать таблицы в БД». Будут созданы две таблицы с установленным в настройках TxP префиксом: «…txp_otg_fields» и «…txp_otg_mapping_fields».
  4. Если требуется возможность фильтровать статьи в тегах <txp:article> и <txp:article_custom>, а также хочется сократить число запросов к БД при выводе списка статей, то нужно внести изменения в файл «…/textpattern/publish.php». Файл с уже внесёнными правками для версии TxP 4.0.8 прилагается. Кроме этого в файле «publish.txt» содержатся сведения для ручного внесения изменений в оригинальный файл.

Использование модуля

1. В интерфейсе управления TxP

После установки и активации модуля и создания требуемых таблиц в БД в разделе «Extensions» на закладке «Поля для статей» появится пункт «Перечень полей», активировав который можно работать с перечнем полей: создавать новые группы и поля, изменять, перемещать и удалять существующие (скриншот).

В параметрах поля можно указать: имя (для использования при отборе статей и в тегах статьи), название, признак необходимости обработки модулем Textile значения и комментария к полю и произвольное описание поля (скриншот).

Наконец, в самой статье внизу, после блока анонса статьи и информации о дате и времени создания/изменения, появится блок полей (скриншот), в котором можно добавлять поля, изменять их значения, порядок и задавать комментарии к ним.

2. Отображение полей при выводе статьи

При редактировании шаблона форм статей, а также текста самой статьи доступны два новых тега:

  • <txp:otg_if_field>
  • <txp:otg_field>

Оба эти тега контекстно-зависимые и работают с выводимой в текущий момент статьёй.

<txp:otg_if_field>…</txp:otg_if_field>

С помощью этого тега можно выводить опеределённые части статьи в зависимости от того, указано ли у статьи то или иное поле. Это тег-контейнер, он всегда идёт в паре с закрывающим тегом.

Указать, какое поле и что именно из его содержимого нужно проверить, можно с помощью следующих атрибутов:

  • name — Имя поля (которое в форме редактирования называется «Имя (для ссылок и поиска)»).
  • value — Значение поля.
  • comment — Комментарий к значению поля.
  • empty — Указывает, считать ли пустые поля существующими (по умолчанию «0»). Если empty=«0», то поле с пустым значением будет пропускаться, как если его и не было.

Например, для вывода информации о первоисточнике статьи:

<txp:otg_if_field name="repost_source"> <div class="repost"> Автор статьи: <txp:otg_field name="repost_author" /> Первоисточник: <txp:otg_field name="repost_source" /> </div> </txp:otg_if_field>

<txp:otg_field />

С помощью этого тега можно выводить содержимое заданного поля статьи и комментарий к нему.

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

  • name — имя поля (которое в форме редактирования называется «Имя (для ссылок и поиска)»).
  • value — Значение поля.
  • comment — Комментарий к значению поля.
  • empty — Указывает, считать ли пустые поля существующими (по умолчанию «0»). Если empty=«0», то поле с пустым значением будет пропускаться, как-будто его и не было.
  • template — Шаблон вывода содержимого. В шаблоне можно использовать следующие подстановки:
    • %T — вставить в это место название поля;
    • %V — вставить в это место значение поля;
    • %C — вставить в это место комментарий к значению поля;
    По умолчанию — «%V». Например в качестве шаблона к жанру книги можно указать «жанр: %V», к сборам фильма: «Сборы: %V (%C)»
  • offset — Начиная с какого по счёту поля с подходящими параметрами нужно выводить.
  • limit — Сколько полей с подходящими параметрами нужно выводить.
  • pfx — Строка, предшествующая выводимому шаблону.
  • pfxs — Строка, предшествующая выводимому шаблону, если получено лишь одно значение.
  • pfxm — Строка, предшествующая выводимому шаблону, если получено несколько значений.
  • pfxn — Строка, предшествующая выводимому шаблону, если значений не найдено вовсе.
  • delimiter — разделитель значений.

Например, для вывода информации об авторах статьи:

<txp:otg_field name="author" pfxs="Автор: " pfxm="Авторы: " />

Примечания:

  1. Атрибуты «name», «value», «comment», «template» и «empty» имеют краткое обозначение: «n», «v», «c», «t» и «e» соответственно.
  2. В атрибутах «value» и «comment» можно указывать несколько значений, разделённых символом «|». Также для поиска по части значения можно добавлять спецсимвол «%» к искомому значению (или комментарию) поля:
    • abcd — требуется точное совпадение;
    • %abcd% — требуются значения, содержащие (в любой части) «abcd»;
    • abcd% — требуются значения, начинающиеся с «abcd»;
    • %abcd — требуются значения, заканчивающиеся на «abcd».

    Например: <txp:otg_field n="films_cash" t="Сборы в США: %V" c="%сша%" />

Комментарии
  1. (#) Alexthelight, 29.10.2009 18:34

    Очень нужный плагин. Спасибо.

    ps правда пока еще на сайтах не делал, но на денвере уже обкатываю

  2. (#) Виктор, 29.10.2009 22:13

    Если в где либо в настройках плагина возможность сделать поля многострочными?

  3. (#) Olegus t.Gl., 30.10.2009 10:25

    Изначально в настройках поля была возможность назначать тип поля: строка, текст (многострочный) и список (с указанием значений списка), но работало это немного странно, в частности косячила динамическая замена html-элемента при выборе поля другого типа, поэтому в выкладываемой версии я это убрал.
    Если же нужно сделать все поля многострочными, то нужно всего лишь подкорректировать html-код значения поля в переменной $this->html_value, и (если необходимо) — в переменной $this->html_comment для комментария.

  4. (#) Виктор, 31.10.2009 18:46

    Попробую. Спасибо.

  5. (#) Евгений, 08.01.2010 14:59

    О, теперь это один из моих самых любимых плагинов. Спасибо за хорошую работу!

  6. (#) Olegus t.Gl., 28.03.2010 11:31

    Релиз 0.3. Исправлены две ошибки.

  7. (#) megacode, 16.08.2011 19:38

    Отличный плагин! Респект создателю. Особенно горжусь, что в нашей стране есть талантливые разработчики

  8. (#) Анатолий, 28.09.2011 06:54

    Плагин хороший но не могу поставить на textpattern-4.4.1 выдает конфликт с txplib_misc.php Пишет не могу повторно вызвать функцию getCustomFields вызванную ранее в txplib_misc.php как это устранить пока несилен Плиз!

  9. (#) Olegus t.Gl., 28.09.2011 09:14

    Увы, но я свернул всю деятельность по TxP… Так что апдейтов не ждите.

Вы можете оставить какой-нибудь комментарий.
Кроме спама, разумеется…