От автора
Существующий в 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> появляется возможность фильтровать статьи по интересующим полям, а также сокращается число запросов к БД при выводе перечня статей.
Установка модуля
Для установки модуля необходимо проделать следующие операции:
- В каталоге textpattern сайта создать подкаталоги «plugins/otg_cicada/» и скопировать туда файлы «otg_cicada.css» (файл со стилями элементов блока полей) и «otg_cicada.js» (функции для добавления, перемещения и удаления блоков полей). В принципе, можно создать и свою папку (но в каталоге «…/textpattern/»), но тогда нужно будет вручную прописать путь к этой директории в коде плагина после установки.
- Установить и активировать плагин из файла «otg_cicada_fields.txt».
- В разделе «Extensions» на появившейся закладке «Поля для статей» в пункте «Настройки» нужно нажать на кнопку «Создать таблицы в БД». Будут созданы две таблицы с установленным в настройках TxP префиксом: «…txp_otg_fields» и «…txp_otg_mapping_fields».
- Если требуется возможность фильтровать статьи в тегах <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="Авторы: " />
Примечания:
- Атрибуты «name», «value», «comment», «template» и «empty» имеют краткое обозначение: «n», «v», «c», «t» и «e» соответственно.
- В атрибутах «value» и «comment» можно указывать несколько значений, разделённых символом «|». Также для поиска по части значения можно добавлять спецсимвол «%» к искомому значению (или комментарию) поля:
- abcd — требуется точное совпадение;
- %abcd% — требуются значения, содержащие (в любой части) «abcd»;
- abcd% — требуются значения, начинающиеся с «abcd»;
- %abcd — требуются значения, заканчивающиеся на «abcd».
Например:
<txp:otg_field n="films_cash" t="Сборы в США: %V" c="%сша%" />
Очень нужный плагин. Спасибо.
ps правда пока еще на сайтах не делал, но на денвере уже обкатываю
Если в где либо в настройках плагина возможность сделать поля многострочными?
Изначально в настройках поля была возможность назначать тип поля: строка, текст (многострочный) и список (с указанием значений списка), но работало это немного странно, в частности косячила динамическая замена html-элемента при выборе поля другого типа, поэтому в выкладываемой версии я это убрал.
Если же нужно сделать все поля многострочными, то нужно всего лишь подкорректировать html-код значения поля в переменной $this->html_value, и (если необходимо) — в переменной $this->html_comment для комментария.
Попробую. Спасибо.
О, теперь это один из моих самых любимых плагинов. Спасибо за хорошую работу!
Релиз 0.3. Исправлены две ошибки.
Отличный плагин! Респект создателю. Особенно горжусь, что в нашей стране есть талантливые разработчики
Плагин хороший но не могу поставить на textpattern-4.4.1 выдает конфликт с txplib_misc.php Пишет не могу повторно вызвать функцию getCustomFields вызванную ранее в txplib_misc.php как это устранить пока несилен Плиз!
Увы, но я свернул всю деятельность по TxP… Так что апдейтов не ждите.