Эта статья была написана в начале 2010 года и впервые опубликована на уже несуществующем сайте.
Предполагалось её использование в учебном процессе для того, что бы показать "что не боги горшки обжигают"
.
Замечательная штука плагины в CMSએ! Ведь, что они позволяют делать? — управлять системой управления контентом. Тавталогия, однако. Как показала практика, возможностей шаблона или, так называемой в WordPress, "темы" не хватает. Впрочем, как и в любой другой серийно производимой продукции (копируемой). Для любого информационщика, кое-что понимающего в "электрических технологиях", всегда хочется больше того, что предлагают "готовые решения". И хотя не могу похвастаться богатым практическим опытом PHP программирования, родной все же С++, да и к WordPressએ всего лишь присматриваюсь, но самое главное в успехе любого предприятия уверенность — "не боги горшки обжигают", и отсутствие сомнений в результате — любая задача по плечу. Поэтому принимаемся совершенствовать свои ресурсы, тем более, что сейчас интересуют, скорее, изящество алгоритма и время, за которое задача будет решена, чем какой-то реальный практический выхлоп. Это первый эксперимент с плагином для WP, а результат Вы уже наблюдаете. Плагин установлен и активирован здесь, в этом блоге.
Обратите внимание, справа-вверху у некоторых слов, например, CMSએ или WordPressએ, встречающихся в этой заметке, наблюдается странный символ એ. Да и подкрашены эти слова как-то интересно, похоже на ссылку. А это и есть ссылка, только "умная" ссылка, с секретом — жмите смело и приоткроется таинственный занавес. Вы окажитесь на страничке Википедии с разъяснением именно этих слов. Если, конечно, они описаны в энциклопедии. А если учесть, что для создания такой "умной" ссылки при записи заметки потребовалось нажать всего по 2 раза на 2 клавиши, всего 4 движения над клавиатурой, вместо ручной HTMLએ-верстки километровых URLએ, то просто замечательный результат! Собственно в это и заключается идея плагина. Итак,
постановка задачи или пожелания в техническое задание
Постольку-поскольку, целевая аудитория блога — школяры, студенты, учителя и преподаватели, т.е. в некотором роде, новички и вечно любопытствующие, то хотелось бы поделиться не только своими знаниями, но опытом всего человечества. Читает читатель читает, натыкается на что-то непонятное, "кликает" мышкой в непонятки, и получает авторитетное разъяснение. Только обязательно нужны авторитетные источники, а лучше всего один, дабы не превратиться в поисковы автомат для уточнения терминов в своих же собственных постах.
Спасет нас энциклопедия, народная электронная энциклопедия — Википедияએ. Концентрированный опыт миллионов читателей, выраженный в статьях, разъясняющих термины самого широкого спектра знаний. Поистине общедоступная, авторитетная многотомная энциклопедия, в которой надо попасть на нужную страницу.
Присутствие авторитетных ссылок в статьях всегда было замечательным способом доказать оригинальность текста — автор думал, слова подбирал, сверял, так сказать, свои мысли и не занимался словоблудием. Кумулятивная адсорбция шедеврального агломератаએ, в простонародии КАШАએ, посмотрели, нет в Вики — словоблудие. Реализовать такую возможность технически сегодня сможет практически любой, знакомый с PHP и CMS, и очень, даже, просто. Для этого надо решить следующие задачи:
- выделить в своем тексте наиболее простым способом термины, которые требую разъяснения из энциклопедии;
- передать значения термина в поисковую машину Вики;
- открыть в новом окне браузера найденную Вики страницу с разъяснениями
Разделы ТЗ о требованиях к аппаратуре и квалификации обслуживающего персонала, совместимости программного обеспечения, технико-экономического обоснования и техники безопасности при работе с ПО пропустим. оставим только функционал.
Анализ задач
Как выделить в тексте термин? Как автоматизировать поиск выделенного термина в Вики и открыть нужную статью в новом окне?
Выделить фрагмент текста проще всего символами, которые не используются в качестве команд форматирования в HTML, например, ''[ и ]''. Слово '' и '' стало нашим термином, который мы хотим найти в Вики. Затем необходимо сформировать командную строку или http-запрос со ссылкой на Вики, вставив туда выделенный фрагмент в качестве аргумент. Далее оформить этот запрос якорями HTML и перед отображением содержимого страницы заменить выделенный фрагмент нашей сформированной строкой.
Механизм реализации
Идея простая и, как говорится, витает в воздухе. Неужели нет кода для WordPress? Поискал, за-Googl-ил — не нашел. Может плохо искал. Но вот для Joomla есть такая мулька. Задача упрощается, алгоритм поиска и замены выделенного фрагмента уже есть. Остается убрать из кода особенности плагина Joomla и вставить туда обвязку плагина WordPress. Так и поступим. Ниже Вы можете сравнить, что было для Joomla и, что получилось WordPress:
Исходный код для Joomla | Результат творческого преобразования |
Показать в отдельном окне | Показать в отдельном окне* |
ПРИМЕЧАНИЕ: * — в тексте все комментарии "Результата творческого преобразования" сделаны на русском языке. Поэтому корректное чтение в отдельном окне возможно только после принудительного выбора кодировки utf-8 вашего браузера
Прежде, чем приступить к реализации надо почитать оригинальную документацию WordPress о том, как писать плагины, так сказать, для общего развития.
Для начала, после знакомства с Сodex WordPress создаем файл gowiki.php. Не знаю, как для кого, но для меня текстовый редактор AkelPad стал основным инструментом в такого рода работах. Рекомендую абсолютно бескорыстно. Записываем заготовку-обвязку плагина:
<?php /* Plugin Name: GoWiki Plugin URI: http://waksoft.16mb.com/download Description: создает ссылку на ресурс wikipedia по выделенному слову Author: Костерин В.В. Version: V1.0 Author URI: http://waksoft.16mb.com */ /* Copyright 2011 Vadim V. Kosterin, (email: waksoft@gmail.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ add_filter(''the_content'', ''go_wiki''); function go_wiki($content) { } ?>
Здесь, конечно, самые важные строки:
add_filter(''the_content'', ''go_wiki''); function go_wiki($content) { }
где на "крючок" вывода содержания ''the_content'' поста прицепляется функция ''go_wiki'', которой в качестве аргумента передается это самое содержание $content, над которым и можно в ней издеваться. Алгоритм издевательства уже есть.
"Исходный код Joomla" рекомендую так же перенести в окно текстового редактора. Тот же Akelpad, он еще умеет считать строчки. До 81 строки описаны особенности плагина Joomla и интернационализация. Беспокоясь только о русских, и забыв про интернационал, смело все удаляем до строк:
// Set the expression to be matched $regex = "#\!(.*?)\#s";
Готово. Сохраняем остатки в буфере обмена, клавиши [Ctrl/Ins], и переносим его, клавиши [Shift/Ins], в файл-заготовку gowiki.php между фигурными скобками описания функции function go_wiki($content).
Заметим, что наш $content — это $row->text. Поэтому смело заменяем все вхождения $row->text на $content. Собственно можно уже пробовать. Записываем наш файл gowiki.php в специально сделанную папку wikigo в /wp-content/plugins, получиться /wp-content/plugins/wikigo.
Собственно, всё! Пользуйтесь люди!
Оригинал: Записки преподавателя
История моего первого плагина WP by Костерин Вадим Валентинович is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.