Эта статья была написана в начале 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 стал основным инструментом в такого рода работах. Рекомендую абсолютно бескорыстно. Записываем заготовку-обвязку плагина:
Здесь, конечно, самые важные строки:
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.
Собственно, всё! Пользуйтесь люди!
Оригинал: Записки преподавателя