Контентный программинг в PmWiki
ПрограммированиеPmWiki характерна тем, что позволяет слегка программировать прямо в контенте страницы. Сейчас мы научимся выводить дату создания этой страницы, причем месяц будет написан русскими буквами и со склонениями.
Для этого, для текущей страницы, нам понадобится активировать поддержку любых HTML-тегов и немного CSS-кода. Создадим файл /local/Cooks.Articles.Kontentnyj-programming-v-PmWiki.php:
<?php if (!defined('PmWiki')) exit(); Markup( "html-$tag", '>{$var}', '/<(\/?([\w]+)(?![a-z!])(([\'"]).*?\4|.*?)*?)>/ie', "'<:block>'.Keep(PSS('<$1>'))" ); $HTMLHeaderFmt['styles']['Articles.Kontentnyj-programming-v-PmWiki'] = " <style> time {display: none;} div.time span.m-01:before {content: \"января\";} div.time span.m-02:before {content: \"февраля\";} div.time span.m-03:before {content: \"марта\";} div.time span.m-04:before {content: \"апреля\";} div.time span.m-05:before {content: \"мая\";} div.time span.m-06:before {content: \"июня\";} div.time span.m-07:before {content: \"июля\";} div.time span.m-08:before {content: \"августа\";} div.time span.m-09:before {content: \"сентября\";} div.time span.m-10:before {content: \"октября\";} div.time span.m-11:before {content: \"ноября\";} div.time span.m-12:before {content: \"декабря\";} </style>";
Решение в виде Wiki-кода:
<time>{(ftime fmt="%d %b. %Y" when={$Created} locale=ru_RU.utf8 )}</time> <div class='time'>{(ftime fmt="%d <span class='m-%m'></span> %Y" when={$Created} locale=ru_RU.utf8 )}</div> |
19 2019
|
Поясним:
- здесь тег
<time>
сделан для поисковиков, визуально он скрыт; - активация HTML-тегов нужна в основном для того, чтобы сработала конструкция
<span class='m-%m'></span>
Можно придумать и какое-нибудь еще альтернативное решение, позволяющая создавать элемент с переменным классом.