форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Как написать плагин для Textpattern.
Автор: Rob Sable aka wilshire (США)
перевод. оригинал на английском - здесь
В ответ на многочисленные запросы, которые я видел на 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.
----------------------------------------------------------------------------------------------------------------------------------------------
замечания и вопросы по переводу рассматриваются - здесь
Отредактированно Evgeny (07-05-2005 18:23:33)
Неактивен
Вот еще можно добавить, он-лайн компилятор:
http://www.gopherwood.info/txplugincreator/
Неактивен
bons написал:
Вот еще можно добавить, он-лайн компилятор:
о! какая удобная штука.
Спасибо, bons!
Неактивен
Сейчас ссылка не работает. Нельзя ли выложить "удобную штуку" еще разок?
Неактивен
судя по всему online редактор заброшен своим автором. Воспользуйтесь обычным плагином ied_plugin_composer
Неактивен