Контентный программинг в 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>Можно придумать и какое-нибудь еще альтернативное решение, позволяющая создавать элемент с переменным классом.