www.textpattern.ru

Статьи и Документация

Как написать плагин для Textpattern?

Автор: Rob Sable aka wilshire (США)
Первоисточник
Дата статьи: 04.01.2005

В ответ на многочисленные запросы, которые я видел на Textpattern Forums
я решил написать небольшое руководство по написанию плагинов к Textpattern.
Хотя я еще относительно недавний пользователь TXP, менее 6 месяцев, я уже написал 8 textpattern плагинов и хаков.
Мой процесс обучения заключался в изучении как подсказок на форумах, так и сайтов единомышленников на TXP.
Имейте в виду, что нижеприведенное – это только мой опыт по написанию плагинов и это не официальное руководство для авторов плагинов или единственно правильный путь их создания. Более того, я 100% уверен что многие из сообщества (community) имеют больше меня навыков в PHP.
Тем не менее, нижеприведенное работает у меня, и, будем надеяться, будет полезным для начинающих авторов плагинов.

Компиляция плагина

Первым делом вам потребуется средство для создания и компилирования вашего плагина. Я рекомендую воспользоваться j|g plugin creator-ом . Этот плагин/хак дает возможность вам компилировать плагины через веб интерфейс TXP. Все что вы должны сделать- это заполнить форму, скопировав ваш код и документацию и – плагин готов.
Если хотите, вы можете воспользоваться “родным” Texpattern Plugin Template .
Кроме того, существует созданный zem-ом усовершенствованный plugin template , в который добавлено несколько приятных улучшений.

Глобальные переменные

Далее вам необходимо ознакомиться с глобальными переменными и функциями, которые существенно облегчат вашу работу.
Первые отлично и подробно описаны ob1 в статье Глобальные переменные в Textpattern .
Вам понадобится использовать их для доступа к глобальным установкам и пользовательским настройкам, переменным типов страниц и статей.
Вид необходимых вам переменных будет зависеть от создаваемого вами типа плагина.
Я надеюсь, что вы уже имеете некоторые базовые знания в PHP перед попыткой написать плагин.

Следующий пункт – это исходный код Textpattern .
Если вам понадобятся обращения к таблицам базы TXP, прочитайте txplib_db.php и воспользуйтесь разнообразными вспомогательными функциями.
Для получения хорошего понимания сущности плагинов, обратите внимание на taghandlers.php.
Каждый их встроенных в Textpattern тэгов по сути – тот же самый плагин.
Например, вы можете найти вызов функции function linklist($atts) {...} код которой стоит за тэгом < txp:linklist / >.
Обратите внимание на соглашения по кодированию, опреденными Dean-ом, чтобы вы могли написать понятный, краткий и стройный код.

Кроме того, вы можете использовать вызов некоторых функций (например, такой как функции permalink) из вашего плагина, чтобы сократить себе работу.

И еще… Просмотрите исходники уже написанных плагинов, там вы можете видеть как авторы применяют преимущества использования вышеупомянутых функций и переменных. Возьмите несколько плагинов, инсталлируйте их и кликните на имя плагина, чтобы увидеть исходный код.
Перед тем, как вы решитесь стать автором задуманного вами плагина, проверьте сайт ресурсов Textpattern и Основной список плагинов и удостоверьтесь в том,
что никто не опередил вас.

Так же вы можете воспользоваться поиском подсказок на форуме Textpattern, там же можно задать свои вопросы.

Пример плагина

А теперь приведем пример и проанализируем простейший плагин.

function rss_hello_world($atts)
{
extract($atts);
$name = isset($name) ? $name : "Anonymous";
$msg = 'Hello World, my name is' . $name;return $msg;
}

Обращение к плагину подобно этому:

<txp:rss_hello_world name="Rob" />

осуществит вывод “Hello World, my name is Rob”.
Этот тэг открывается и закрывается в одном вызове плагина.
Первое, на что вы должны обратить внимание, что массив, обозначенный $atts содержит атрибуты, которые передаются внутри тэга.
Хороший стиль – начальная проверка на нулевые значения атрибутов после извлечения из архива.
Каждый атрибут затем использует то же самое имя, которое определено при вызове тэга.
В нашем случае, если name не определено, будет использоваться “Anonymous”.

Пример еще одного плагина

А теперь пример другого типа плагина.

function rss_if_this($atts, $enclosed)
{
extract($atts);
$that = isset($that) ? $that: "that";
return ($that == "hello") ? parse($enclosed) : '';
}

Обращение к плагину будет:

<txp:rss_if_this that="hello">Hello World</txp:rss_if_this>

Различие между этим примером и предыдущим в том, что если условие в коде плагина принимает значение true, текст или код, расположенный внутри тэга, ( в нашем случае “Hello World” ) будет отображено.
Если условие не выполняется – отображаться ничего не будет.

Последний штрих

Ваш последний шаг – создать HTML документацию, собрать все это вместе и скомпилировать ваш плагин.
Затем, полученный закодированный в base64 результат, сохраните в вашем плагин-файле.

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

Обсуждение этой темы в форуме

 
Rambler's Top100