<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wwoss.direct.quickconnect.to/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>worldwide open-source software</title>
        <description></description>
        <link>https://wwoss.direct.quickconnect.to/</link>
        <lastBuildDate>Fri, 05 Jun 2026 23:45:48 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:logo.png</url>
            <title>worldwide open-source software</title>
            <link>https://wwoss.direct.quickconnect.to/</link>
        </image>
        <item>
            <title>box</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:box&amp;rev=1745070603</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;плагин_box&quot;&gt;Плагин Box&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;pluginrepo_entry&quot;&gt;&lt;div class=&quot;usageInfo&quot;&gt;&lt;div class=&quot;compatibility&quot;&gt;&lt;p class=&quot;label&quot;&gt;Совместим с «Докувики»&lt;/p&gt;&lt;div class=&quot;versions&quot;&gt;&lt;ul&gt;&lt;li class=&quot;&quot;&gt;2024-02-06 &quot;Kaos&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;неизвестно&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;2023-04-04 &quot;Jack Jackrum&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;неизвестно&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;2022-07-31 &quot;Igor&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;неизвестно&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2020-07-29 &quot;Hogfather&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul class=&quot;actions&quot;&gt;&lt;li&gt;&lt;a class=&quot;download&quot; href=&quot;https://github.com/Chris--S/dokuwiki-plugin-box/zipball/master&quot;&gt;Скачать&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;bugs&quot; href=&quot;https://github.com/Chris--S/dokuwiki-plugin-box/issues&quot;&gt;Баг-трекер&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;clearer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;mainInfo&quot;&gt;&lt;p class=&quot;description&quot;&gt;&lt;a class=&quot;media&quot; href=&quot;/doku.php?id=plugins&quot;&gt;&lt;img alt=&quot;plugin&quot; class=&quot;medialeft&quot; align=&quot;left&quot; src=&quot;/lib/plugins/pluginrepo/images/dwplugin.png&quot; width=&quot;60&quot; height=&quot;60&quot; /&gt;&lt;/a&gt; Выделение секций информации с помощью блоков с настраиваемым стилем&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;metaInfo&quot;&gt;&lt;dl&gt;&lt;dt&gt;Последнее обновление:&lt;/dt&gt;&lt;dd&gt;2016-02-17&lt;/dd&gt;&lt;dt&gt;Предоставляет&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=1#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Syntax plugins&quot;&gt;Syntax&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Репозиторий&lt;/dt&gt;&lt;dd&gt;&lt;a class=&quot;urlextern&quot; href=&quot;https://github.com/Chris--S/dokuwiki-plugin-box&quot;&gt;исходный код&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div class=&quot;moreInfo&quot;&gt;&lt;p class=&quot;similar&quot;&gt;Похож на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:note&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:note&quot; data-wiki-id=&quot;wiki:plugin:note&quot;&gt;note&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:wrap&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:wrap&quot; data-wiki-id=&quot;wiki:plugin:wrap&quot;&gt;wrap&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;tags&quot;&gt;Теги: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=boxes#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;boxes&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=style#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;style&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;authorInfo&quot;&gt;&lt;strong&gt;- &lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:usermanager&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:usermanager&quot; data-wiki-id=&quot;wiki:plugin:usermanager&quot;&gt;usermanager&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:config&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:config&quot; data-wiki-id=&quot;wiki:plugin:config&quot;&gt;config&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;Хотя этот плагин по-прежнему работает нормально, его функциональные возможности включены в плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:wrap&quot; class=&quot;wikilink2&quot; title=&quot;plugin:wrap&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:wrap&quot;&gt;Wrap Plugin&lt;/a&gt;.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Этот плагин добавляет в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; блоки, что позволяет выделять особо важные секции в прямоугольниках с настраиваемым стилем, в том числе со скруглёнными углами, Snazzy (разновидность онлайн-открыток с узорным обрамлением), заголовками, настраиваемой шириной (включая процентную). &amp;lt;!– не понятно –&amp;gt; Разметка «ДокуВики» разрешена и внутри блока - там, где все идет хорошо - и внутри заголовка, где следует использовать только текстовую разметку, ссылки, смайлы и тому подобное.
&lt;/p&gt;

&lt;p&gt;
Наиболее часто используемый стиль, вероятно, имеет смысл установить в качестве базового. &lt;a href=&quot;#stylecss&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;Подробнее ниже&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043b\u0430\u0433\u0438\u043d Box&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043b\u0430\u0433\u0438\u043d_box&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2023&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit2&quot; id=&quot;заметки&quot;&gt;Заметки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Мою версию этой страницы, которая может быть обновлена совсем недавно, можно найти &lt;a href=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorial/boxes&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorial/boxes&quot; rel=&quot;ugc nofollow&quot;&gt;здесь&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 24.09.2009 эта ссылка не работает :(&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 28.10.2009 эта ссылка, кажется, теперь работает &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 13.12.2009 опять битая :(&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; 30.01.2010 Скопирован и вставлен ниже код в style.css и syntax.php (./plugins/box/ ..). Работает с последней версией Lemming.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043c\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043c\u0435\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2024-2657&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;благодарности&quot;&gt;Благодарности&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Закругленные углы основаны на &lt;a href=&quot;http://www.cssplay.co.uk/boxes/snazzy.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.cssplay.co.uk/boxes/snazzy.html&quot; rel=&quot;ugc nofollow&quot;&gt;snazzy borders&lt;/a&gt; от Stu Nicholls из &lt;a href=&quot;http://www.cssplay.co.uk&quot; class=&quot;urlextern&quot; title=&quot;http://www.cssplay.co.uk&quot; rel=&quot;ugc nofollow&quot;&gt;CSS Play&lt;/a&gt;, который, в свою очередь, был вдохновлён &lt;a href=&quot;http://pro.html.it/esempio/nifty/&quot; class=&quot;urlextern&quot; title=&quot;http://pro.html.it/esempio/nifty/&quot; rel=&quot;ugc nofollow&quot;&gt;nifty corners&lt;/a&gt; от Alessandro Fulciniti. До развития &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; до 3 версии не было более практичного способа красивой стилизации. В настоящее время в GitHub имеются правки плагина, вводящие более простые &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; 3 - решения.
&amp;lt;!– проверено до сюда –&amp;gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2658-3373&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;синтаксис&quot;&gt;Синтаксис&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Простой box:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;box&amp;gt; содержимое &amp;lt;/box&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Ещё несколько сложных box&amp;#039;ов:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;box 80% round orange|заголовок&amp;gt; Содержимое&amp;lt;/box&amp;gt;
&amp;lt;box 50% left blue&amp;gt;Содержимое&amp;lt;/box|подпись&amp;gt;
&amp;lt;box 60% round #f99 #fc9 #fcc #f60|заголовок&amp;gt;Содержимое&amp;lt;/box|подпись&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Полный синтаксис: 
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;&lt;strong&gt;&amp;lt;box&lt;/strong&gt; &lt;em&gt;width&lt;/em&gt; &lt;em&gt;classes&lt;/em&gt; &lt;em&gt;colours&lt;/em&gt; &lt;strong&gt;|&lt;/strong&gt; текст заголовка&lt;strong&gt;&amp;gt;&lt;/strong&gt; содержимое &lt;strong&gt;&amp;lt;/box&amp;gt;&lt;/strong&gt;&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;width&lt;/em&gt; — любое допустимое значение ширины&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;classes&lt;/em&gt; — любое количество классов, которые используют стили в вашем шаблоне или собственную таблицу стилей плагина для определения внешнего вида коробки. Плагины коробки поставляются со следующими уже определенными классами:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;round&lt;/em&gt; — у коробки будут закругленные углы&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;blue&lt;/em&gt; — синяя цветовая гамма&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;red&lt;/em&gt; — красная цветовая гамма&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;green&lt;/em&gt; — зеленая цветовая гамма&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;orange&lt;/em&gt; — оранжевая цветовая гамма&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;left&lt;/em&gt; — переместить поле влево на странице вики&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;right&lt;/em&gt; — разместить поле прямо внутри вики-страницы&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Если классы не указаны, будут использоваться стили по умолчанию, то есть квадратные углы в цветовой схеме, основанной на цветовой схеме «ДокуВики» по умолчанию.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;colours&lt;/em&gt; — 1–4 цвета в шестнадцатеричном формате &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; или RGB, например: &lt;code&gt;#F00 #fcab94 rgb(255,255,0)&lt;/code&gt;.  Цвета применяются для того, чтобы изменять:&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; фон содержимого&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; фон заголовка&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; внешний фон коробки&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; границы&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
если указано менее четырех цветов, первый цвет используется для отсутствующих цветов. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;текст заголовка&lt;/em&gt; — текст (включая разметку «ДокуВики»), отображаемый над содержимым поля, с отличным стилем.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em&gt;подпись&lt;/em&gt; — текст (без разметки), отображаемый под содержимым поля, с отличным стилем.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Открытие &lt;code&gt;&lt;strong&gt;&amp;lt;box … &amp;gt;&lt;/strong&gt;&lt;/code&gt; включая заголовок, должно быть в одной строке. Содержимое box&amp;#039;ов может занимать столько строк, сколько необходимо.
&lt;/p&gt;

&lt;p&gt;
Посмотрите, как работает плагин &lt;a href=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/test/boxes&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/test/boxes&quot; rel=&quot;ugc nofollow&quot;&gt;здесь&lt;/a&gt;. На странице-образце показаны все стили, доступные в плагине.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3374-6616&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;конфигурация&quot;&gt;Конфигурация&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Плагин не имеет настроек конфигурации, хотя вы можете проверить цветовую схему по умолчанию в &lt;a href=&quot;#stylecss&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;style.css&lt;/a&gt; чтобы убедиться, что она подходит для вашей вики.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6617-6933&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;установка&quot;&gt;Установка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Найдите и установите плагин с помощью &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:extension&quot; class=&quot;wikilink2&quot; title=&quot;plugin:extension&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:extension&quot;&gt;Extension Manager&lt;/a&gt;. 
&lt;/p&gt;

&lt;p&gt;
В качестве альтернативы см. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugins&quot; class=&quot;wikilink2&quot; title=&quot;plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugins&quot;&gt;Plugins&lt;/a&gt; чтобы узнать, как установить плагины вручную. Чтобы установить плагин вручную, загрузите исходный код в папку плагина &lt;code&gt;lib/plugins&lt;/code&gt; чтобы узнать, как установить плагины вручную. Чтобы установить плагин вручную, загрузите исходный код в папку плагина &lt;code&gt;lib/plugins/box&lt;/code&gt;, и установите плагин.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6934-7650&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;источники&quot;&gt;Источники:&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Текущее: &lt;a href=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.zip&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.zip&quot; rel=&quot;ugc nofollow&quot;&gt;zip format (6k)&lt;/a&gt;, &lt;a href=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.tar .gz&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.tar .gz&quot; rel=&quot;ugc nofollow&quot;&gt; формат tar.gz (5k)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Предыдущие версии «ДокуВики»:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; для «ДокуВики» 2006-03-xx &lt;a href=&quot;http://dokuwiki.jalakai.co.uk/plugin-box-2006-03-xx.zip&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.jalakai.co.uk/plugin-box-2006-03-xx.zip&quot; rel=&quot;ugc nofollow&quot;&gt;zip format (5k)&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=http:dokuwiki._jalakai.co.uk_plugin-box-2006-03-xx.tar.gz&quot; class=&quot;wikilink2&quot; title=&quot;http:dokuwiki._jalakai.co.uk_plugin-box-2006-03-xx.tar.gz&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;http:dokuwiki._jalakai.co.uk_plugin-box-2006-03-xx.tar.gz&quot;&gt;tar.gz format (4k)&lt;/a&gt; &lt;strong&gt; ТРЕБУЕТСЯ &lt;a href=&quot;#security_fix_2&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;security fix 2&lt;/a&gt; &lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; для «ДокуВики» 22 сентября 2005 г. &lt;a href=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.2005-11-25.zip&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.jalakai.co.uk/plugin-box.2005-11-25.zip&quot; rel=&quot;ugc nofollow&quot;&gt;zip формат (4k)&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=http:dokuwiki._jalakai.co.uk_plugin-box.2005-11-25.tar.gz&quot; class=&quot;wikilink2&quot; title=&quot;http:dokuwiki._jalakai.co.uk_plugin-box.2005-11-25.tar.gz&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;http:dokuwiki._jalakai.co.uk_plugin-box.2005-11-25.tar.gz&quot;&gt;tar.gz format (3k)&lt;/a&gt; &lt;strong&gt; ТРЕБУЕТСЯ &lt;a href=&quot;#security_fix&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;security fix&lt;/a&gt; &lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438:&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7651-8437&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;список_изменений&quot;&gt;Список изменений&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 11.11.2008 — Добавить print.css, изменить &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; плагина + другие мелкие изменения&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2008-03-03 — Исправление безопасности + добавлена ​​поддержка указания цветов в синтаксисе поля&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2006-04-25 — исправлена ​​XSS-уязвимость&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2006-04-20 — только обновление darcs&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; встроенная разметка обновлена ​​с исправлениями DokuWiki для блока PType&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; исправления в описании синтаксиса&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; незначительные изменения стиля для высот линий&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2006-03-11 — 2006-01-24 Патч применен к не-darcs пакету;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; добавлена ​​поддержка всех единиц длины &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; стили добавлены для поддержки вложенности боксов&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; списки теперь можно включать в коробки&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; 24.01.2006 — только обновление darcs (выпуск пакета состоится до следующего обновления «ДокуВики»)&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; поддержка вложенности ящиков&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; стиль по умолчанию теперь использует подстановки &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; «ДокуВики»&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2005-11-25 — Добавлен текст заголовка (отображается под содержимым основного окна). Добавлены левые и правые стили.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2005-10-25 — Исправлена ​​ошибка, связанная с объединением абзацев в боксы (спасибо, Матиас).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2005-10-17 — Исправлена ​​ошибка в некоторых установках PHP для Windows (спасибо Пабло).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; 2005-10-12 — Выпущено.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043f\u0438\u0441\u043e\u043a_\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;8438-10483&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;исправление_безопасности&quot;&gt;Исправление безопасности&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это исправление применимо только к тем, кто использует подключаемый модуль box&amp;#039;ов более старых версий с версиями «ДокуВики» до марта 2006 г. Те, кто использует «ДокуВики» от марта 2006 г. или более позднюю версию, должны обновить подключаемый модуль, используя приведенные выше списки &lt;a href=&quot;#sources&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;sources&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Также примените Исправление № 2, описанное ниже.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;инструкции&quot;&gt;Инструкции&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; найдите файл &lt;code&gt;lib/plugins/box/syntax.php&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; откройте его для редактирования в текстовом редакторе&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; замените функцию _boxstyle($str) (около строки #150) приведенным ниже кодом.&lt;pre class=&quot;code php&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; _boxstyle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strlen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;re0&quot;&gt;$tokens&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/\s+/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$str&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;                      &lt;span class=&quot;co1&quot;&gt;// limit is defensive&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tokens&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/^\d*\.?\d+(%|px|em|ex|pt|cm|mm|pi|in)$/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;width&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;co1&quot;&gt;// restrict token (class names) characters to prevent any malicious data&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/[^A-Za-z0-9_-]/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;class&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;class&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? &lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;class&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039; &#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$token&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$styles&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; сохраните файл&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Этот скрип ограничивает символы, доступные для использования в именах любых настраиваемых стилей, буквенно-цифровыми символами, а также тире и подчеркиванием (например A-Z, a-z, 0-9, _ -).  Он также обновляет определение ширины поля для поддержки любого допустимого значения длины &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; . Смотрите подробности в &lt;strong&gt;синтаксисе&lt;/strong&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;10484-12762&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;исправление_безопасности_2&quot;&gt;Исправление безопасности 2&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это исправление применяется ко всем версиям плагина до 3 марта 2008 г. Рекомендуется, чтобы пользователи плагина обновили DW и этот плагин до самых последних версий. Для тех, кто желает исправить уязвимость без обновления.
&lt;/p&gt;
&lt;pre class=&quot;code diff&quot;&gt;          case &#039;box_close&#039; : 
            $renderer-&amp;gt;doc .= &amp;quot;&amp;lt;/div&amp;gt;\n&amp;quot;;
&amp;nbsp;
            if &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;$data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
&lt;span class=&quot;re7&quot;&gt;-              $renderer-&amp;gt;doc .= &amp;quot;&amp;lt;p class=&#039;box_caption&#039;&amp;gt;&amp;quot;.$data.&amp;quot;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;/span&gt;
&lt;span class=&quot;re8&quot;&gt;+              $renderer-&amp;gt;doc .= &amp;quot;&amp;lt;p class=&#039;box_caption&#039;&amp;gt;&amp;quot;.$renderer-&amp;gt;_xmlEntities&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;$data&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;.&amp;quot;&amp;lt;/p&amp;gt;\n&amp;quot;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            $renderer-&amp;gt;doc .= $this-&amp;gt;_xhtml_boxclose&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;; 
            break;&lt;/pre&gt;

&lt;p&gt;
Спасибо Энди Уэбберу из группы этического взлома Oracle за обнаружение этого недостатка. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008-03-03 17:46&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 2&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438_2&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;12763-13838&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;что_нужно_сделать&quot;&gt;Что нужно сделать&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u043d\u0443\u0436\u043d\u043e_\u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;13839-13888&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;ошибки&quot;&gt;Ошибки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Боксы могут перекрывать оглавление вверху страницы. Требуется исправление &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; .&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;Ошибка рендеринга в &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; 6.0&lt;/strong&gt; - Запуск плагина box с шаблоном круглого box. Прокрутка (или, если поле достаточно велико, просто обновляется страница) иногда приводит к тому, что строки / блоки поля не обновляются, оставляя цвет фона на дисплее. Удалось воспроизвести проблему на домашней странице box&amp;#039;а «ДокуВики»&lt;a href=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorial/boxes&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorial/boxes&quot; rel=&quot;ugc nofollow&quot;&gt;здесь&lt;/a&gt;. Плохая область кажется больше, если прямоугольник больше (в нем больше текста).   — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#106;&amp;#97;&amp;#64;&amp;#118;&amp;#105;&amp;#98;&amp;#116;&amp;#101;&amp;#99;&amp;#104;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#106;&amp;#97;&amp;#64;&amp;#118;&amp;#105;&amp;#98;&amp;#116;&amp;#101;&amp;#99;&amp;#104;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Jonathan Alexander&lt;/a&gt; 2005-12-06 14:49&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
Нашел исправление, которое, кажется, работает для меня от  &lt;a href=&quot;http://www.communitymx.com/content/article.cfm?page=2&amp;amp;cid=C37E0&quot; class=&quot;urlextern&quot; title=&quot;http://www.communitymx.com/content/article.cfm?page=2&amp;amp;cid=C37E0&quot; rel=&quot;ugc nofollow&quot;&gt;communitymx&lt;/a&gt; (спасибо Google) просто вставил код ниже под объявлением  «div.box .box_content» в style.css выше.&lt;/div&gt;&lt;/blockquote&gt;
&lt;pre class=&quot;code&quot;&gt;/* Hides from IE5-mac \*/
* HTML .div.box.box_content {height: 1%;}
/* End hide from IE5-mac */&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Отсутствуют &amp;lt;/p&amp;gt;s (больше &lt;a href=&quot;http://validator.w3.org&quot; class=&quot;urlextern&quot; title=&quot;http://validator.w3.org&quot; rel=&quot;ugc nofollow&quot;&gt;W3C-предупреждений&lt;/a&gt;):&lt;/strong&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;box&amp;gt;
foo

bar
&amp;lt;/box&amp;gt;&lt;/pre&gt;

&lt;p&gt;
 приводит к этому &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;: 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;div class=&amp;#039;box_content&amp;#039;&amp;gt;&amp;lt;p&amp;gt; foo
&amp;lt;p&amp;gt;
bar 
&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;

&lt;p&gt;
 как видите, одного &amp;lt;/p&amp;gt; не хватает. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#98;&amp;#101;&amp;#114;&amp;#110;&amp;#100;&amp;#64;&amp;#98;&amp;#122;&amp;#101;&amp;#100;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#98;&amp;#101;&amp;#114;&amp;#110;&amp;#100;&amp;#64;&amp;#98;&amp;#122;&amp;#101;&amp;#100;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Bernd Zeimetz&lt;/a&gt; 2007-03-03 02:39 CET&lt;/em&gt; &lt;br/&gt;
&lt;strong&gt;Решение CET&lt;/strong&gt;: измените две строки в рендере функции (рядом с &amp;#039;box_open&amp;#039;): 
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;---&lt;/span&gt; syntax&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;php  &lt;span class=&quot;nu0&quot;&gt;2008&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu8&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;44&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;08.000000000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu8&quot;&gt;0100&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;+++&lt;/span&gt; syntax&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;php&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt;  &lt;span class=&quot;nu0&quot;&gt;2008&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu8&quot;&gt;02&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;27&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;55&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu19&quot;&gt;23.000000000&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu8&quot;&gt;0100&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;@@&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;129&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;129&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@@&lt;/span&gt;
           &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;box_open&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;   
             &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;title_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                 &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;title_mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;                &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/p&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;lt;div class=&#039;box_content&#039;&amp;gt;&amp;lt;p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;                &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/p&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;lt;div class=&#039;box_content&#039;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;                &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_xhtml_boxopen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;div class=&#039;box_content&#039;&amp;gt;&amp;lt;p&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;                &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_xhtml_boxopen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;div class=&#039;box_content&#039;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
             &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
             &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
 строки, начинающиеся с «-» являются исходными строками, строки «+»- новыми. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#115;&amp;#116;&amp;#101;&amp;#102;&amp;#97;&amp;#110;&amp;#64;&amp;#107;&amp;#117;&amp;#99;&amp;#104;&amp;#108;&amp;#105;&amp;#110;&amp;#103;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#116;&amp;#101;&amp;#102;&amp;#97;&amp;#110;&amp;#64;&amp;#107;&amp;#117;&amp;#99;&amp;#104;&amp;#108;&amp;#105;&amp;#110;&amp;#103;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Stefan Kuchling&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Этот патч добавлен в последнюю версию плагина. Спасибо Бернд и Стефан за ваши усилия. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008-03-03 17:46&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;13889-16907&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;подсказки&quot;&gt;Подсказки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;16908-16939&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;альтернативный_синтаксис_и_разрешающая_разметка_в_подписях&quot;&gt;Альтернативный синтаксис и разрешающая разметка в подписях&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Отличный плагин! Я изменил свою копию и подумал, что другим может быть интересно. &lt;a href=&quot;http://robmeerman.co.uk/coding/file_renamer&quot; class=&quot;urlextern&quot; title=&quot;http://robmeerman.co.uk/coding/file_renamer&quot; rel=&quot;ugc nofollow&quot;&gt;Смотреть пример&lt;/a&gt;. &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Изменения:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Изменен синтаксис: &lt;code&gt;&lt;strong&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/strong&gt; width classes | title ::: &lt;em&gt;content&lt;/em&gt; ::: caption &lt;strong&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/strong&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разметка разрешена в подписях&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Заголовок и подпись могут занимать несколько строк (т. е. несколько абзацев).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ширина может быть указана в %, px, em или ex &lt;em&gt;(теперь включено в версию выпуска)&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Возможность разместить разметку в подписи хороша, когда вы хотите привлечь внимание к примечанию, скажем, об альтернативной версии какого-либо программного обеспечения - это выглядит очень хорошо, если в подписи есть ссылка для скачивания.
&lt;/p&gt;

&lt;p&gt;
Он хорошо работает на моем сайте, и единственная проблема, с которой он, кажется, заключается в том, что я не могу вкладывать box&amp;#039;ы (не знаю почему).
&lt;/p&gt;

&lt;p&gt;
Полный код см. в разделе: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:boxes_mod&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:boxes_mod&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:boxes_mod&quot;&gt;Модифицированные Box&amp;#039;ы&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
 — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#114;&amp;#111;&amp;#98;&amp;#101;&amp;#114;&amp;#116;&amp;#46;&amp;#109;&amp;#101;&amp;#101;&amp;#114;&amp;#109;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#114;&amp;#111;&amp;#98;&amp;#101;&amp;#114;&amp;#116;&amp;#46;&amp;#109;&amp;#101;&amp;#101;&amp;#114;&amp;#109;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Robert Meerman&lt;/a&gt; 2006/02/24 17:13&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Привет, Роберт! Вы пробовали свой синтаксис с патчем вложенности, я кратко посмотрел на ваш код и не увидел ничего, что должно препятствовать вложению. Ура  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-02-24 19:26&lt;/em&gt; &lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u0432 \u043f\u043e\u0434\u043f\u0438\u0441\u044f\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439_\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441_\u0438_\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f_\u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0430_\u0432_\u043f\u043e\u0434\u043f\u0438\u0441\u044f\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;16940-19012&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;backporting_на_2005-07-13&quot;&gt;Backporting на 2005-07-13&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Вот что я сделал для резервного копирования этого плагина в выпуск 2005-07-13.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Добавьте style.css tв конец вашего шаблона &lt;code&gt;design.css&lt;/code&gt; и &lt;code&gt;print.css&lt;/code&gt;:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;$ cd .../lib/plugins/box
$ cat style.css &amp;gt;&amp;gt; ../../tpl/template_name/design.css
$ cat style.css &amp;gt;&amp;gt; ../../tpl/template_name/print.css&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Примените следующий патч:&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;code&quot;&gt;--- box-orig/syntax.php 2005-11-24 13:28:17.000000000 -0800
+++ box/syntax.php      2005-12-16 14:52:48.000000000 -0800
@@ -45,6 +45,19 @@
 
     function getType(){ return &amp;#039;container&amp;#039;;}
     function getAllowedTypes() { return array(&amp;#039;container&amp;#039;,&amp;#039;substition&amp;#039;,&amp;#039;protected&amp;#039;,&amp;#039;disabled&amp;#039;,&amp;#039;formatting&amp;#039;,&amp;#039;paragraphs&amp;#039;); }
+
+    function syntax_plugin_box(){
+        global $PARSER_MODES;
+        $this-&amp;gt;allowedModes = array_merge(
+            $PARSER_MODES[&amp;#039;container&amp;#039;],
+            $PARSER_MODES[&amp;#039;substition&amp;#039;],
+            $PARSER_MODES[&amp;#039;protected&amp;#039;],
+            $PARSER_MODES[&amp;#039;disabled&amp;#039;],
+            $PARSER_MODES[&amp;#039;formatting&amp;#039;],
+            $PARSER_MODES[&amp;#039;paragraphs&amp;#039;]
+        );
+    }
+
     function getPType(){ return &amp;#039;normal&amp;#039;;}
     
     // must return a number lower than returned by native &amp;#039;code&amp;#039; mode (200)
@@ -54,9 +67,9 @@
      * Connect pattern to lexer
      */
     function connectTo($mode) {       
-      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box&amp;gt;(?=.*?&amp;lt;/box.*?&amp;gt;)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);
-      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box\s[^\r\n\|]*?&amp;gt;(?=.*?&amp;lt;/box.*?&amp;gt;)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);
-      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box\s[^\r\n\|]*?\|(?=[^\r\n]*?&amp;gt;.*?&amp;lt;/box.*?&amp;gt;)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);      
+      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box&amp;gt;(?=.*?\x3C/box.*?\x3E)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);
+      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box\s[^\r\n\|]*?&amp;gt;(?=.*?\x3C/box.*?\x3E)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);
+      $this-&amp;gt;Lexer-&amp;gt;addEntryPattern(&amp;#039;&amp;lt;box\s[^\r\n\|]*?\|(?=[^\r\n]*?&amp;gt;.*?\x3C/box.*?\x3E)&amp;#039;,$mode,&amp;#039;plugin_box&amp;#039;);      
     }
     
     function postConnect() {
@@ -182,4 +195,4 @@
     
 }&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Backporting \u043d\u0430 2005-07-13&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;backporting_\u043d\u0430_2005-07-13&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;19013-21093&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;более_подробный_css_с_дополнительными_параметрами_цвета&quot;&gt;Более подробный CSS с дополнительными параметрами цвета&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Это очень удобный плагин! Я начал экспериментировать с &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, чтобы сделать некоторые нестандартные вещи (я собираюсь использовать этот плагин в 3-4 установках «ДокуВики»), а именно, чтобы скрыть внутреннюю границу и пару других небольших настроек цвета. В итоге я получил кое-что, что, на мой взгляд, было бы более гибко изменять (отдельные определения для отдельных границ), больше прокомментировал (я попытался отметить некоторые разделы немного лучше) и, возможно, более дружественный к &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; (я думаю, что исправил проблему с тем, что один из цветов фона не отображается в &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt; 6).
&lt;/p&gt;

&lt;p&gt;
Я не эксперт в области &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; , поэтому не могу гарантировать, что сделал это на 100% эффективно, но он работает со всеми браузерами, которые поддерживает browsershots.org.
&lt;/p&gt;

&lt;p&gt;
&lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; можно увидеть здесь: &lt;a href=&quot;http://wiki.ryanjacobs.name/public/tech/dokuwiki_box_plugin_css&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.ryanjacobs.name/public/tech/dokuwiki_box_plugin_css&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki.ryanjacobs.name/public/tech/dokuwiki_box_plugin_css&lt;/a&gt;  &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Если кому-то интересно… Ура! — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#114;&amp;#121;&amp;#97;&amp;#110;&amp;#46;&amp;#106;&amp;#97;&amp;#107;&amp;#101;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#114;&amp;#121;&amp;#97;&amp;#110;&amp;#46;&amp;#106;&amp;#97;&amp;#107;&amp;#101;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Ryan Jacobs&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 CSS \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0446\u0432\u0435\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043e\u043b\u0435\u0435_\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439_css_\u0441_\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438_\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438_\u0446\u0432\u0435\u0442\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;21094-22746&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;добавить_поддержку_экспорта_odt&quot;&gt;Добавить поддержку экспорта ODT&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Это добавляет базовую поддержку &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:odt&quot; class=&quot;wikilink2&quot; title=&quot;plugin:odt&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:odt&quot;&gt;OpenOffice/ODT экспорт плагина&lt;/a&gt;; нет цветов; без выравнивания, без причудливого форматирования; но излучается основной контент.
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;$ diff -u syntax.php.dist syntax.php
--- syntax.php.dist        2009-06-22 06:45:22.000000000 +0100
+++ syntax.php        2009-06-24 12:55:14.000000000 +0100
@@ -157,6 +157,45 @@
         }

         return true;
+      } elseif($mode == &amp;#039;odt&amp;#039;){
+          switch ($instr) {
+          case &amp;#039;title_open&amp;#039; :
+            $this-&amp;gt;title_mode = true;
+            $renderer-&amp;gt;table_open(1);
+            $renderer-&amp;gt;tablerow_open();
+            $renderer-&amp;gt;tableheader_open(1, &amp;quot;left&amp;quot;);
+            break;
+
+          case &amp;#039;box_open&amp;#039; :
+            if ($this-&amp;gt;title_mode) {
+              $this-&amp;gt;title_mode = false;
+              $renderer-&amp;gt;tableheader_close();
+              $renderer-&amp;gt;tablerow_close();
+              $renderer-&amp;gt;tablerow_open();
+              $renderer-&amp;gt;tablecell_open();
+            } else {
+              $renderer-&amp;gt;table_open(1);
+              $renderer-&amp;gt;tablerow_open();
+              $renderer-&amp;gt;tablecell_open();
+            }
+            break;
+
+          case &amp;#039;data&amp;#039; :
+            $renderer-&amp;gt;doc .= $renderer-&amp;gt;cdata($data);
+            break;
+
+          case &amp;#039;box_close&amp;#039; :
+            $renderer-&amp;gt;tablecell_close();
+            $renderer-&amp;gt;tablerow_close();
+            $renderer-&amp;gt;table_close();
+            if ($data) {
+              $renderer-&amp;gt;p_open(&amp;#039;legendcenter&amp;#039;);
+              $renderer-&amp;gt;doc .= $renderer-&amp;gt;cdata($data);
+              $renderer-&amp;gt;p_close();
+            }
+            break;
+        }
+        return true;
       }
       return false;
     } &lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 ODT&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c_\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443_\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430_odt&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;22747-24636&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;обсуждение&quot;&gt;Обсуждение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Спасибо за плагин. У меня вопрос, могу ли я что-то сделать, чтобы сохранить пустую строку в исходном тексте без использования синтаксиса &amp;#039;\\&amp;#039; или любого другого редактирования исходного текста? Спасибо и пока
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:pronto&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:pronto&quot; rel=&quot;nofollow&quot;&gt;pronto&lt;/a&gt; &lt;em&gt;2014-07-30 11:31&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Спасибо за плагин, выглядит действительно здорово. Однако я хочу использовать его для выделения различного контента. Например, я хотел бы использовать &amp;lt;math&amp;gt;, чтобы выделить математику. Как мне изменить источник для синтаксического анализа другого класса &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; на &amp;lt;math&amp;gt;?
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Вам нужно изменить базовый шаблон (в connectTo и postConnect) на математический из окна. Для каждого другого шаблона выхода вам понадобится другой плагин, поэтому необходимо изменить имя плагина и ссылки на него в connectTo и postConnect. Лучше всего использовать &amp;lt;box math&amp;gt;… &amp;lt;/box&amp;gt;, &amp;lt;box somethingelse&amp;gt; … &amp;lt;/box&amp;gt; и настроить / добавить имена стилей так, чтобы соответствующие цвета и углы отображались для конкретного имени. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2005-10-29 10:07&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Вместо того, чтобы использовать множество различных предопределенных стилей, как насчет использования синтаксиса, аналогичного цветовому плагину phpBB, и позволить пользователю точно определять свой выбор цветов?  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#119;&amp;#101;&amp;#98;&amp;#109;&amp;#97;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#64;&amp;#108;&amp;#97;&amp;#106;&amp;#122;&amp;#97;&amp;#114;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#119;&amp;#101;&amp;#98;&amp;#109;&amp;#97;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#64;&amp;#108;&amp;#97;&amp;#106;&amp;#122;&amp;#97;&amp;#114;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;ta&amp;#039; Lajzar&lt;/a&gt; 2005-10-30 02:16&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Может быть. Я не хотел определять стили как цвета. Было бы лучше выбирать имена стилей семантически, например, ошибка, предупреждение, информация, синтаксис, формулы, предупреждение и т. д. Однако значение каждого стиля блока, вероятно, изменится от вики к вики, поэтому я дал им нейтральные, но информативные имена. Для всего этого я рассмотрю возможность добавления необязательного синтаксиса для тех, кто этого хочет. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2005-10-30 10:39&lt;/em&gt;&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Но если люди используют блоки на странице, то есть &lt;code&gt;included&lt;/code&gt;, они могут так же легко получить семантический контекст, и это сохраняет дополнительную гибкость свободно определяемых цветов для синтаксиса блока.  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#119;&amp;#101;&amp;#98;&amp;#109;&amp;#97;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#64;&amp;#108;&amp;#97;&amp;#106;&amp;#122;&amp;#97;&amp;#114;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#119;&amp;#101;&amp;#98;&amp;#109;&amp;#97;&amp;#115;&amp;#116;&amp;#101;&amp;#114;&amp;#64;&amp;#108;&amp;#97;&amp;#106;&amp;#122;&amp;#97;&amp;#114;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;ta&amp;#039; lajzar&lt;/a&gt; 2005-10-31 07:27&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
В последнюю версию добавлена ​​индивидуальная цветовая спецификация. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008-03-03 17:46&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Код, возвращаемый плагином, на самом деле не является стандартным XHTML, потому что все теги B пусты. Чтобы исправить это, вы должны написать &amp;amp; nbsp; во всех тегах b в строках 
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$html&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;  &amp;lt;b class=&#039;xtop&#039;&amp;gt;&amp;lt;b class=&#039;xb1&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb2&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb3&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb4&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/b&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;//and&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$html&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;  &amp;lt;b class=&#039;xbottom&#039;&amp;gt;&amp;lt;b class=&#039;xb4&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb3&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb2&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b class=&#039;xb1&#039;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/b&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Насколько мне известно, стандарт xhtml не возражает против пустых элементов (см. &lt;a href=&quot;http://www.w3.org/TR/xhtml1/#C_3&quot; class=&quot;urlextern&quot; title=&quot;http://www.w3.org/TR/xhtml1/#C_3&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.w3.org/TR/xhtml1/#C_3&lt;/a&gt; и валидатор w3c не помечает их как ошибку или предупреждение. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2005-10-31 15:17&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Плагин Box у меня не работает. Я выполняю новую установку «ДокуВики» 09.03.2006 без каких-либо других правок, плагинов или шаблонов. Плагин Box был установлен через менеджер плагинов. &lt;a href=&quot;http://www.ssdonline.us/wiki/doku.php?id=wiki:playground&quot; class=&quot;urlextern&quot; title=&quot;http://www.ssdonline.us/wiki/doku.php?id=wiki:playground&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.ssdonline.us/wiki/doku.php?id=wiki:playground&lt;/a&gt; — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#115;&amp;#109;&amp;#111;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#64;&amp;#118;&amp;#101;&amp;#114;&amp;#105;&amp;#122;&amp;#111;&amp;#110;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#109;&amp;#111;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#64;&amp;#118;&amp;#101;&amp;#114;&amp;#105;&amp;#122;&amp;#111;&amp;#110;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Scott Mouser&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Плагин работает, стили не подхватываются. Я добавил комментарий и несколько идей на страницу вашей игровой площадки. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-03-24 01:22&lt;/em&gt;&lt;br/&gt;
;;&amp;gt;Спасибо. Очистка кеша - это именно то, что нужно для работы. Я не видел этого где-либо еще. Я продолжу и отправлю отчет об ошибке, потому что вы правы, .css должен был быть восстановлен после установки плагина. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#115;&amp;#109;&amp;#111;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#64;&amp;#118;&amp;#101;&amp;#114;&amp;#105;&amp;#122;&amp;#111;&amp;#110;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#109;&amp;#111;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#64;&amp;#118;&amp;#101;&amp;#114;&amp;#105;&amp;#122;&amp;#111;&amp;#110;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Scott Mouser&lt;/a&gt;&lt;/em&gt;&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
В «ДокуВики» и диспетчер плагинов внесены исправления, позволяющие истечь срок хранения кеша и гарантировать, что новый &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; будет сгенерирован после установки любого плагина. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-04-19 03:14&lt;/em&gt;&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;del&gt;Может кто-нибудь опубликовать ЗДЕСЬ, как очистить кеш, потому что &lt;a href=&quot;http://www.ssdonline.us&quot; class=&quot;urlextern&quot; title=&quot;http://www.ssdonline.us&quot; rel=&quot;ugc nofollow&quot;&gt;www.ssdonline.us&lt;/a&gt; похоже, не работает.&lt;/del&gt;&lt;br/&gt;
Я уже разобрался с этим, а для всех остальных используйте плагин &lt;strong&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:cacherevisionseraser&quot; class=&quot;wikilink2&quot; title=&quot;plugin:cacherevisionseraser&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:cacherevisionseraser&quot;&gt;Cache and Revisions Eraser&lt;/a&gt;&lt;/strong&gt;!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
—-
&lt;/p&gt;

&lt;p&gt;
Этот плагин имеет &lt;strong&gt;XSS-уязвимость&lt;/strong&gt;!
&lt;/p&gt;

&lt;p&gt;
Попробуйте это в &lt;abbr title=&quot;Internet Explorer&quot;&gt;IE&lt;/abbr&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;box &amp;#039; style=&amp;quot;background-image:url(javascript:alert(&amp;#039;bla&amp;#039;))&amp;quot;&amp;gt;
  XSS test
&amp;lt;/box&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Это исправление работает для меня (строки 160-168):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;      foreach ($tokens as $token) {
          if (preg_match(&amp;#039;/^\d*\.?\d+(%|px|em|ex|pt|cm|mm|pi|in)$/&amp;#039;, $token)) {
            $styles[&amp;#039;width&amp;#039;] = $token;
            continue;
          }
	  $token = trim(ereg_replace(&amp;#039;[^a-zA-Z0-9_-]&amp;#039;,&amp;#039;&amp;#039;,$token));            // &amp;lt;&amp;lt;-- this is new line
          $styles[&amp;#039;class&amp;#039;] = (isset($styles[&amp;#039;class&amp;#039;]) ? $styles[&amp;#039;class&amp;#039;].&amp;#039; &amp;#039; : &amp;#039;&amp;#039;).$token;
      }&lt;/pre&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Спасибо. Обновлены основные скрипты и источники плагинов. Также см.&lt;a href=&quot;#исправление_безопасности&quot; title=&quot;wiki:plugin:box ↵&quot; class=&quot;wikilink1&quot;&gt;Исправление безопасности&lt;/a&gt;. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-04-25 18:17&lt;/em&gt;.  &lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Обновление плагина незаметно перезаписывает style.css. Есть ли решение с сохранением в локализованном style.css? Например, каталог локализации, который перекрывает любые свойства &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; ? Спасибо.  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#98;&amp;#117;&amp;#114;&amp;#116;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#109;&amp;#105;&amp;#97;&amp;#109;&amp;#105;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#98;&amp;#117;&amp;#114;&amp;#116;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#109;&amp;#105;&amp;#97;&amp;#109;&amp;#105;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Burt Rosenberg&lt;/a&gt; 2006-05-22 02:56&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Как насчет &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:css&quot; class=&quot;wikilink2&quot; title=&quot;devel:css&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:css&quot;&gt;./conf/userstyle.css&lt;/a&gt;? Кажется, это работает. Теперь, чтобы выяснить макрос url () при обработке файла .css  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#98;&amp;#117;&amp;#114;&amp;#116;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#109;&amp;#105;&amp;#97;&amp;#109;&amp;#105;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#98;&amp;#117;&amp;#114;&amp;#116;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#109;&amp;#105;&amp;#97;&amp;#109;&amp;#105;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Burt Rosenberg&lt;/a&gt; 2006-05-22 04:12&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Я хотел бы использовать &lt;code&gt;===== Level 2 Headline =====&lt;/code&gt; внутри &lt;code&gt;&amp;lt;box&amp;gt;…&amp;lt;/box&amp;gt;&lt;/code&gt;. Как я могу это сделать? Заранее спасибо.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 В настоящее время вы не можете, по крайней мере, не напрямую. Должна быть возможность использовать синтаксис &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:include&quot; class=&quot;wikilink2&quot; title=&quot;plugin:include&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:include&quot;&gt;include плагина&lt;/a&gt; внутри box&amp;#039;а.  Включенная страница будет отображаться внутри box&amp;#039;а. &lt;br/&gt;
&lt;br/&gt;
Note: It would be best to use my &lt;a href=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorials/include&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/tutorials/include&quot; rel=&quot;ugc nofollow&quot;&gt;альтернативный include плагин&lt;/a&gt; поскольку он не пытается объединить включенную страницу в структуру раздела текущей страницы, что может дать неожиданные результаты. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-06-16 01:41&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
Это именно то, что я сделал, но я не знал о вашей «альтернативной» версии плагина include, поэтому я взломал исходную :)&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Похоже, что слой для блока закрывает блок оглавления, если &lt;code&gt;&amp;lt;box&amp;gt;&amp;lt;/box&amp;gt;&lt;/code&gt; в первом или двух абзацах (содержание, конечно, зависит).
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Да. Я добавил это в баги. Я предполагаю, что исправление &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; требуется либо для &lt;abbr title=&quot;Table of Contents&quot;&gt;TOC&lt;/abbr&gt;, либо для коробки. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-07-04 23:42&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Я думаю, вы должны упомянуть, что плагин будет работать только в том случае, если в конфигурации «ДокуВики» включен параметр «Разрешить встроенный HTML» . Я просто потратил целую вечность, задаваясь вопросом, почему я не могу заставить его работать, пока не понял это. &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_5.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-\&quot; /&gt; — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#120;&amp;#120;&amp;#120;&amp;#109;&amp;#97;&amp;#100;&amp;#114;&amp;#97;&amp;#120;&amp;#120;&amp;#120;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#120;&amp;#120;&amp;#120;&amp;#109;&amp;#97;&amp;#100;&amp;#114;&amp;#97;&amp;#120;&amp;#120;&amp;#120;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;madra&lt;/a&gt; 2006-08-05&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Не требует включения «Разрешить встроенный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; ». Однако при редактировании файлов конфигурации вики истечет срок действия всех кешей «ДокуВики», что вызовет регенерацию страниц и &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; . И то, и другое необходимо для появления box&amp;#039;ов. Как упоминалось выше, это известная ошибка, исправленная в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:changes#release_2006-11-06&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:changes&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:changes&quot;&gt;release 2006-11-06&lt;/a&gt; &amp;amp; и предыдущих выпусках-кандидатах.&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
&lt;br/&gt;

&amp;lt;box 90% green round&amp;gt;
&lt;br/&gt;

У меня небольшая проблема с коробками, и мне было интересно, может ли кто-нибудь мне помочь? Когда я помещаю рамку на страницу и пытаюсь поставить некоторый интервал для новых строк после рамки с обычной разметкой, кажется, что она отображается неправильно. Текст всегда отображается справа от поля, что бы я ни пытался.
&lt;br/&gt;

Я также заметил, что на этом сайте, похоже, нет необходимости использовать типичную разметку для новой строки. Это почему?
&lt;br/&gt;

&amp;lt;/box&amp;gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Ящики, стилизованные влево или вправо, перемещаются. Очищенный элемент должен появиться после поля, чтобы не допустить появления следующего содержимого рядом с ним. Возможно, вам удастся что-то поработать с плагином div / span. Я не уверен, что вы имели в виду в своем последнем предложении. Вам нужно только использовать &lt;br/&gt;
для одиночного разрыва строки в абзаце или для добавления дополнительных разрывов строки между абзацами. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2006-08-15 09:33&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
Благодарим вас за обновление, Крис, но я не уверен, что вы имеете в виду под очищенным элементом? Значит, без плагина div / span нет способа решить проблему?
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Вы также можете использовать &lt;strong&gt;clearfloat плагин&lt;/strong&gt; (ищите его в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugins&quot; class=&quot;wikilink2&quot; title=&quot;plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugins&quot;&gt;plugins&lt;/a&gt;). Другие предлагали делать это через &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:entities&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:entities&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:entities&quot;&gt;entities&lt;/a&gt; (к сожалению, я нигде не нашел такого предложения). Просто поставьте что-то вроде этого &lt;pre class=&quot;code&quot;&gt;~CL~    &amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;
 в &lt;code&gt;conf/entities.conf&lt;/code&gt; и используйте &lt;code&gt;~CL~&lt;/code&gt; после каждого соответствующего box&amp;#039;а. (Лучше использовать защиту от обновлений &lt;code&gt;conf/entities.local.conf&lt;/code&gt;, и добавлять такие строки, как
&lt;/p&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
&amp;lt;hr&amp;gt;     &amp;lt;hr /&amp;gt;
&amp;lt;br&amp;gt;     &amp;lt;br /&amp;gt;
&amp;lt;hrr&amp;gt;    &amp;lt;hr style=«clear:both» /&amp;gt;
&amp;lt;brr&amp;gt;    &amp;lt;br style=«clear:both» /&amp;gt;
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:rainbow_spike_derpy.ru&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:rainbow_spike_derpy.ru&quot; rel=&quot;nofollow&quot;&gt;dr-yukon&lt;/a&gt; &lt;em&gt;2020-09-06 14:32&lt;/em&gt;)
&lt;/p&gt;

&lt;p&gt;
Что насчет | до и после текста?
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Спасибо за отличный плагин. Мне очень нравятся коробки &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt; . У меня есть одно предложение / отчет об ошибке. Кажется, что текущая реализация ящиков не любит вложенные ящики. Например, хотелось бы иметь что-то подобное.
&lt;/p&gt;
&lt;pre class=&quot;code wiki&quot;&gt;  &amp;lt;box round 840px&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-1.jpg?100|}}&amp;lt;/box| Initial Partition&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-2.jpg?100|}}&amp;lt;/box| 1st Iteration&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-3.jpg?100|}}&amp;lt;/box| 2nd Iteration&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-4.jpg?100|}}&amp;lt;/box| 3rd Iteration&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-5.jpg?100|}}&amp;lt;/box| 4th Iteration&amp;gt;
    &amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-6.jpg?100|}}&amp;lt;/box| 5th Iteration&amp;gt;
  &amp;lt;/box| Creation of the APDF Tree&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Если я это сделаю, я получу перекрывающиеся box&amp;#039;ы. Однако, если я это сделаю:
&lt;/p&gt;
&lt;pre class=&quot;code wiki&quot;&gt;&amp;lt;box round 840px&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/html&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-1.jpg?100|}}&amp;lt;/box| Initial Partition&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-2.jpg?100|}}&amp;lt;/box| 1st Iteration&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-3.jpg?100|}}&amp;lt;/box| 2nd Iteration&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-4.jpg?100|}}&amp;lt;/box| 3rd Iteration&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-5.jpg?100|}}&amp;lt;/box| 4th Iteration&amp;gt;
&amp;lt;box round 120px left&amp;gt;{{xvdm:module:apdf:2d-apdf-overview-6.jpg?100|}}&amp;lt;/box| 5th Iteration&amp;gt;
&amp;lt;html&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/html&amp;gt;
&amp;lt;/box| Creation of the APDF Tree&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Тогда получается то, чего можно было ожидать. Скорее всего, моя работа дает совершенно неверный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;- код, хотя Firefox показывает довольно хорошие результаты &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Пожалуйста, добавьте &lt;code&gt;print.css&lt;/code&gt;. Мне нужно не очень много контента, просто &lt;code&gt;div.box.left{float:left}&lt;/code&gt; так. В настоящее время серия изображений &lt;code&gt;&amp;lt;box 20% left&amp;gt;…&amp;lt;/box&amp;gt;&lt;/code&gt; выглядит довольно странно в режиме печати и занимает много листов без поплавка: left.  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#103;&amp;#118;&amp;#105;&amp;#107;&amp;#116;&amp;#111;&amp;#114;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#118;&amp;#105;&amp;#107;&amp;#116;&amp;#111;&amp;#114;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Viktor Söderqvist&lt;/a&gt; 2007-02-28 05:06&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Добавлен  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008/11/11 06:26&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Переключатель для очистки плавающих элементов будет хорошим вариантом, поскольку я обычно не предпочитаю обтекать поле текстом. Единственный раз, когда я разрешил перенос текста, - это когда мои поля находятся рядом с ToC. Я жестко запрограммировал некоторую очистку с плавающей запятой, поскольку я обычно не хочу, чтобы текст обтекал поля, однако это может испортить ToC Div. Следовательно, переключение было бы здорово.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Это создает плохой XHTML, по-видимому, в div box_content отсутствует закрытие &amp;lt;/p&amp;gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 исправить? &lt;pre class=&quot;code&quot;&gt;143 $renderer-&amp;gt;doc .= &amp;quot;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;\n&amp;quot;;
&amp;lt;/p&amp;gt; was missing&lt;/pre&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Привет - Спасибо за отличный плагин. У меня проблемы с рамками и подписями при печати. Я скопировал plugins / box / style.css → plugins / box / print.css, и он работает, но когда я добавляю заголовок вверху, между верхней частью поля и заголовком вставляется дополнительная строка. Я использую шаблон монокниги.&lt;a href=&quot;http://www.kabissa.org/wiki/doku.php?id=playground&amp;amp;rev=1178805954&amp;amp;mbdo=print&quot; class=&quot;urlextern&quot; title=&quot;http://www.kabissa.org/wiki/doku.php?id=playground&amp;amp;rev=1178805954&amp;amp;mbdo=print&quot; rel=&quot;ugc nofollow&quot;&gt;Щелкните, чтобы увидеть пример на моей вики-площадке&lt;/a&gt;. Буду очень признателен за любые предложения. —&lt;em&gt;&lt;a href=&quot;http://www.saidia.org&quot; class=&quot;urlextern&quot; title=&quot;http://www.saidia.org&quot; rel=&quot;ugc nofollow&quot;&gt;Tobias&lt;/a&gt; (5/10/2007)&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Хороший плагин. Мне интересно, можно ли сделать так, чтобы заголовок работал как заголовок, где в него можно встроить ссылки?
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Привет, у меня много ссылок. Я часто копирую и вставляю. Можно ли сохранить возврат каретки и избежать добавления вручную «\\» в конце каждой новой строки?
Тогда как хороший плагин.
&lt;/p&gt;

&lt;p&gt;
&lt;br/&gt;

Я заметил, что когда я копирую код третьего поля &lt;a href=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/test/boxes&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.jalakai.co.uk/dokuwiki/doku.php/test/boxes&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki.jalakai.co.uk/dokuwiki/doku.php/test/boxes&lt;/a&gt; и вставляю сюда (или в мою «ДокуВики»), текстовое поле находится только на одном линия. Я не включаю подпись &lt;br/&gt;

&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;box green &amp;gt; this is
also 
boxed
&amp;lt;/box|boxed &amp;amp; captioned&amp;gt;&lt;/pre&gt;

&lt;p&gt;
e.g. &lt;strong&gt;&amp;lt;box green &amp;gt; this is
also 
boxed
&amp;lt;/box|boxed &amp;amp; captioned&amp;gt;&lt;/strong&gt;
&lt;br/&gt;
&lt;br/&gt;

На вашей тестовой странице текстовое поле состоит из 3 строк. Почему на вашей странице 1 строчка, а у вас - 3 строчки? Я копирую и вставляю точно такой же исходный код. На вашей странице сохраняется возврат каретки. &lt;br/&gt;

Как я могу вести себя так же? Так что я смогу скопировать и вставить, сохраняя CR.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Да. См. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:linebreak&quot; class=&quot;wikilink2&quot; title=&quot;plugin:linebreak&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:linebreak&quot;&gt;Плагин разрыва строки&lt;/a&gt;  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2007-07-26 13:08&lt;/em&gt;&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Также см. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:xbr&quot; class=&quot;wikilink2&quot; title=&quot;plugin:xbr&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:xbr&quot;&gt;Рендеринг разрыва строки&lt;/a&gt;  — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008/11/11 06:26&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
Привет Крис, Очень красивые и полезные эффекты. Есть мысли о добавлении значка в строку заголовка?&lt;br/&gt;

См., например, &lt;a href=&quot;http://www.headshift.com/&quot; class=&quot;urlextern&quot; title=&quot;http://www.headshift.com/&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.headshift.com/&lt;/a&gt;&lt;br/&gt;

Я просто не понимаю, как они это сделали!&lt;br/&gt;

С уважением, Peter Chan 2007-10-02
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Привет, я пытаюсь использовать коробки в последней версии «ДокуВики» (2006-06-26b), но, похоже, это не работает. Единственное поведение плагина, которое мне удалось определить, - это разметка в заголовках. Если я выделю заголовок жирным шрифтом, он отобразит звездочки. Если бы плагин просто нюхал, не сработала бы разметка? Почему это не сработает? Спасибо. Рик Рейнольдс 16 января 2008 г.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 В настоящее время форматирование субтитров не поддерживается. Однако модифицированный плагин боксов, в котором используется немного другой синтаксис, позволяет форматировать подписи. См. Ссылки выше. — &lt;em&gt;&lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;Christopher Smith&lt;/a&gt; 2008-03-03 17:46&lt;/em&gt;&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
Это верно, но box_mod не обновлен для поддержки DokuWiki 2008-05-05: небольшие ошибки макета, особенно когда на странице больше одного поля… По моему опыту, &amp;lt;box&amp;gt; работает гораздо более плавно. &lt;a href=&quot;mailto:&amp;#103;&amp;#105;&amp;#106;&amp;#115;&amp;#104;&amp;#64;&amp;#115;&amp;#104;&amp;#101;&amp;#114;&amp;#112;&amp;#97;&amp;#110;&amp;#101;&amp;#116;&amp;#46;&amp;#110;&amp;#108;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#105;&amp;#106;&amp;#115;&amp;#104;&amp;#64;&amp;#115;&amp;#104;&amp;#101;&amp;#114;&amp;#112;&amp;#97;&amp;#110;&amp;#101;&amp;#116;&amp;#46;&amp;#110;&amp;#108;&quot;&gt;Gijs van Gemert&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;hr /&gt;

&lt;p&gt;
У меня это начало работать, когда я перешел на шаблон dokucms. С шаблоном по умолчанию у меня это не сработает. 2008-02-11
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Можно ли добавить поддержку абсолютной (или минимальной) высоты ящиков? Я пробовал делать это сам, но моих знаний PHP и &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; недостаточно для реализации этого.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Да, теперь есть поддержка высоты. Проверьте мой модифицированный плагин: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:boxwh&quot; class=&quot;wikilink2&quot; title=&quot;plugin:boxwh&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:boxwh&quot;&gt;boxwh плагин&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
—-
Есть ли шанс разрешить изменение цвета текста (поскольку черный цвет на темных цветах часто нечитаем)? Боб 4 апреля 2008 г.
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Я заметил, что необходимо очистить кеш, чтобы можно было вставить инструкции &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; нового плагина :
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Я последовал советам « ДокуВики» по &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:caching&quot; class=&quot;wikilink2&quot; title=&quot;devel:caching&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:caching&quot;&gt;caching&lt;/a&gt; (кешированию),&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Я коснулся conf / local.php, отредактировал и сохранил …&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Я выбрал встроенный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в форме конфигурации&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
тем не менее, в моем листе &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; нет инструкции &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; div.box , и поле не отображается должным образом. Наконец-то я обнаружил проблему с разрешением файла:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ls -l box/style.css
-rwx------ 1  box/style.css&lt;/pre&gt;

&lt;p&gt;
это нужно исправить в archive.tgz?
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Спасибо за этот плагин.
Я сделал небольшое изменение в трех строках в syntax.php, чтобы создать XHTML-совместимый документ. (Это просто некоторые пропущенные символы…)
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line &lt;span class=&quot;nu0&quot;&gt;133&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_xhtml_boxopen&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;p class=&#039;box_title&#039; &lt;span class=&quot;es4&quot;&gt;{$this-&amp;gt;_title_colours}&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line &lt;span class=&quot;nu0&quot;&gt;139&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/p&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;lt;div class=&#039;box_content&#039; &lt;span class=&quot;es4&quot;&gt;{$this-&amp;gt;_content_colours}&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy0&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;line &lt;span class=&quot;nu0&quot;&gt;153&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;p class=&#039;box_caption&#039; &lt;span class=&quot;es4&quot;&gt;{$this-&amp;gt;_title_colours}&lt;/span&gt;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_xmlEntities&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/p&amp;gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Добавьте пробел между &lt;strong&gt;class=&amp;#039;box_title&amp;#039;&lt;/strong&gt; и &lt;strong&gt;{$this→_title_colours}&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Добавьте пробел между &lt;strong&gt;class=&amp;#039;box_content&amp;#039;&lt;/strong&gt; и &lt;strong&gt;{$this→_content_colours}&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Добавьте пробел между &lt;strong&gt;class=&amp;#039;box_caption&amp;#039;&lt;/strong&gt; и &lt;strong&gt;{$this→_title_colours}&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;em&gt;—&lt;a href=&quot;http://www.cyclotronp.net&quot; class=&quot;urlextern&quot; title=&quot;http://www.cyclotronp.net&quot; rel=&quot;ugc nofollow&quot;&gt;ZebulonT&lt;/a&gt; – 2009-07-05 16:37&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
У меня новая версия dokuwiki (Муравьед). Плагин Box теперь помещает еще один &amp;lt;/div&amp;gt; в конец поля и уничтожает все оставшиеся макеты и стили. Это ошибка плагина box или самой dokuwiki?
&lt;em&gt;Pletiplot – 2010-12-20&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Пожалуйста, исправьте свой &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; . 
&lt;/p&gt;

&lt;p&gt;
Правило @CHARSET «UTF-8»; в вашем print.css недопустимо.
&lt;/p&gt;

&lt;p&gt;
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:flam&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:flam&quot; rel=&quot;nofollow&quot;&gt;flam&lt;/a&gt; &lt;em&gt;2011/01/05 12:03&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Можно ли добавить к нему кнопку закрытия, чтобы использовать ее как уведомление?
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Плагин &lt;strong&gt;Box&lt;/strong&gt; не может правильно работать с плагином &lt;strong&gt;Include&lt;/strong&gt;. Обычно &lt;strong&gt;Box&lt;/strong&gt; хранит любой контент в формате &lt;code&gt;div.box div.xbox div.box_content&lt;/code&gt;. Но &lt;strong&gt;Include&lt;/strong&gt; вставки выпадают в &lt;code&gt;div.box div.xbox&lt;/code&gt;. Возможно, это из-за неправильного состояния &lt;em&gt;getType&lt;/em&gt; и / или &lt;em&gt;getPType&lt;/em&gt;. — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:rainbow_spike_derpy.ru&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:rainbow_spike_derpy.ru&quot; rel=&quot;nofollow&quot;&gt;dr-yukon&lt;/a&gt; &lt;em&gt;2019-01-03 13:26&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;
Базовый движок «Докувики» работает с изображениями только в пикселях. Этот плагин можно использовать как процентное увеличение. Добавьте 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;div.box.img &amp;gt; .xbox &amp;gt; .box_content &amp;gt; a &amp;gt; img {
	width: 100%;
	width: -moz-available;
	width: -webkit-fill-available;
	width: stretch;
}&lt;/pre&gt;

&lt;p&gt;
 в &lt;code&gt;/lib/plugins/box/style.css&lt;/code&gt; и опишите как &lt;code&gt;&amp;lt;box center img 90%&amp;gt;{{your image}}&amp;lt;/box&amp;gt;&lt;/code&gt; для увеличения на экране   — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:rainbow_spike_derpy.ru&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:rainbow_spike_derpy.ru&quot; rel=&quot;nofollow&quot;&gt;dr-yukon&lt;/a&gt; &lt;em&gt;2020-09-06 14:37&lt;/em&gt;
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;24637-51487&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://git.wwoss.ru/https://git.wwoss.ru/VladPolskiy/dokuwiki-plugin-box&quot; class=&quot;interwiki iw_gitea&quot; title=&quot;https://git.wwoss.ru/https://git.wwoss.ru/VladPolskiy/dokuwiki-plugin-box&quot;&gt;https://git.wwoss.ru/VladPolskiy/dokuwiki-plugin-box&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=plugin:chris--s-dokuwiki-plugin-box-001b325.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;plugin:chris--s-dokuwiki-plugin-box-001b325.zip (7 KB)&quot;&gt;chris--s-dokuwiki-plugin-box-001b325.zip&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://&quot; class=&quot;interwiki iw_world&quot; title=&quot;https://&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.dokuwiki.org/ru:plugin:box&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/ru:plugin:box&quot; rel=&quot;ugc nofollow&quot;&gt;Ссылка на оригинальную статью&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;51488-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 19 Apr 2025 13:50:03 +0000</pubDate>
        </item>
        <item>
            <title>blogging</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:tips:blogging&amp;rev=1724651434</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;блог_на_докувики&quot;&gt;Блог на «Докувики»&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Страница в &lt;strong&gt;РАЗРАБОТКЕ&lt;/strong&gt;! Если вы видите, что можно добавить, добавляйте без сомнения! &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Несмотря на то, что &lt;a href=&quot;https://en.wikipedia.org/wiki/ru:Блог&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/ru:Блог&quot;&gt;блоги&lt;/a&gt; не является основным предназначением «Докувики», есть немало &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:plugins&quot; class=&quot;wikilink2&quot; title=&quot;ru:plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:plugins&quot;&gt;плагинов&lt;/a&gt;, позволяющих превратить «Докувики» в полноценную платформу для блога.
&lt;/p&gt;

&lt;p&gt;
На этой странице приведены основные шаги, благодаря которым можно начать деятельность блоггера на движке «Докувики». Здесь также можно узнать, как обойти возможные проблемы.
&lt;/p&gt;

&lt;p&gt;
Желающие найти существующие блоги на основе «Докувики» могут посетить &lt;a href=&quot;http://planet.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;http://planet.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;Planet DokuWiki&lt;/a&gt;, или воспользоваться поиском: &lt;a href=&quot;https://www.google.com/search?q=inurl%3Adoku.php%2Binurl%3Ablog&quot; class=&quot;interwiki iw_google&quot; title=&quot;https://www.google.com/search?q=inurl%3Adoku.php%2Binurl%3Ablog&quot;&gt;inurl:doku.php+inurl:blog&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043b\u043e\u0433 \u043d\u0430 \u00ab\u0414\u043e\u043a\u0443\u0432\u0438\u043a\u0438\u00bb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043b\u043e\u0433_\u043d\u0430_\u0434\u043e\u043a\u0443\u0432\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1153&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;необходимые_плагины&quot;&gt;Необходимые плагины&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В первую очередь стоит поставить несколько плагинов. Основной «набор блоггера» составляют &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:blog&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:blog&quot; data-wiki-id=&quot;wiki:plugin:blog&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:include&quot; data-wiki-id=&quot;wiki:plugin:include&quot;&gt;include&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:pagelist&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:pagelist&quot; data-wiki-id=&quot;wiki:plugin:pagelist&quot;&gt;pagelist&lt;/a&gt;. Они составляют необходимый минимум.
&lt;/p&gt;

&lt;p&gt;
В дополнение к необходимым можно добавить &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:discussion&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:discussion&quot;&gt;discussion&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:linkback&quot; class=&quot;wikilink2&quot; title=&quot;plugin:linkback&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:linkback&quot;&gt;linkback&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:bloglinks&quot; class=&quot;wikilink2&quot; title=&quot;plugin:bloglinks&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:bloglinks&quot;&gt;bloglinks&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:feedmod&quot; class=&quot;wikilink2&quot; title=&quot;plugin:feedmod&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:feedmod&quot;&gt;feedmod&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:avatar&quot; class=&quot;wikilink2&quot; title=&quot;plugin:avatar&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:avatar&quot;&gt;avatar&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:tag&quot; class=&quot;wikilink2&quot; title=&quot;plugin:tag&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:tag&quot;&gt;tag&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Основная масса этих плагинов зависит друг от друга. В помощь начинающим существует &lt;a href=&quot;http://dokuwiki.foosel.org/blogsuite&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.foosel.org/blogsuite&quot; rel=&quot;ugc nofollow&quot;&gt;Blogsuite Bundle Hub&lt;/a&gt;. &lt;strong&gt;Ссылка не действует! ответ 404&lt;/strong&gt; Здесь можно взять самое необходимое в виде одного архива и установить посредством &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:plugin:plugin&quot; class=&quot;wikilink2&quot; title=&quot;ru:plugin:plugin&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:plugin:plugin&quot;&gt;центра управления плагинами&lt;/a&gt; (&lt;strong&gt;Внимание&lt;/strong&gt; плагины в пакете могут быть устаревшими, следите за версиями&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435_\u043f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1154-2377&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;настройка&quot;&gt;Настройка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2378-2409&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;индивидуальный_блог&quot;&gt;Индивидуальный блог&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В этом случае у нас только один пользователь, и один блог, который нужно вести. В &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:blog#configuration&quot; class=&quot;wikilink2&quot; title=&quot;plugin:blog&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:blog&quot;&gt;настройках блога&lt;/a&gt; можно указать пространство имён, в котором будут сохранены записи. По умолчанию там указано &lt;code&gt;:blog&lt;/code&gt;, и этого вполне достаточно для большинства.
&lt;/p&gt;

&lt;p&gt;
Перед созданием блога следует решить, какая страница будет «лицом» блога, и создать её. Если хочется, чтобы блог был на стартовой странице, то ей будет &lt;code&gt;:start&lt;/code&gt;. На ней следует разместить &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:blog#blog&quot; class=&quot;wikilink2&quot; title=&quot;plugin:blog&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:blog&quot;&gt;синтаксическую вставку блога&lt;/a&gt; и сохранить.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{blog&amp;gt;?5}}&lt;/pre&gt;

&lt;p&gt;
Эта вставка отобразит 5 последних записей в блоге. Раз это индивидуальный блог, нет необходимости указывать, из какого пространства имён следует брать записи. Но перед добавлением первой записи следует обратить внимание на пункт конфигурации &lt;code&gt;dateprefix&lt;/code&gt;. При помощи него можно указать, под какими именами будут создаваться новые записи. Достаточно удачной установкой может послужить &lt;code&gt;%Y:%m%d_&lt;/code&gt;. Если вы назовёте запись «Мой новый блог», то страница будет создана под именем &lt;code&gt;blog:2008:0512_мой_новый_блог&lt;/code&gt;. Как видно из примера, это позволяет держать пространство имён блога в порядке.
&lt;/p&gt;

&lt;p&gt;
Чтобы другие не могли редактировать ваш блог, следует обратиться к &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; и назначить там несколько правил (для примера — блог на стартовой странице).
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;start    @ALL 1
start    вашник 16
blog:*   @ALL 1
blog:*   вашник 16&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043b\u043e\u0433&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439_\u0431\u043b\u043e\u0433&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2410-4798&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;многопользовательский&quot;&gt;Многопользовательский&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Это случай, когда мы хотим разрешить пользователям вести свои блоги. Для этого каждый пользователь должен обзавестись своим собственным пространством имён для блога, где только он может распоряжаться содержимым. Для примера возьмём трёх пользователей: Васю, Петю и Машу. Каждый пользователь получает собственное пространство в пространстве &lt;code&gt;:blog&lt;/code&gt; и собственную страницу с лентой там же. Теперь нужно установить права доступа для каждого (к примеру, для Васи):
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;blog:вася    @ALL 1
blog:вася:*  @ALL 1
blog:вася    joey 16
blog:вася:*  joey 16&lt;/pre&gt;

&lt;p&gt;
Now you have to create the page &lt;code&gt;:blog:joey&lt;/code&gt; and insert the following blog plugin syntax to setup the blog.
После этого следует создать страницу пользователю &lt;code&gt;:blog:вася&lt;/code&gt;, куда поместить вставку для блога.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{blog&amp;gt;blog:вася?5}}&lt;/pre&gt;

&lt;p&gt;
То же самое надо повторить для всех остальных пользователей. После этого каждый может начать вести блог.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4799-6328&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;настройка_новостной_ленты&quot;&gt;Настройка новостной ленты&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Одной из важнейших вещей в блоге является RSS-лента. «Докувики» автоматически создаёт все виды лент, однако может потребоваться настроить одну ленту специально для блога.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание:&lt;/strong&gt; С тех пор как «Докувики» стал создавать полноценный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; в лентах, не рекомендуется использовать плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:feed&quot; class=&quot;wikilink2&quot; title=&quot;plugin:feed&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:feed&quot;&gt;feed&lt;/a&gt; (хотя он всё ещё полезен для обсуждений).
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;url_новостной_ленты&quot;&gt;URL новостной ленты&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Необходимо несколько параметров, чтобы создать RSS-ленту. Первый, и самый необходимый — &lt;code&gt;ns&lt;/code&gt;, который ограничит ленту только записями в блоге. Не стоит в RSS давать стартовую страницу — так вы получите все записи в виде одной записи в ленте!
&lt;/p&gt;

&lt;p&gt;
Вот пример простого адреса ленты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://www.example.com/feed.php?ns=blog&amp;amp;num=10&lt;/pre&gt;

&lt;p&gt;
Следует также убедиться, что ссылки на ней ведут к актуальной версии страницы. Это можно установить в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:rss_linkto&quot; class=&quot;wikilink2&quot; title=&quot;config:rss_linkto&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:rss_linkto&quot;&gt;настройках&lt;/a&gt; или передать в внутри адреса:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://www.example.com/feed.php?ns=blog&amp;amp;num=10&amp;amp;linkto=current&lt;/pre&gt;

&lt;p&gt;
Также вполне возможно, следует включить &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:rss_content&quot; class=&quot;wikilink2&quot; title=&quot;config:rss_content&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:rss_content&quot;&gt;HTML&lt;/a&gt; в ленте:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://www.example.com/feed.php?ns=blog&amp;amp;num=10&amp;amp;linkto=current&amp;amp;content=html&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;красивые_адреса_лент_посредством_htaccess&quot;&gt;Красивые адреса лент посредством .htaccess&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Если включено переписывание адресов посредством &lt;code&gt;.htaccess&lt;/code&gt;, то можно добавить специальные правила и получить красивые адреса для лент. Правило для приведённого выше адреса будет выглядеть следующим образом:
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^_feed/(.*) feed.php?ns=$1&amp;amp;num=&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&amp;amp;linkto=current&amp;amp;content=html [QSA,L]&lt;/pre&gt;

&lt;p&gt;
Его можно добавить рядом с правилом для &lt;code&gt;_export&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Теперь ленту можно получить по адресу &lt;code&gt;http://yourdomain.org/_feed/blog&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;автоматическое_обнаружение_лент&quot;&gt;Автоматическое обнаружение лент&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Браузеры могут сами обнаруживать RSS-ленты, анализируя специальные метаданные в &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. По умолчанию «Докувики» предоставляет стандартные ленты сам. В нашем случае предпочтительнее отключить стандартные, а добавлять только собственно ленту блога. Это можно сделать, исправив в используемом &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=template&quot; class=&quot;wikilink2&quot; title=&quot;template&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;template&quot;&gt;шаблоне оформления&lt;/a&gt; &lt;code&gt;main.php&lt;/code&gt;. Вот пример заголовка:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/meta.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;meta&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;text/html; charset=utf-8&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/title.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;title&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;?php tpl_pagetitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;?&amp;gt;&lt;/span&gt; [&lt;span class=&quot;sc2&quot;&gt;&amp;lt;?php echo strip_tags&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;$conf&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;title&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;?&amp;gt;&lt;/span&gt;]&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/title.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;title&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;?php tpl_metaheaders&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;false&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;?&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/link.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;link&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;rel&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;alternate&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;application/rss+xml&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Blog&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/feed.php?ns=blog&amp;amp;amp;linkto=page&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/head.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;head&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Обратите внимание на параметр &lt;code&gt;false&lt;/code&gt;, передаваемый функции tpl_metaheaders. Это подавляет все стандартные теги обнаружения лент.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439 \u043b\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043d\u043e\u0432\u043e\u0441\u0442\u043d\u043e\u0439_\u043b\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6329-10167&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;использование&quot;&gt;Использование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10168-10207&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;черновики&quot;&gt;Черновики&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
С черновыми записями можно обращаться двумя основными способами. Первый способ — завести отдельное пространство имён для черновиков. Чтобы опубликовать статью, достаточно будет скопировать её в блог. Второй способ представляет сам плагин blog. Он позволяет пометить черновик вставкой маркера &lt;code&gt;~~DRAFT~~&lt;/code&gt; в текст перед сохранением. Тогда она не будет отображаться в блоге до тех пор, пока вы снова не уберёте маркер из текста. При использовании этого способа следует также поставить плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:feedmod&quot; class=&quot;wikilink2&quot; title=&quot;plugin:feedmod&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:feedmod&quot;&gt;feedmod&lt;/a&gt;, который удалит черновики из RSS-ленты.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание:&lt;/strong&gt; страницы помеченные как черновики тем не менее будут обнаруживаться при использовании поиска.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;10208-11415&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;управление_комментариями&quot;&gt;Управление комментариями&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:discussion&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:discussion&quot;&gt;discussion&lt;/a&gt; предоставляет панель управления в административном интерфейсе «Докувики», где можно открывать и закрывать обсуждения, а также производить действия над отдельными комментариями.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;11416-11840&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;управление_обратными_ссылками&quot;&gt;Управление обратными ссылками&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Плагин &lt;a href=&quot;http://foosel.org/snippets/dokuwiki/linkback&quot; class=&quot;urlextern&quot; title=&quot;http://foosel.org/snippets/dokuwiki/linkback&quot; rel=&quot;ugc nofollow&quot;&gt;linkback&lt;/a&gt; даёт возможность управлять обратными ссылками через административный интерфейс «Докувики» — удалять их или включать и выключать на отдельных страницах.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c\u0438_\u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;11841-12264&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;управление_метками&quot;&gt;Управление метками&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:tag&quot; class=&quot;wikilink2&quot; title=&quot;plugin:tag&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:tag&quot;&gt;tag&lt;/a&gt; последней версии даёт возможность управлять метками, перестраивать индекс меток через административный интерфейс. Посредством плагина &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:tagentry&quot; class=&quot;wikilink2&quot; title=&quot;plugin:tagentry&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:tagentry&quot;&gt;tagentry&lt;/a&gt; можно получить дополнительные возможности по управлению метками.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043a\u0430\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043c\u0435\u0442\u043a\u0430\u043c\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;12265-12733&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;украшение&quot;&gt;Украшение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043a\u0440\u0430\u0448\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;12734-12771&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;отображение_только_первого_подраздела_страницы&quot;&gt;Отображение только первого подраздела страницы&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Иногда нежелательно отображать всю длинную статью в блоге на первой странице. Обрезать её можно добавив пустой заголовок первого уровня. Чтобы это сработало следует добавить параметр &lt;code&gt;firstseconly&lt;/code&gt; в плагине &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:include&quot; class=&quot;wikilink2&quot; title=&quot;plugin:include&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:include&quot;&gt;include&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;Далее будет длинная статья.

====== ======

Собственно длинная статья здесь.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435_\u0442\u043e\u043b\u044c\u043a\u043e_\u043f\u0435\u0440\u0432\u043e\u0433\u043e_\u043f\u043e\u0434\u0440\u0430\u0437\u0434\u0435\u043b\u0430_\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;12772-13409&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;тонкая_настройка_ленты&quot;&gt;Тонкая настройка ленты&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Стандартная RSS-лента «Докувики» не слишком пригодна для ведения блога. К примеру, она в заголовок ставит название страницы, а не первый заголовок внутри статьи. Это можно исправить при помощи плагина &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:feedmod&quot; class=&quot;wikilink2&quot; title=&quot;plugin:feedmod&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:feedmod&quot;&gt;feedmod&lt;/a&gt;. Добавляет заголовок статьи в ленту, а также включает в новость метки и ссылки на обсуждение. Также можно добавить ссылки для добавления в закладки, для чего стоит отредактировать шаблон «подвала» новости (подробности на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:feedmod&quot; class=&quot;wikilink2&quot; title=&quot;plugin:feedmod&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:feedmod&quot;&gt;feedmod&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Другой простой путь добавить функций — использовать &lt;a href=&quot;http://www.feedburner.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.feedburner.com&quot; rel=&quot;ugc nofollow&quot;&gt;Feedburner&lt;/a&gt;. Зарегистрируйтесь на том сайте, добавьте туда свою ленту (см. &lt;a href=&quot;#url_новостной_ленты&quot; title=&quot;wiki:tips:blogging ↵&quot; class=&quot;wikilink1&quot;&gt;URL новостной ленты&lt;/a&gt;) и добавьте ленту Feedburner в метаданные. Эта операция также перенесёт часть нагрузки с вашего сайта на Feedburner.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u043e\u043d\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043b\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u043e\u043d\u043a\u0430\u044f_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043b\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;13410-14759&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;борьба_со_спамом&quot;&gt;Борьба со спамом&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Спам в комментариях — серьёзная проблема в наши дни. К счастью «Докувики» предоставляет ряд антиспам-плагинов для борьбы с ним. Также поддержка &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:captcha&quot; class=&quot;wikilink2&quot; title=&quot;plugin:captcha&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:captcha&quot;&gt;captcha&lt;/a&gt; встроена в плагин &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:discussion&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:discussion&quot;&gt;discussion&lt;/a&gt;. Всё что нужно — это установить нужные средства и настроить их.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043e\u0440\u044c\u0431\u0430 \u0441\u043e \u0441\u043f\u0430\u043c\u043e\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043e\u0440\u044c\u0431\u0430_\u0441\u043e_\u0441\u043f\u0430\u043c\u043e\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;14760-15277&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;проблемы&quot;&gt;Проблемы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;15278-15307&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;treat_your_filesystem_carefully&quot;&gt;Treat your filesystem carefully&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Treat your filesystem carefully&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;treat_your_filesystem_carefully&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;15308-15356&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;хитрости&quot;&gt;Хитрости&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0425\u0438\u0442\u0440\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;15357-15386&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;правка_неверных_дат&quot;&gt;Правка неверных дат&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
Some timestamp issues I came across:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; As mentioned in the discussion of the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:meta#discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:meta&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:meta&quot;&gt;meta plugin&lt;/a&gt;, feed.php ignores settings of &lt;code&gt;&lt;/code&gt;. (Usually &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=getRecents&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for getRecents()&quot;&gt;getRecents()&lt;/a&gt; from changelog.php is called, which doesn&amp;#039;t seem to support it?) This results in a mismatch between blog listing like &lt;code&gt;{{blog&amp;gt;blog?5}}&lt;/code&gt; and &lt;code&gt;feed.php?ns=blog&amp;amp;num=5&lt;/code&gt;, which is unexpected.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Also, it is currently not possible to let feed.php list only newly created pages (and sort them by descending creation date). (Because getRecents() does provide listing only newly created pages.) I note that this listing &lt;em&gt;is&lt;/em&gt; possible with the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:changes&quot; class=&quot;wikilink2&quot; title=&quot;plugin:changes&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:changes&quot;&gt;changes plugin&lt;/a&gt;, but this code isn&amp;#039;t used in &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=feed.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for feed.php&quot;&gt;feed.php&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; An alternative approach using alphabetic ordering of pages by name could also solve issues if the items have pagenames like &lt;code&gt;:blog:YYYY-MM:DD-pagetitle&lt;/code&gt; or similar. Then the feed.php is consistent with the permalinks of the blog, which would be nice.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
 — &lt;em&gt;Louwrens van Dellen 2010/05/03 23:23&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0445 \u0434\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0430\u0432\u043a\u0430_\u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0445_\u0434\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;15387-16469&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;обсуждение&quot;&gt;Обсуждение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;16470-16502&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;изменение_порядка_следования_обратных_ссылок_и_обуждения_на_странице&quot;&gt;Изменение порядка следования «обратных ссылок» и «обуждения» на странице&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Is it possible (without changing source/templates) to change the order of the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:discussion&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:discussion&quot;&gt;discussion&lt;/a&gt; and the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:linkback&quot; class=&quot;wikilink2&quot; title=&quot;plugin:linkback&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:linkback&quot;&gt;linkback&lt;/a&gt; plugin? If there is no way without editing, could anybody who is more often editing the code than me, give a hint into the right direction? (I am «speaking» &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;/&lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;/PHP)
&lt;/p&gt;

&lt;p&gt;
Thanks,
&lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&amp;#64;&amp;#114;&amp;#98;&amp;#46;&amp;#55;&amp;#98;&amp;#103;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&amp;#64;&amp;#114;&amp;#98;&amp;#46;&amp;#55;&amp;#98;&amp;#103;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Ralf&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u00ab\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a\u00bb \u0438 \u00ab\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f\u00bb \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435_\u043f\u043e\u0440\u044f\u0434\u043a\u0430_\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f_\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445_\u0441\u0441\u044b\u043b\u043e\u043a_\u0438_\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f_\u043d\u0430_\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;16503-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 26 Aug 2024 05:50:34 +0000</pubDate>
        </item>
        <item>
            <title>myedit</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:myedit&amp;rev=1756106589</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;правки_для_этой_конфигурации_dokuwiki&quot;&gt;Правки для этой конфигурации Dokuwiki&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0430\u0432\u043a\u0438_\u0434\u043b\u044f_\u044d\u0442\u043e\u0439_\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-77&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;панель_инструментов&quot;&gt;Панель инструментов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;dokuwiki/inc/toolbar.php&lt;/code&gt;&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:toolbar#пример_правки_панели_инструментов&quot; class=&quot;wikilink1&quot; title=&quot;wiki:toolbar&quot; data-wiki-id=&quot;wiki:toolbar&quot;&gt;Пример правки панели инструментов&lt;/a&gt;
&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;«См.подробности правки»&lt;/summary&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;toolbar.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * Editing toolbar functions
 *
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Andreas Gohr &amp;lt;andi@splitbrain.org&amp;gt;
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; dokuwiki\Extension\Event&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * Prepares and prints an JavaScript array with all toolbar buttons
 *
 * @emits  TOOLBAR_DEFINE
 * @param  string $varname Name of the JS variable to fill
 * @author Andreas Gohr &amp;lt;andi@splitbrain.org&amp;gt;
 */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; toolbar_JSdefines&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$varname&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;re0&quot;&gt;$menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;re0&quot;&gt;$evt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Event&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;TOOLBAR_DEFINE&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$menu&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$evt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;advise_before&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// build button array&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$menu&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_merge&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_merge&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$menu&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;bold.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;**&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;**&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_italic&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;italic.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;i&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;//&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;//&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_underl&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;underline.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;u&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;__&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;__&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_code&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;mono.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;m&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;&#039;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&#039;&#039;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_strike&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;strike.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;d&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;del&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/del&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;coMULTI&quot;&gt;/*Редактируем малоиспользуемый пункт меню &amp;quot;Выбор заголовка&amp;quot;*/&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;picker&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_hs&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;class&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;pk_hl&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
				    &lt;span class=&quot;coMULTI&quot;&gt;/*Убираем во вложеные кнопку &amp;quot;Подставить подпись&amp;quot;*/&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;signature&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_sig&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;sig.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;y&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;coMULTI&quot;&gt;/*Убираем во вложеные кнопку &amp;quot;Заголовок текущего уровня [8]&amp;quot;*/&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;autohead&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_hequal&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;hequal.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;8&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;text&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;mod&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
					&lt;span class=&quot;coMULTI&quot;&gt;/*Убираем во вложеные кнопку &amp;quot;Заголовок меньшего уровня (подзаголовок)[9]&amp;quot;*/&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;autohead&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_hminus&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;hminus.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;9&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;text&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;mod&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;coMULTI&quot;&gt;/*Убираем во вложеные кнопку &amp;quot;Заголовок большего уровня [0]&amp;quot;*/&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;autohead&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_hplus&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;hplus.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;0&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;text&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;mod&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h1&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h1.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;1&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;===== &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; =====\n&#039;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h2.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;2&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;===== &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; =====\n&#039;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h3&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h3.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;3&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;==== &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; ====\n&#039;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h4&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h4.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;4&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;=== &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; ===\n&#039;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_h5&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;h5.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;5&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;== &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039; ==\n&#039;&lt;/span&gt;
                    &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;linkwiz&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_link&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;link.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;l&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;[[&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;]]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;format&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_extlink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;linkextern.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;[[&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;]]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;sample&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;http://example.com|&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_extlink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;formatln&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_ol&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ol.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;  - &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;-&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;formatln&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_ul&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ul.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;open&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;  * &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;close&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;key&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;.&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;insert&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_hr&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;hr.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;insert&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\n----\n&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;mediapopup&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_media&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;image.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;url&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;lib/exe/mediamanager.php?ns=&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;mediaselect&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;options&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;picker&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_smileys&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;smiley.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; getSmileys&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icobase&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;smileys&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;picker&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lang&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;qb_chars&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;icon&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;chars.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;À&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;à&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Á&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;á&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Â&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;â&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ã&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ã&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ä&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ä&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ǎ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǎ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ă&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ă&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Å&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;å&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;Ā&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ā&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ą&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ą&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Æ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;æ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ć&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ć&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ç&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ç&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Č&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;č&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ĉ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ĉ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ċ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ċ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;Ð&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;đ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ð&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ď&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ď&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;È&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;è&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;É&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;é&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ê&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ê&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ë&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ë&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ě&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ě&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ē&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ē&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ė&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ė&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ę&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ę&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ģ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ģ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ĝ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ĝ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ğ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ğ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ġ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ġ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ĥ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ĥ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ì&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ì&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Í&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;í&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Î&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;î&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ï&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ï&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ǐ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǐ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ī&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ī&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;İ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ı&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Į&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;į&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ĵ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ĵ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ķ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ķ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ĺ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ĺ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ļ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ļ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ľ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ľ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ł&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ł&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŀ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŀ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ń&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ń&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ñ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ñ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ņ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ņ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ň&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ň&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ò&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ò&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ó&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ó&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ô&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ô&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Õ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;õ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ö&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ö&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ǒ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ǒ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ō&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ō&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ő&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ő&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Œ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;œ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ø&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ø&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŕ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŕ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŗ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŗ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ř&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ř&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ś&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ś&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ş&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ş&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Š&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;š&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŝ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŝ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ţ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ţ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ť&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ť&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ù&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ù&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ú&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ú&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Û&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;û&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ü&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ü&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ǔ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǔ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŭ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŭ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ū&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ū&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ů&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ů&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǖ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǘ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǚ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ǜ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ų&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ų&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ű&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ű&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŵ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŵ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ý&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ý&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ÿ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ÿ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ŷ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ŷ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ź&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ź&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ž&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ž&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ż&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ż&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Þ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;þ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ß&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ħ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ħ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¿&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¡&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¢&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;£&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¤&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¥&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;€&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¦&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;§&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ª&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;¬&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¯&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;°&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;±&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;÷&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‰&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¼&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;½&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¾&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¹&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;²&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;³&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;µ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;¶&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;†&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‡&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;·&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;•&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;º&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∀&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∂&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∃&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ə&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ə&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∅&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∇&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∈&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∉&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∋&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∏&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∑&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‾&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;−&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∗&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;×&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⁄&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;√&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∝&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∞&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∠&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∧&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∨&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∩&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∪&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∫&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∴&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;∼&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;≅&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;≈&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;≠&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;≡&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;≤&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;≥&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊂&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊃&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊄&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊆&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊇&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊕&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊗&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⊥&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⋅&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;◊&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;℘&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;ℑ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ℜ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ℵ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;♠&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;♣&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;♥&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;♦&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;α&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;β&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Γ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;γ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Δ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;δ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ε&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ζ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;η&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;Θ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;θ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ι&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;κ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Λ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;λ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;μ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ξ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ξ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Π&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;π&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ρ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Σ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;σ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Τ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;τ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;υ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Φ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;φ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;χ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ψ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ψ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Ω&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ω&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;★&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☆&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☎&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☚&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☛&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☜&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☝&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☞&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;☟&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☹&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;☺&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;✔&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;✘&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;„&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;“&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;”&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‚&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‘&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;’&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;«&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;»&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;‹&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;›&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;—&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;–&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;…&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;←&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;↑&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;→&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;↓&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;↔&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⇐&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⇑&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⇒&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⇓&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;⇔&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;©&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;™&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;®&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;′&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;st_h&quot;&gt;&#039;″&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;[&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;{&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;}&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;~&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;%&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;§&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;$&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;|&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;@&#039;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;st_h&quot;&gt;&#039;block&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// end event TOOLBAR_DEFINE default action&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$evt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;advise_after&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/unset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$evt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// use JSON to build the JavaScript array&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;var &lt;span class=&quot;es4&quot;&gt;$varname&lt;/span&gt; = &amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/json_encode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;json_encode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$menu&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; JSON_THROW_ON_ERROR&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * prepares the signature string as configured in the config
 *
 * @author Andreas Gohr &amp;lt;andi@splitbrain.org&amp;gt;
 */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; toolbar_signature&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;co4&quot;&gt;/** @var Input $INPUT */&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;signature&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; dformat&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@USER@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_USER&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/is_null&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;is_null&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@NAME@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;@MAIL@&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@NAME@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;userinfo&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@MAIL@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;userinfo&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;mail&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; ?? &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@DATE@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; dformat&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\\\\n&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\\n&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/json_encode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;json_encode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$sig&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; JSON_THROW_ON_ERROR&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;//Setup VIM: ex: et ts=4 :&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/details&gt;
&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:toolbar.php&quot; class=&quot;media mediafile mf_php&quot; title=&quot;wiki:toolbar.php (11.5 KB)&quot;&gt;Скачать файл toolbar.php с правками&lt;/a&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Amyedit&amp;amp;media=wiki:toolbar_edit_1.png&quot; class=&quot;media&quot; title=&quot;wiki:toolbar_edit_1.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:toolbar_edit_1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0430\u043d\u0435\u043b\u044c_\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;78-12284&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;шаблон_dokuwiki&quot;&gt;Шаблон dokuwiki&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0430\u0431\u043b\u043e\u043d dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0430\u0431\u043b\u043e\u043d_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;12285-12319&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;tpl_footerphp&quot;&gt;tpl_footer.php&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian1&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;lib/tpl/dokuwiki/tpl_footer.php&lt;/code&gt;&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:counter&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:counter&quot; data-wiki-id=&quot;wiki:devel:counter&quot;&gt;Счетчик посещений сайта Dokuwiki с регистрацией IP - адреса в .txt файле&lt;/a&gt;
&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;«См.подробности правки»&lt;/summary&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;tpl_footer.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * Template footer, included in the main and detail files
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run from within DokuWiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_INC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;!-- ********** FOOTER ********** --&amp;gt;
&amp;lt;footer id=&amp;quot;dokuwiki__footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;pad&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;license&amp;quot;&amp;gt;Если не указано иное, содержимое этой вики предоставляется на&amp;amp;nbsp;условиях следующей лицензии: &amp;lt;bdi&amp;gt;&amp;lt;a href=&amp;quot;doku.php?id=public_domain_mark&amp;quot; rel=&amp;quot;license&amp;quot; class=&amp;quot;urlextern&amp;quot;&amp;gt;Public Domain&amp;lt;/a&amp;gt;&amp;lt;/bdi&amp;gt;&amp;lt;/div&amp;gt;
&amp;nbsp;
    &amp;lt;div class=&amp;quot;buttons&amp;quot;&amp;gt;
        &amp;lt;a href=&amp;quot;https://php.net&amp;quot; title=&amp;quot;Powered by PHP&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-php.gif&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Powered by PHP&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//validator.w3.org/check/referer&amp;quot; title=&amp;quot;Valid HTML5&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-html5.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid HTML5&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//jigsaw.w3.org/css-validator/check/referer?profile=css3&amp;quot; title=&amp;quot;Valid CSS&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-css.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid CSS&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;https://dokuwiki.org/&amp;quot; title=&amp;quot;Driven by DokuWiki&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-dw.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot;
            alt=&amp;quot;Driven by DokuWiki&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a&amp;gt;
            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; 
                &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count.txt&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/implode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;implode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;++;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/fopen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count.txt&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;w&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
				&lt;span class=&quot;re0&quot;&gt;$filename&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;stat.txt&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
        &amp;lt;style&amp;gt;
            .container {
            position: absolute;
            font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;
            }
            .text-block {
            position: absolute;
            bottom: 0px;
            right: 4px;
            color: black;
            }
        &amp;lt;/style&amp;gt;
            &amp;lt;a class=&amp;quot;container&amp;quot;&amp;gt;
                &amp;lt;span&amp;gt;&amp;lt;img src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-yandex.png&amp;quot; width=&amp;quot;85&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;yandex&amp;quot; / &amp;gt;
                    &amp;lt;div class=&amp;quot;text-block&amp;quot;&amp;gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
                &amp;lt;/span&amp;gt;
            &amp;lt;/a&amp;gt;
        &amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; tpl_includeFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footer.html&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Счетчик определителя IP посетителя&lt;/span&gt;
	    &lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_CLIENT_IP&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_X_FORWARDED_FOR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$remote&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_ADDR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Определяем IP посетителя&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$bravo&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;HTTP_USER_AGENT&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//Определяем браузер&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/filter_var&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filter_var&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILTER_VALIDATE_IP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/filter_var&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filter_var&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILTER_VALIDATE_IP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$remote&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$file2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOCUMENT_ROOT&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/lib/tpl/dokuwiki/debug.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/file_put_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_put_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$file2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;F d  H:i:s.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;    &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;    &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$bravo&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;  PHP_EOL&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILE_APPEND &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; LOCK_EX&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;lt;/div&amp;gt;&amp;lt;/footer&amp;gt;&amp;lt;!-- /footer --&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/details&gt;&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скачать файл &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:tpl_footer.php&quot; class=&quot;media mediafile mf_php&quot; title=&quot;wiki:tpl_footer.php (3.1 KB)&quot;&gt;toolbar.php&lt;/a&gt; с правками&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Поместить в папку &lt;code&gt;Dokuwiki\lib\tpl\dokuwiki&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Amyedit&amp;amp;media=wiki:button-yandex.png&quot; class=&quot;media&quot; title=&quot;wiki:button-yandex.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:button-yandex.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;Скачать картинку счетчика&quot; alt=&quot;Скачать картинку счетчика&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сохранить как button-yandex.png в папке &lt;code&gt;Dokuwiki\lib\tpl\dokuwiki\images&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скачать файл &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:count.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;wiki:count.txt (2 B)&quot;&gt;count.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Поместить в корень сайта Dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скачать файл &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:debug.txt&quot; class=&quot;media mediafile mf_txt&quot; title=&quot;wiki:debug.txt (435 B)&quot;&gt;debug.txt&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Поместить в папку &lt;code&gt;Dokuwiki\lib\tpl\dokuwiki\&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скачать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:jack_jackrum.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:jack_jackrum.zip (3.2 MB)&quot;&gt;архив jack_jackrum.zip&lt;/a&gt; с правками для &lt;code&gt;«Jack Jackrum»&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разорхивировать и копировать с заменой файлов в папке &lt;code&gt;dokuwiki&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian2&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;lib/tpl/dokuwiki/tpl_footer.php&lt;/code&gt;&lt;br/&gt;

&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:counter&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:counter&quot; data-wiki-id=&quot;wiki:devel:counter&quot;&gt;Счетчик посещений сайта Dokuwiki с регистрацией IP - адреса в .txt файле&lt;/a&gt;&lt;br/&gt;

&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;«См.подробности правки»&lt;/summary&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;tpl_footer.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * Template footer, included in the main and detail files
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run from within DokuWiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_INC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;nbsp;
&amp;lt;!-- ********** FOOTER ********** --&amp;gt;
&amp;lt;footer id=&amp;quot;dokuwiki__footer&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;pad&amp;quot;&amp;gt;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; tpl_license&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// license text ?&amp;gt;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;div &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;buttons&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
            tpl_license&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;button&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// license button, no wrapper&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;extern&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? &lt;span class=&quot;st_h&quot;&gt;&#039;target=&amp;quot;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;extern&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
        &amp;lt;a href=&amp;quot;https://php.net&amp;quot; title=&amp;quot;Powered by PHP&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-php.gif&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Powered by PHP&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//validator.w3.org/check/referer&amp;quot; title=&amp;quot;Valid HTML5&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-html5.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid HTML5&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;//jigsaw.w3.org/css-validator/check/referer?profile=css3&amp;quot; title=&amp;quot;Valid CSS&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-css.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;Valid CSS&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a href=&amp;quot;https://dokuwiki.org/&amp;quot; title=&amp;quot;Driven by DokuWiki&amp;quot; &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$target&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;gt;&amp;lt;img
            src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-dw.png&amp;quot; width=&amp;quot;80&amp;quot; height=&amp;quot;15&amp;quot;
            alt=&amp;quot;Driven by DokuWiki&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;
        &amp;lt;a&amp;gt;
            &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; 
                &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count.txt&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/implode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;implode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$file&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;++;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/fopen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;count.txt&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;w&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/fputs&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fputs&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$myfile&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
        &amp;lt;style&amp;gt;
            .container {
            position: absolute;
            font-family: Georgia, &#039;Times New Roman&#039;, Times, serif;
            }
            .text-block {
            position: absolute;
            bottom: 0px;
            right: 4px;
            color: black;
            }
        &amp;lt;/style&amp;gt;
            &amp;lt;a class=&amp;quot;container&amp;quot;&amp;gt;
                &amp;lt;span&amp;gt;&amp;lt;img src=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; tpl_basedir&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;images/button-yandex.png&amp;quot; width=&amp;quot;85&amp;quot; height=&amp;quot;15&amp;quot; alt=&amp;quot;yandex&amp;quot; / &amp;gt;
                    &amp;lt;div class=&amp;quot;text-block&amp;quot;&amp;gt;&lt;span class=&quot;sy1&quot;&gt;&amp;lt;?=&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
                &amp;lt;/span&amp;gt;
            &amp;lt;/a&amp;gt;
        &amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; tpl_includeFile&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footer.html&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
	    &lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_CLIENT_IP&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;HTTP_X_FORWARDED_FOR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$remote&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_ADDR&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Определяем IP посетителя&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$bravo&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;HTTP_USER_AGENT&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//Определяем браузер&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/filter_var&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filter_var&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILTER_VALIDATE_IP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$client&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;elseif&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/filter_var&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filter_var&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILTER_VALIDATE_IP&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$forward&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$remote&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$file2&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOCUMENT_ROOT&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/lib/tpl/dokuwiki/debug.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/file_put_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_put_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$file2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;F d  H:i:s.&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;    &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ip_address&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;    &#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$bravo&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;  PHP_EOL&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; FILE_APPEND &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; LOCK_EX&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;lt;/div&amp;gt;&amp;lt;/footer&amp;gt;&amp;lt;!-- /footer --&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/details&gt;&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скачать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:kaos.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:kaos.zip (33.8 KB)&quot;&gt;архив kaos.zip&lt;/a&gt; с правками для &lt;code&gt;«Kaos»&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разорхивировать и копировать с заменой файлов в папке &lt;code&gt;dokuwiki&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Amyedit&amp;amp;media=wiki:my_edit_dokuwiki_1.png&quot; class=&quot;media&quot; title=&quot;wiki:my_edit_dokuwiki_1.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:my_edit_dokuwiki_1.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tpl_footer.php&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tpl_footerphp&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;12320-20393&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;linkscss&quot;&gt;_links.css&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian3&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;lib/tpl/dokuwiki/css/_links.css&lt;/code&gt;&lt;br/&gt;

Убрана (закомментированна) иконка перед ссылками и стиль
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_css_&quot;&gt;_links.css &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;ol start=&quot;30&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*____________ other link types ____________*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.urlextern,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.windows,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.mail,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.mediafile&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.interwiki&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;no-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.4em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* внешние ссылки */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.urlextern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* background-image: url(../../images/media_link_displaylnk.png);*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;details&gt;&lt;summary&gt;«См.подробности правки файла _links.css»&lt;/summary&gt;&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_css_&quot;&gt;_links.css &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;* Этот файл предоставляет стили для всех типов ссылок.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*____________ ссылки на вики-страницы ____________*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* существующая вики-страница */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink1&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* не существующая вики-страница */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;none&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;visited&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1px&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;dashed&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;hover&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;active&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.wikilink2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;focus&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;border-bottom-width&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* любая ссылка на текущую страницу */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; span&lt;span class=&quot;re1&quot;&gt;.curid&lt;/span&gt; a &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;bold&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*____________ other link types ____________*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.urlextern,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.windows,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*.dokuwiki a.mail,*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.mediafile&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.interwiki&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;no-repeat&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;1.4em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* внешние ссылки */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.urlextern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* background-image: url(../../images/media_link_displaylnk.png);*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* сетевые ресурсы windows */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.windows&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* background-image: url(../../images/unc.svg);*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* почтовые ссылки */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.mail&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* background-image: url(../../images/email.svg);*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Следующие значки установлены dokuwiki в lib/exe/css.php */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* ссылка на некоторые встроенные носители */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.mediafile&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* interwiki ссылки */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.interwiki&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* RTL исправления; если значки ссылок не работают должным образом, удалите следующие строки */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;rtl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.urlextern&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;rtl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.windows&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;rtl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.mail&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;rtl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a.interwiki&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;kw5&quot;&gt;dir&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;rtl&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; a&lt;span class=&quot;re1&quot;&gt;.mediafile&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;background-position&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;kw1&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;18px&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/details&gt;
&lt;p&gt;
См. также
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:tips:extern-links-with-icons&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tips:extern-links-with-icons&quot; data-wiki-id=&quot;wiki:tips:extern-links-with-icons&quot;&gt;extern-links-with-icons&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:tips:local-links-with-icons&quot; class=&quot;wikilink1&quot; title=&quot;wiki:tips:local-links-with-icons&quot; data-wiki-id=&quot;wiki:tips:local-links-with-icons&quot;&gt;local-links-with-icons&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:links.css&quot; class=&quot;media mediafile mf_css&quot; title=&quot;wiki:links.css (2 KB)&quot;&gt;Редактированный файл links.css&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_links.css&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;linkscss&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;20394-23470&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;styleini&quot;&gt;style.ini&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian4&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;lib/tpl/dokuwiki/style.ini&lt;/code&gt;&lt;br/&gt;

Изменен цвет для внутренней ссылки с зеленого на синий &lt;code&gt;__existing__ = &amp;quot;#080&amp;quot;&lt;/code&gt; и &lt;code&gt;__missing__  = &amp;quot;#d30&amp;quot;&amp;quot;&lt;/code&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=5&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_css_&quot;&gt;_links.css &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;ol start=&quot;30&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; these are used for wiki links&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;__existing__        &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;#0000cd&amp;quot;&lt;/span&gt;         &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;@ini_existing&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;__missing__         &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;#f30&amp;quot;&lt;/span&gt;            &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; @ini_missing&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
См. также
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:style.ini&quot; class=&quot;media mediafile mf_ini&quot; title=&quot;wiki:style.ini (3.4 KB)&quot;&gt;Редактированный файл style.ini&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;style.ini&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;styleini&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;23471-24059&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;mimeconf&quot;&gt;mime.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian5&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;conf/mime.conf&lt;/code&gt;&lt;br/&gt;

Добавлены расширения разрешенных файлов для загрузки в dokuwiki &lt;code&gt;__missing__  = &amp;quot;#d30&amp;quot;&amp;quot;&lt;/code&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=6&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf_&quot;&gt;mime.conf &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;30&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;tgz     &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;octet&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;stream&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;tar     application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;gtar&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;tar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;xz  application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;xz&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;gz      application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;octet&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;stream&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;bz2     application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;octet&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;stream&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;zip     application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;zip&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;rar     application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;rar&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;7z      application&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;x&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;7z&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;compressed&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
См. также
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:mime&quot; class=&quot;wikilink1&quot; title=&quot;wiki:mime&quot; data-wiki-id=&quot;wiki:mime&quot;&gt;Конфигурация MIME&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;mime.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;mimeconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;24060-24680&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;smileysconf&quot;&gt;smileys.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian6&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;conf/smileys.conf&lt;/code&gt;&lt;br/&gt;

Убраны неиспользуемые иконки смайликов dokuwiki
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf_&quot;&gt;smileys.conf &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# Smileys configured here will be replaced by the&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# configured images in the smiley directory&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;         sm&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;O         eek&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;svg&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;         sm_1&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;         sm_2&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;          sm_3&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-/&lt;/span&gt;         sm_4&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-&lt;/span&gt;\         sm_5&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-&lt;/span&gt;?         sm_6&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:-&lt;/span&gt;D         sm_7&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;LOL         sm_8&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;?&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;         question&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;svg&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:!:&lt;/span&gt;         exclaim&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;svg&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;icons&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;hourglass&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;select&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png?&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;Устаревший&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  hourglass&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;select&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;icons&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;flask&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png?&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;Экспериментальный&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;  flask&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;icons&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;jar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png?&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;Нестандартный&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;   jar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;icons&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;flask&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png?&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;Экспериментальный&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; flask&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;FIXME       fixme&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;jpg&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;DELETEME    deleteme&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;jpg&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;smileys.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;smileysconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;24681-25603&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;smileyslocalconf&quot;&gt;smileys.local.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian7&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;conf/smileys.local.conf&lt;/code&gt;&lt;br/&gt;

Добавлен новый файл smileys.local.conf со своим набором иконок dokuwiki
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf_&quot;&gt;smileys.local.conf &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;:&lt;/span&gt; address&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;book&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;open&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; book&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;open&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; book&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;open&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;bookmark&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; hourglass&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;select&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; flask&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; jar&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; wand&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;hat&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; balloon&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; exclamation&lt;span class=&quot;sy0&quot;&gt;--&lt;/span&gt;frame&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; exclamation&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;red&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; information&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; light&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;bulb&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;off&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;12&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; light&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;bulb&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; magnifier&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;left&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;14&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; navigation&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu8&quot;&gt;000&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;button&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;white&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; pin&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; tick&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; tick&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;red&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; leaf&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; leaf&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;yellow&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; leaf&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;red&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;21&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; lightning&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; box&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;esc&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; esc&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;enter&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  enter&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;primenite&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  primenite&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;ctrl&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;x&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  ctrl&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;x&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;ctrl&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;o&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  ctrl&lt;span class=&quot;sy0&quot;&gt;+&lt;/span&gt;o&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;ok&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  ok&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;sbros&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  sbros&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;dalee&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  dalee&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;nazad&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  nazad&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;gal&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  gal&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;sozdate&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  sozdate&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&amp;amp;&lt;/span&gt;otmena&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  otmena&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;ctrl_o_enter_ctrl_x&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  ctrl_o_enter_ctrl_x&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;png&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;

&lt;h4 id=&quot;иконки_для_смайликов&quot;&gt;иконки для смайликов&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;dokuwiki/Kaos/dokuwiki/lib/images/smileys&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:smileys.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:smileys.zip (586.9 KB)&quot;&gt;Новый набор иконок&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
См. также
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:smileys.conf&quot; class=&quot;media mediafile mf_conf&quot; title=&quot;wiki:smileys.conf (686 B)&quot;&gt;Редактированный файл smileys.conf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:smileys.local.conf&quot; class=&quot;media mediafile mf_conf&quot; title=&quot;wiki:smileys.local.conf (812 B)&quot;&gt;Файл smileys.local.conf &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:mime&quot; class=&quot;wikilink1&quot; title=&quot;wiki:mime&quot; data-wiki-id=&quot;wiki:mime&quot;&gt;Конфигурация MIME&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;smileys.local.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;smileyslocalconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;25604-27029&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;interwikiconf&quot;&gt;interwiki.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian8&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;conf/interwiki.conf&lt;/code&gt;&lt;br/&gt;

Убраны (закомментированы) неиспользуемые иконки interwiki dokuwiki
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=9&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf_&quot;&gt;interwiki.conf &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# Each URL may contain one of these placeholders&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {URL}  is replaced by the URL encoded representation of the wikiname&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#        this is the right thing to do in most cases&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {NAME} this is replaced by the wikiname as given in the document&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#        only mandatory encoded is done, urlencoding if the link&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#        is an external URL, or encoding as a wikiname if it is an&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#        internal link (begins with a colon)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {SCHEME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {HOST}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {PORT}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {PATH}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# {QUERY} these placeholders will be replaced with the appropriate part&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;#         of the link when parsed as a URL&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# If no placeholder is defined the urlencoded name is appended to the URL&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# To prevent losing your added InterWiki shortcuts after an upgrade,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# you should add new ones to interwiki.local.conf&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# world     https://&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wp        https://en.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpfr      https://fr.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpde      https://de.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpes      https://es.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wppl      https://pl.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpjp      https://ja.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpru      https://ru.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# wpmeta    https://meta.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# doku      https://www.dokuwiki.org/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# rfc       https://tools.ietf.org/html/rfc&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# man       http://man.cx/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# google    https://www.google.com/search?q=&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# amazon    https://www.amazon.com/dp/{URL}?tag=splitbrain-20&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# amazon.de https://www.amazon.de/dp/{URL}?tag=splitbrain-21&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# amazon.uk https://www.amazon.co.uk/dp/{URL}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# paypal    https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;amp;business=&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# skype     skype:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# google.de https://www.google.de/search?q=&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# go        https://www.google.com/search?q={URL}&amp;amp;amp;btnI=lucky&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# user      :user:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# skype     skype:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# To support VoIP/SIP/TEL links&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# user      :user:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# callto    callto://{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# tel       tel:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# mail      mail:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# address   address:{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;interwiki.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwikiconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;27030-29227&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;interwikilocalconf&quot;&gt;interwiki.local.conf&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;jack_jackrum_kaos_и_librarian9&quot;&gt;&amp;quot;Jack Jackrum&amp;quot;, &amp;quot;Kaos&amp;quot; и &amp;quot;Librarian&amp;quot;&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;conf/interwiki.local.conf&lt;/code&gt;&lt;br/&gt;

Добавлен новый файл interwiki.local.conf со своим набором иконок dokuwiki
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:myedit&amp;amp;codeblock=10&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf_&quot;&gt;interwiki.local.conf &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;coral http&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//{HOST}.{PORT}.nyud.net:8090{PATH}?{QUERY}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;world     https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;wp        https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//en.wikipedia.org/wiki/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;doku      https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//www.dokuwiki.org/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;google    https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//www.google.com/search?q=&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;windows   https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//support.microsoft.com/ru-ru/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;ubuntu    https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//wiki.ubuntu.com/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;phpfn     https&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;co1&quot;&gt;//secure.php.net/{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;xref      doku&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;php?id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;wiki&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;xref&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# [[this&amp;gt;feed.php]] - Ссылки на URL вашей вики. (находиться в mylink)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# To support VoIP/SIP/TEL links&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;user      &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;user&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;NAME&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# callto    callto://{NAME}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;tel       tel&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;NAME&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;a href=&quot;http://www.php.net/mail&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;mail&lt;/span&gt;&lt;/a&gt;      &lt;a href=&quot;http://www.php.net/mail&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;mail&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;NAME&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;address   address&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;NAME&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;

&lt;h4 id=&quot;иконки_для_interwiki&quot;&gt;иконки для interwiki&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
&lt;code&gt;dokuwiki/Kaos/dokuwiki/lib/images/interwiki&lt;/code&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:interwiki.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:interwiki.zip (335.2 KB)&quot;&gt;Новый набор иконок&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;скругление_углов_плагина_wrap&quot;&gt;Скругление углов плагина Wrap&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Файл &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; - lib/plugin/wrap/all.less
&lt;/p&gt;
&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/*____________ rounded corners ____________*/&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* (only for modern browsers) */&lt;/span&gt;
&amp;nbsp;
div&lt;span class=&quot;re1&quot;&gt;.wrap_round&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
span&lt;span class=&quot;re1&quot;&gt;.wrap_round&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.2em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
См. также
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:interwiki.conf&quot; class=&quot;media mediafile mf_conf&quot; title=&quot;wiki:interwiki.conf (1.9 KB)&quot;&gt;Редактированный файл interwiki.conf&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:interwiki.local.conf&quot; class=&quot;media mediafile mf_conf&quot; title=&quot;wiki:interwiki.local.conf (637 B)&quot;&gt;Файл interwiki.local.conf &lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:interwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:interwiki&quot; data-wiki-id=&quot;wiki:interwiki&quot;&gt;Конфигурация interwiki&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;interwiki.local.conf&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwikilocalconf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;29228-30808&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;установка_новой_dokuwiki&quot;&gt;Установка новой dokuwiki&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Загружаем архив с последней ревизией dokuwiki &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-stable-kaos.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-stable-kaos.tgz (4 MB)&quot;&gt;2024-02-06b &amp;quot;Kaos&amp;quot;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-03cdd5898546c49d58c279e5e90010cc.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-03cdd5898546c49d58c279e5e90010cc.tgz (29.3 MB)&quot;&gt;2024-02-06b &amp;quot;Kaos&amp;quot; portable&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-oldstable-jack-jackrum.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-oldstable-jack-jackrum.tgz (3.8 MB)&quot;&gt;2023-04-04b &amp;quot;Jack Jackrum&amp;quot;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-33eb2f81a07b3489a89a76c41d213ba8.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-33eb2f81a07b3489a89a76c41d213ba8.tgz (29.1 MB)&quot;&gt;2023-04-04b &amp;quot;Jack Jackrum&amp;quot; portable&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создаем папку с поддерикториями аналогичной структуре папок dokuwiki и в ней разладываем модифицированные файлы и папки с иконками. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Устанавливаем новую dokuwiki и на неё копируем нашу папку с заменой файлов&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Amyedit&amp;amp;media=wiki:my_edit_dokuwiki_3.png&quot; class=&quot;media&quot; title=&quot;wiki:my_edit_dokuwiki_3.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:my_edit_dokuwiki_3.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043d\u043e\u0432\u043e\u0439 dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u043d\u043e\u0432\u043e\u0439_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;30809-31680&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;обновление_модефицированной_dokuwiki&quot;&gt;Обновление модефицированной dokuwiki&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Делаем бэкап нашей dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создаем папку с поддерикториями аналогичной структуре папок dokuwiki и в ней разложенны модифицированные файлы и папки с иконками. &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Обновляем нашу dokuwiki через менеджер обновлений и на неё копируем нашу папку с заменой файлов&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Amyedit&amp;amp;media=wiki:my_edit_dokuwiki_2.png&quot; class=&quot;media&quot; title=&quot;wiki:my_edit_dokuwiki_2.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:my_edit_dokuwiki_2.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435_\u043c\u043e\u0434\u0435\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;31681-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 25 Aug 2025 07:23:09 +0000</pubDate>
        </item>
        <item>
            <title>smileys</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:smileys&amp;rev=1736848259</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;смайлики&quot;&gt;Смайлики&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-32&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;использование&quot;&gt;Использование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;Докувики&lt;/a&gt; может преобразовывать текстовые смайлики в их графический эквивалент. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:syntax#преобразование_текста_в_изображение&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;Изображения по умолчанию&lt;/a&gt; и пользовательские изображения автоматически отображаются в окне выбора смайликов на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:toolbar&quot; class=&quot;wikilink1&quot; title=&quot;wiki:toolbar&quot; data-wiki-id=&quot;wiki:toolbar&quot;&gt;панели инструментов&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Изображения смайликов по умолчанию хранятся в каталоге &lt;code&gt;lib/images/smileys/&lt;/code&gt; и настраиваются в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:smileys.conf&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:smileys.conf&quot; data-wiki-id=&quot;wiki:devel:smileys.conf&quot;&gt;conf/smileys.conf&lt;/a&gt; файле. Администраторы вики могут настраивать свои собственные смайлики, см. Ниже.
&lt;/p&gt;

&lt;p&gt;
Вместо использования пиксельной графики на основе gif в версиях DokuWiki, начиная с выпуска Igor 2022, используются смайлики SVG, основанные на проекте &lt;a href=&quot;https://twemoji.twitter.com/&quot; class=&quot;urlextern&quot; title=&quot;https://twemoji.twitter.com/&quot; rel=&quot;ugc nofollow&quot;&gt;Twemoji&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;33-1245&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;настройка_смайликов&quot;&gt;Настройка смайликов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Чтобы добавить свои собственные смайлики, а также защетить их от перезаписи при &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:upgrade&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:upgrade&quot; data-wiki-id=&quot;wiki:install:upgrade&quot;&gt;обновлении&lt;/a&gt;, вы должны следовать этим инструкциям, а не смешивать их со смайликами по умолчанию из пакета докувики:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создайте новую папку с именем local внутри папки smileys &lt;pre class=&quot;code&quot;&gt;lib/images/smileys/local&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
   и поместите в него файлы изображений (убедитесь, что изображения доступны для чтения веб-сервером). По умолчанию смайлики в докувики имеют высоту около 24 пикселей.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создайте пользовательский файл конфигурации смайликов по адресу &lt;pre class=&quot;code&quot;&gt;conf/smileys.local.conf&lt;/pre&gt;

&lt;p&gt;
 и  поместите туда ваши комбинации смайдликов с именем файла изображения (имя файла изображения должно начинатся с &lt;code&gt;local/&lt;/code&gt;).
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Пример файла конфигурации может выглядеть следующим образом:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:smileys&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf&quot;&gt;conf/smileys.local.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;# Пользовательские смайлики
# Изображения отображаются по относительному адресу из каталога смайликов lib/images/smileys/
# ТЕКСТ_ДЛЯ_ЗАМЕНЫ           ФАЙЛ_ИЗОБРАЖЕНИЯ
#
:MYFACE:                     local/i_am_so_pretty.png

# или удалите смайлик, указав ключ, без пути к изображению.
DELETEME&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u0441\u043c\u0430\u0439\u043b\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1246-3113&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;примечания_и_подсказки&quot;&gt;Примечания и подсказки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Хорошей практикой считается окружать свои собственные текстовые макросы двоеточиями (&lt;code&gt;:&lt;/code&gt;), например &lt;code&gt;:REPLACEME:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Поскольку символ &lt;code&gt;#&lt;/code&gt; (хэш) зарезервирован для обозначения строки комментария, он должен быть экранирован обратной косой чертой (&lt;code&gt;\#&lt;/code&gt;). Символ &lt;code&gt;$&lt;/code&gt; (доллар) не может быть использован в кофигурационном файле.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если ваш недавно добавленный смайлик не отображается во всплывающем окне панели инструментов редактирования, это почти всегда проблема &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:caching&quot; class=&quot;wikilink1&quot; title=&quot;wiki:caching&quot; data-wiki-id=&quot;wiki:caching&quot;&gt;кэширования&lt;/a&gt;. Возможно, вам придется &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:caching#очистка_кэша&quot; class=&quot;wikilink1&quot; title=&quot;wiki:caching&quot; data-wiki-id=&quot;wiki:caching&quot;&gt;очистить кеш&lt;/a&gt;, а затем обновить страницу.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Убедитесь, что при добавлении в статью вики перед и после смайлика есть пробел (например, Test :NEW: smiley).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f_\u0438_\u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3114-4390&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;дополнительные_смайлики_от_пользователей&quot;&gt;Дополнительные смайлики от пользователей&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Следующие смайлики были созданы пользователями Докувики, используя стиль, аналогичный стандартным. Если они вам нравятся, поместите их в свой каталог смайликов и настройте конфигурационный файл.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit6&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Изображение смайлика                            &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Создатель &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:new.gif&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:new.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:new.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;                    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#116;&amp;#111;&amp;#98;&amp;#105;&amp;#97;&amp;#46;&amp;#99;&amp;#111;&amp;#110;&amp;#102;&amp;#111;&amp;#114;&amp;#116;&amp;#111;&amp;#64;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#105;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#116;&amp;#111;&amp;#98;&amp;#105;&amp;#97;&amp;#46;&amp;#99;&amp;#111;&amp;#110;&amp;#102;&amp;#111;&amp;#114;&amp;#116;&amp;#111;&amp;#64;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#105;&amp;#116;&quot;&gt;Toby&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:todo.gif&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:todo.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:todo.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;                   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#116;&amp;#111;&amp;#98;&amp;#105;&amp;#97;&amp;#46;&amp;#99;&amp;#111;&amp;#110;&amp;#102;&amp;#111;&amp;#114;&amp;#116;&amp;#111;&amp;#64;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#105;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#116;&amp;#111;&amp;#98;&amp;#105;&amp;#97;&amp;#46;&amp;#99;&amp;#111;&amp;#110;&amp;#102;&amp;#111;&amp;#114;&amp;#116;&amp;#111;&amp;#64;&amp;#108;&amp;#105;&amp;#110;&amp;#117;&amp;#120;&amp;#46;&amp;#105;&amp;#116;&quot;&gt;Toby&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-danger-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-danger-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-danger-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-delete-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-delete-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-delete-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-fixme-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-fixme-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-fixme-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-note-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-note-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-note-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-todo-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-todo-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-todo-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-warning-yellow.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-warning-yellow.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-warning-yellow.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;  &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-danger-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-danger-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-danger-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;      &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-delete-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-delete-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-delete-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;      &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-fixme-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-fixme-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-fixme-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;       &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-note-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-note-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-note-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-todo-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-todo-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-todo-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;        &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asmileys&amp;amp;media=wiki:usersmileys:button-warning-red.png&quot; class=&quot;media wikilink2&quot; title=&quot;wiki:usersmileys:button-warning-red.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:usersmileys:button-warning-red.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;mailto:&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#107;&amp;#119;&amp;#108;&amp;#55;&amp;#64;&amp;#99;&amp;#111;&amp;#114;&amp;#110;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Kevin Locke&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=6f1904&amp;amp;media=http%3A%2F%2Fwiki.guug.de%2Flib%2Fimages%2Fsmileys%2Flocal%2Ftodo.gif&quot; class=&quot;media&quot; title=&quot;http://wiki.guug.de/lib/images/smileys/local/todo.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=80&amp;amp;h=15&amp;amp;tok=3ca690&amp;amp;media=http%3A%2F%2Fwiki.guug.de%2Flib%2Fimages%2Fsmileys%2Flocal%2Ftodo.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;15&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://www.unixwitch.de&quot; class=&quot;urlextern&quot; title=&quot;http://www.unixwitch.de&quot; rel=&quot;ugc nofollow&quot;&gt;Hella Breitkopf&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=e53b60&amp;amp;media=http%3A%2F%2Fwiki.guug.de%2Flib%2Fimages%2Fsmileys%2Flocal%2Fdone.gif&quot; class=&quot;media&quot; title=&quot;http://wiki.guug.de/lib/images/smileys/local/done.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=80&amp;amp;h=15&amp;amp;tok=2d23a1&amp;amp;media=http%3A%2F%2Fwiki.guug.de%2Flib%2Fimages%2Fsmileys%2Flocal%2Fdone.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;80&quot; height=&quot;15&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;http://www.unixwitch.de&quot; class=&quot;urlextern&quot; title=&quot;http://www.unixwitch.de&quot; rel=&quot;ugc nofollow&quot;&gt;Hella Breitkopf&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=eb8312&amp;amp;media=http%3A%2F%2Fsavoirscom1.comptoir.net%2Flib%2Fimages%2Fsmileys%2Ftodo_button.png&quot; class=&quot;media&quot; title=&quot;http://savoirscom1.comptoir.net/lib/images/smileys/todo_button.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=eb8312&amp;amp;media=http%3A%2F%2Fsavoirscom1.comptoir.net%2Flib%2Fimages%2Fsmileys%2Ftodo_button.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:cyrille37&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:cyrille37&quot; rel=&quot;nofollow&quot;&gt;Cyrille37&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Different sets: &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;dokuwiki-smileys-local&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:davidjimenez75&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:davidjimenez75&quot; rel=&quot;nofollow&quot;&gt;Davidjimenez75&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4844-6629&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0438 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u0441\u043c\u0430\u0439\u043b\u0438\u043a\u0438_\u043e\u0442_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4391-6630&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;дополнительные_пакеты_смайликов&quot;&gt;Дополнительные пакеты смайликов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Следующие наборы смайликов были созданы пользователями DokuWiki, используя стиль, аналогичный стандартным. Если они вам нравятся, поместите их в свой локальный каталог смайликов (lib/images/smileys/local) и создайте / скопируйте / настройте конфигурационный файл (conf/smileys.local.conf). Не забудьте обновить &lt;code&gt;conf/local.php&lt;/code&gt; чтобы обновить кэш редактора &lt;abbr title=&quot;What You See Is What You Get&quot;&gt;WYSIWYG&lt;/abbr&gt;.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Пакет изображений смайликов                                &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; url &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt; Создатель &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=1fd38f&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fdokuwiki-tags-en%2Ffolder.jpg&quot; class=&quot;media&quot; title=&quot;https://raw.githubusercontent.com/davidjimenez75/dokuwiki-smileys-local/master/dokuwiki-tags-en/folder.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=450&amp;amp;tok=4d47ec&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fdokuwiki-tags-en%2Ffolder.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_dokuwiki-tags-en_folder.jpg&quot; alt=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_dokuwiki-tags-en_folder.jpg&quot; width=&quot;450&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;dokuwiki-tags-en&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:davidjimenez75&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:davidjimenez75&quot; rel=&quot;nofollow&quot;&gt;Davidjimenez75&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=1b4d9a&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Femojione-faces%2Ffolder.jpg&quot; class=&quot;media&quot; title=&quot;https://raw.githubusercontent.com/davidjimenez75/dokuwiki-smileys-local/master/emojione-faces/folder.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=450&amp;amp;tok=f72cae&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Femojione-faces%2Ffolder.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_emojione-faces_folder.jpg&quot; alt=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_emojione-faces_folder.jpg&quot; width=&quot;450&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;emojione-faces&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:davidjimenez75&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:davidjimenez75&quot; rel=&quot;nofollow&quot;&gt;Davidjimenez75&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=27bb85&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fgithub-tags-en%2Ffolder.jpg&quot; class=&quot;media&quot; title=&quot;https://raw.githubusercontent.com/davidjimenez75/dokuwiki-smileys-local/master/github-tags-en/folder.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=450&amp;amp;tok=b052e1&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fgithub-tags-en%2Ffolder.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_github-tags-en_folder.jpg&quot; alt=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_github-tags-en_folder.jpg&quot; width=&quot;450&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;github-tags-en&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:davidjimenez75&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:davidjimenez75&quot; rel=&quot;nofollow&quot;&gt;Davidjimenez75&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=47c395&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fopenmoji32-faces%2Ffolder.jpg&quot; class=&quot;media&quot; title=&quot;https://raw.githubusercontent.com/davidjimenez75/dokuwiki-smileys-local/master/openmoji32-faces/folder.jpg&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=450&amp;amp;tok=622e9f&amp;amp;media=https%3A%2F%2Fraw.githubusercontent.com%2Fdavidjimenez75%2Fdokuwiki-smileys-local%2Fmaster%2Fopenmoji32-faces%2Ffolder.jpg&quot; class=&quot;media&quot; loading=&quot;lazy&quot; title=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_openmoji32-faces_folder.jpg&quot; alt=&quot;raw.githubusercontent.com_davidjimenez75_dokuwiki-smileys-local_master_openmoji32-faces_folder.jpg&quot; width=&quot;450&quot; /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;openmoji32-faces&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:davidjimenez75&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:davidjimenez75&quot; rel=&quot;nofollow&quot;&gt;Davidjimenez75&lt;/a&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;7314-8376&amp;quot;} --&gt;
&lt;p&gt;
Больше примеров на &lt;a href=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/davidjimenez75/dokuwiki-smileys-local&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/davidjimenez75/dokuwiki-smileys-local&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0441\u043c\u0430\u0439\u043b\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u043f\u0430\u043a\u0435\u0442\u044b_\u0441\u043c\u0430\u0439\u043b\u0438\u043a\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;6631-8471&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;смотри_таже&quot;&gt;Смотри таже&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config&quot; data-wiki-id=&quot;wiki:config&quot;&gt;Настройка Докувики&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043c\u043e\u0442\u0440\u0438 \u0442\u0430\u0436\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043c\u043e\u0442\u0440\u0438_\u0442\u0430\u0436\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;8472-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 Jan 2025 09:50:59 +0000</pubDate>
        </item>
        <item>
            <title>syntax</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:syntax&amp;rev=1756047517</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;formatting_syntax&quot;&gt;Formatting Syntax&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/DokuWiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/DokuWiki&quot;&gt;DokuWiki&lt;/a&gt; supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing «Edit this page». If you want to try something, just use the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=playground:playground&quot; class=&quot;wikilink2&quot; title=&quot;playground:playground&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;playground:playground&quot;&gt;playground&lt;/a&gt; page. The simpler markup is easily accessible via &lt;a href=&quot;https://www.dokuwiki.org/toolbar&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/toolbar&quot;&gt;quickbuttons&lt;/a&gt;, too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Formatting Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;formatting_syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;basic_text_formatting&quot;&gt;Basic Text Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, &lt;em class=&quot;u&quot;&gt;underlined&lt;/em&gt; and &lt;code&gt;monospaced&lt;/code&gt; texts. Of course you can &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;&lt;em&gt;&lt;code&gt;combine&lt;/code&gt;&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt; all these.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports **bold**, //italic//, __underlined__ and &amp;#039;&amp;#039;monospaced&amp;#039;&amp;#039; texts.
Of course you can **__//&amp;#039;&amp;#039;combine&amp;#039;&amp;#039;//__** all these.&lt;/pre&gt;

&lt;p&gt;
You can use &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use &amp;lt;sub&amp;gt;subscript&amp;lt;/sub&amp;gt; and &amp;lt;sup&amp;gt;superscript&amp;lt;/sup&amp;gt;, too.&lt;/pre&gt;

&lt;p&gt;
You can mark something as &lt;del&gt;deleted&lt;/del&gt; as well.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can mark something as &amp;lt;del&amp;gt;deleted&amp;lt;/del&amp;gt; as well.&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Paragraphs&lt;/strong&gt; are created from blank lines. If you want to &lt;strong&gt;force a newline&lt;/strong&gt; without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
&lt;/p&gt;

&lt;p&gt;
This is some text with some linebreaks&lt;br/&gt;
Note that the
two backslashes are only recognized at the end of a line&lt;br/&gt;

or followed by&lt;br/&gt;
a whitespace \\this happens without it.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is some text with some linebreaks\\ Note that the
two backslashes are only recognized at the end of a line\\
or followed by\\ a whitespace \\this happens without it.&lt;/pre&gt;

&lt;p&gt;
You should use forced newlines only if really needed.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Text Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_text_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;473-1609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports multiple ways of creating links.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1610-1680&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;external&quot;&gt;External&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
External links are recognized automagically: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.google.com&lt;/a&gt; or simply &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;www.google.com&lt;/a&gt; - You can set the link text as well: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;This Link points to google&lt;/a&gt;. Email addresses like this one: &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt; are recognized, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports multiple ways of creating links. External links are recognized
automagically: http://www.google.com or simply www.google.com - You can set
link text as well: [[http://www.google.com|This Link points to google]]. Email
addresses like this one: &amp;lt;andi@splitbrain.org&amp;gt; are recognized, too.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;External&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;external&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1681-2271&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;internal&quot;&gt;Internal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Internal links are created by using square brackets. You can either just give a &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:pagename&quot; class=&quot;wikilink1&quot; title=&quot;wiki:pagename&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;pagename&lt;/a&gt; or use an additional &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:pagename&quot; class=&quot;wikilink1&quot; title=&quot;wiki:pagename&quot; data-wiki-id=&quot;wiki:pagename&quot;&gt;link text&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Internal links are created by using square brackets. You can either just give
a [[pagename]] or use an additional [[pagename|link text]].&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/pagename&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/pagename&quot;&gt;Wiki pagenames&lt;/a&gt; are converted to lowercase automatically, special characters are not allowed.
&lt;/p&gt;

&lt;p&gt;
You can use &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=some:namespaces&quot; class=&quot;wikilink2&quot; title=&quot;some:namespaces&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;some:namespaces&quot;&gt;namespaces&lt;/a&gt; by using a colon in the pagename.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use [[some:namespaces]] by using a colon in the pagename.&lt;/pre&gt;

&lt;p&gt;
For details about namespaces see &lt;a href=&quot;https://www.dokuwiki.org/namespaces&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/namespaces&quot;&gt;namespaces&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Linking to a specific section is possible, too. Just add the section name behind a hash character as known from &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. This links to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:syntax#internal&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;this Section&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This links to [[syntax#internal|this Section]].&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Links to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;existing pages&lt;/a&gt; are shown in a different style from &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:nonexisting&quot; class=&quot;wikilink2&quot; title=&quot;wiki:nonexisting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:nonexisting&quot;&gt;nonexisting&lt;/a&gt; ones.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki does not use &lt;a href=&quot;https://en.wikipedia.org/wiki/CamelCase&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/CamelCase&quot;&gt;CamelCase&lt;/a&gt; to automatically create links by default, but this behavior can be enabled in the &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;config&lt;/a&gt; file. Hint: If DokuWiki is a link, then it&amp;#039;s enabled.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; When a section&amp;#039;s heading is changed, its bookmark changes, too. So don&amp;#039;t rely on section linking too much.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Internal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;internal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2272-3506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;interwiki&quot;&gt;Interwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;a href=&quot;https://www.dokuwiki.org/Interwiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Interwiki&quot;&gt;Interwiki&lt;/a&gt; links. These are quick links to other Wikis. For example this is a link to Wikipedia&amp;#039;s page about Wikis: &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Wiki&quot;&gt;Wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports [[doku&amp;gt;Interwiki]] links. These are quick links to other Wikis.
For example this is a link to Wikipedia&amp;#039;s page about Wikis: [[wp&amp;gt;Wiki]].&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3507-3843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;windows_shares&quot;&gt;Windows Shares&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Windows shares like &lt;a href=&quot;file://///server/share&quot; class=&quot;windows&quot; title=&quot;\\server\share&quot;&gt;this&lt;/a&gt; are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate &lt;a href=&quot;https://en.wikipedia.org/wiki/Intranet&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Intranet&quot;&gt;Intranet&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Windows Shares like [[\\server\share|this]] are recognized, too.&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the «local zone»).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For Mozilla and Firefox it can be enabled through different workaround mentioned in the &lt;a href=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; class=&quot;urlextern&quot; title=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; rel=&quot;ugc nofollow&quot;&gt;Mozilla Knowledge Base&lt;/a&gt;. However, there will still be a JavaScript warning about trying to open a Windows Share. To remove this warning (for all users), put the following line in &lt;code&gt;conf/lang/en/lang.php&lt;/code&gt; (more details at &lt;a href=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot;&gt;localization&lt;/a&gt;): &lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;conf/lang/en/lang.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;?php
/**
 * Customization of the english language file
 * Copy only the strings that needs to be modified
 */
$lang[&amp;#039;js&amp;#039;][&amp;#039;nosmblinks&amp;#039;] = &amp;#039;&amp;#039;;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows Shares&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_shares&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3844-4916&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;image_links&quot;&gt;Image Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
You can also use an image to link to another internal or external page by combining the syntax for links and &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;images&lt;/a&gt; (see below) like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[[http://php.net|{{wiki:dokuwiki-128.png}}]]&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://php.net&quot; class=&quot;media&quot; title=&quot;http://php.net&quot; rel=&quot;ugc nofollow&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Please note: The image formatting is the only formatting syntax accepted in link names.
&lt;/p&gt;

&lt;p&gt;
The whole &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;image&lt;/a&gt; and &lt;a href=&quot;#links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;link&lt;/a&gt; syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Image Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;image_links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4917-5462&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can add footnotes &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; by using double parentheses.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can add footnotes ((This is a footnote)) by using double parentheses.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Footnotes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;footnotes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5463-5637&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;sectioning&quot;&gt;Sectioning&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically – this can be disabled by including the string &lt;code&gt;~~NOTOC~~&lt;/code&gt; in the document.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sectioning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sectioning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5638-5924&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;headline_level_3&quot;&gt;Headline Level 3&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;headline_level_4&quot;&gt;Headline Level 4&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;headline_level_5&quot;&gt;Headline Level 5&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;==== Headline Level 3 ====
=== Headline Level 4 ===
== Headline Level 5 ==&lt;/pre&gt;

&lt;p&gt;
By using four or more dashes, you can make a horizontal line:
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Headline Level 3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;headline_level_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5925-6151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;media_files&quot;&gt;Media Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include external and internal &lt;a href=&quot;https://www.dokuwiki.org/images&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/images&quot;&gt;images, videos and audio files&lt;/a&gt; with curly brackets. Optionally you can specify the size of them.
&lt;/p&gt;

&lt;p&gt;
Real size:                        &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width:            &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=50&amp;amp;tok=3bbf81&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width and height&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=2c482f&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resized external image:           &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=87e3f3&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; title=&quot;https://www.php.net/images/php.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=57fe6b&amp;amp;media=https%3A%2F%2Fwww.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Real size:                        {{wiki:dokuwiki-128.png}}
Resize to given width:            {{wiki:dokuwiki-128.png?50}}
Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}}
Resized external image:           {{https://www.php.net/images/php.gif?200x50}}&lt;/pre&gt;

&lt;p&gt;
By using left or right whitespaces you can choose the alignment.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png}}
{{wiki:dokuwiki-128.png }}
{{ wiki:dokuwiki-128.png }}&lt;/pre&gt;

&lt;p&gt;
Of course, you can add a title (displayed as a tooltip by most browsers), too.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; title=&quot;This is the caption&quot; alt=&quot;This is the caption&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png |This is the caption}}&lt;/pre&gt;

&lt;p&gt;
For linking an image to another page see &lt;a href=&quot;#image_links&quot; title=&quot;wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;Image Links&lt;/a&gt; above.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Media Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;media_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6152-7518&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;supported_media_formats&quot;&gt;Supported Media Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki can embed the following media formats directly.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit14&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Image &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;gif&lt;/code&gt;, &lt;code&gt;jpg&lt;/code&gt;, &lt;code&gt;png&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Video &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;webm&lt;/code&gt;, &lt;code&gt;ogv&lt;/code&gt;, &lt;code&gt;mp4&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Audio &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;ogg&lt;/code&gt;, &lt;code&gt;mp3&lt;/code&gt;, &lt;code&gt;wav&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Flash &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;swf&lt;/code&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7612-7767&amp;quot;} --&gt;
&lt;p&gt;
If you specify a filename that is not a supported media format, then it will be displayed as a link instead.
&lt;/p&gt;

&lt;p&gt;
By adding &lt;code&gt;?linkonly&lt;/code&gt; you provide a link to the media without displaying it inline
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{wiki:dokuwiki-128.png?linkonly}}&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media mediafile mf_png&quot; title=&quot;wiki:dokuwiki-128.png (27.2 KB)&quot;&gt;dokuwiki-128.png&lt;/a&gt; This is just a link to the image.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Supported Media Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;supported_media_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7519-8072&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;fallback_formats&quot;&gt;Fallback Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Unfortunately not all browsers understand all video and audio formats. To mitigate the problem, you can upload your file in different formats for maximum browser compatibility.
&lt;/p&gt;

&lt;p&gt;
For example consider this embedded mp4 video:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{video.mp4|A funny video}}&lt;/pre&gt;

&lt;p&gt;
When you upload a &lt;code&gt;video.webm&lt;/code&gt; and &lt;code&gt;video.ogv&lt;/code&gt; next to the referenced &lt;code&gt;video.mp4&lt;/code&gt;, DokuWiki will automatically add them as alternatives so that one of the three files is understood by your browser.
&lt;/p&gt;

&lt;p&gt;
Additionally DokuWiki supports a «poster» image which will be shown before the video has started. That image needs to have the same filename as the video and be either a jpg or png file. In the example above a &lt;code&gt;video.jpg&lt;/code&gt; file would work.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fallback Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fallback_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;8073-8803&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;lists&quot;&gt;Lists&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a &lt;code&gt;*&lt;/code&gt; for unordered lists or a &lt;code&gt;-&lt;/code&gt; for ordered ones.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This is a list&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second item&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; You may have different levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The same list but ordered&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Just use indention for deeper levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; That&amp;#039;s it&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;code&quot;&gt;  * This is a list
  * The second item
    * You may have different levels
  * Another item

  - The same list but ordered
  - Another item
    - Just use indention for deeper levels
  - That&amp;#039;s it&lt;/pre&gt;

&lt;p&gt;
Also take a look at the &lt;a href=&quot;https://www.dokuwiki.org/faq:lists&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq:lists&quot;&gt;FAQ on list items&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lists&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lists&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8804-9463&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;text_conversions&quot;&gt;Text Conversions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki can convert certain pre-defined characters or strings into images or other text or &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
The text to image conversion is mainly done for smileys. And the text to &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; conversion is used for typography replacements, but can be configured to use other &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9464-9768&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;text_to_image_conversions&quot;&gt;Text to Image Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki converts commonly used &lt;a href=&quot;https://en.wikipedia.org/wiki/emoticon&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/emoticon&quot;&gt;emoticon&lt;/a&gt;s to their graphical equivalents. Those &lt;a href=&quot;https://www.dokuwiki.org/Smileys&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Smileys&quot;&gt;Smileys&lt;/a&gt; and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm.png&quot; class=&quot;icon smiley&quot; alt=&quot;8-)&quot; /&gt;   8-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/eek.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-O&quot; /&gt;   8-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_1.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-(&quot; /&gt;   :-(  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;   :-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_3.png&quot; class=&quot;icon smiley&quot; alt=&quot;=)&quot; /&gt;    =)   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_4.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-/&quot; /&gt;   :-/  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_5.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-\&quot; /&gt;   :-\  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_6.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-?&quot; /&gt;   :-?  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_7.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-D&quot; /&gt;   :-D  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-P   :-P  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-O   :-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-X   :-X  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-|   :-|  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ;-)   ;-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ^_^   ^_^  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; m(    m(   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/question.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:?:&quot; /&gt;   :?:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;   :!:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_8.png&quot; class=&quot;icon smiley&quot; alt=&quot;LOL&quot; /&gt;   LOL  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;   FIXME &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/deleteme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;DELETEME&quot; /&gt;  DELETEME &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to Image Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_image_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9769-10444&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;text_to_html_conversions&quot;&gt;Text to HTML Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Typography: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
&lt;/p&gt;

&lt;p&gt;
→ ← ↔ ⇒ ⇐ ⇔ » « – — 640&amp;times;480 © ™ ®
«He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;…»
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-&amp;gt; &amp;lt;- &amp;lt;-&amp;gt; =&amp;gt; &amp;lt;= &amp;lt;=&amp;gt; &amp;gt;&amp;gt; &amp;lt;&amp;lt; -- --- 640x480 (c) (tm) (r)
&amp;quot;He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;...&amp;quot;&lt;/pre&gt;

&lt;p&gt;
The same can be done to produce any kind of &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, it just needs to be added to the &lt;a href=&quot;https://www.dokuwiki.org/entities&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/entities&quot;&gt;pattern file&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
There are three exceptions which do not come from that pattern file: multiplication entity (640&amp;times;480), &amp;#039;single&amp;#039; and «double quotes». They can be turned off through a &lt;a href=&quot;https://www.dokuwiki.org/config:typography&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config:typography&quot;&gt;config option&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to HTML Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_html_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10445-11152&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;quoting&quot;&gt;Quoting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some times you want to mark some text to show it&amp;#039;s a reply or comment. You can use the following syntax:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;I think we should do it

&amp;gt; No we shouldn&amp;#039;t

&amp;gt;&amp;gt; Well, I say we should

&amp;gt; Really?

&amp;gt;&amp;gt; Yes!

&amp;gt;&amp;gt;&amp;gt; Then lets do it!&lt;/pre&gt;

&lt;p&gt;
I think we should do it
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 No we shouldn&amp;#039;t&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Well, I say we should&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Really?&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Yes!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Then lets do it!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Quoting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quoting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;11153-11518&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;tables&quot;&gt;Tables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports a simple syntax to create tables.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit22&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2       &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; colspan=&quot;2&quot;&gt; some colspan (note the double pipe) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 3 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 3 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;11592-11823&amp;quot;} --&gt;
&lt;p&gt;
Table rows have to start and end with a &lt;code&gt;|&lt;/code&gt; for normal rows or a &lt;code&gt;^&lt;/code&gt; for headers.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2       ^ Heading 3          ^
| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
| Row 2 Col 1    | some colspan (note the double pipe) ||
| Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |&lt;/pre&gt;

&lt;p&gt;
To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
&lt;/p&gt;

&lt;p&gt;
Vertical tableheaders are possible, too.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit23&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;              &lt;/td&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 1            &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 2          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 3    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 4    &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; no colspan this time &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 5    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;12343-12586&amp;quot;} --&gt;
&lt;p&gt;
As you can see, it&amp;#039;s the cell separator before a cell which decides about the formatting:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;|              ^ Heading 1            ^ Heading 2          ^
^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        |
^ Heading 4    | no colspan this time |                    |
^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can have rowspans (vertically connected cells) by adding &lt;code&gt;:::&lt;/code&gt; into the cells below the one to which they should connect.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit24&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2                  &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; rowspan=&quot;3&quot;&gt; this cell spans vertically &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;13065-13340&amp;quot;} --&gt;
&lt;p&gt;
Apart from the rowspan syntax those cells should not contain anything else.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2                  ^ Heading 3          ^
| Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        |
| Row 2 Col 1    | :::                        | Row 2 Col 3        |
| Row 3 Col 1    | :::                        | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot; colspan=&quot;3&quot;&gt;           Table with alignment           &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;    center    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;left          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;left          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;    center    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;13949-14136&amp;quot;} --&gt;
&lt;p&gt;
This is how it looks in the source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^           Table with alignment           ^^^
|         right|    center    |left          |
|left          |         right|    center    |
| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |&lt;/pre&gt;

&lt;p&gt;
Note: Vertical alignment is not supported.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;11519-14415&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;no_formatting&quot;&gt;No Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you need to display text exactly like it is typed (without any formatting), enclose the area either with &lt;code&gt;&amp;lt;nowiki&amp;gt;&lt;/code&gt; tags or even simpler, with double percent signs &lt;code&gt;%%&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;

This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.

The same is true for //__this__ text// with a smiley ;-).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;nowiki&amp;gt;
This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
&amp;lt;/nowiki&amp;gt;
The same is true for %%//__this__ text// with a smiley ;-)%%.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;14416-15071&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit27&quot; id=&quot;code_blocks&quot;&gt;Code Blocks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;This is preformatted code all spaces are preserved: like              &amp;lt;-this&lt;/pre&gt;
&lt;pre class=&quot;file&quot;&gt;This is pretty much the same, but you could use it to show that you quoted a file.&lt;/pre&gt;

&lt;p&gt;
Those blocks were created by this source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;code&amp;gt;
This is preformatted code all spaces are preserved: like              &amp;lt;-this
&amp;lt;/code&amp;gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file&amp;gt;
This is pretty much the same, but you could use it to show that you quoted a file.
&amp;lt;/file&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;15072-15813&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;syntax_highlighting&quot;&gt;Syntax Highlighting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can highlight sourcecode, which makes it easier to read. It uses the &lt;a href=&quot;http://qbnz.com/highlighter/&quot; class=&quot;urlextern&quot; title=&quot;http://qbnz.com/highlighter/&quot; rel=&quot;ugc nofollow&quot;&gt;GeSHi&lt;/a&gt; Generic Syntax Highlighter – so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. &lt;code&gt;&amp;lt;code java&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file java&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code java&quot;&gt;&lt;span class=&quot;co3&quot;&gt;/**
 * The HelloWorldApp class implements an application that
 * simply displays &amp;quot;Hello World!&amp;quot; to the standard output.
 */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; HelloWorldApp &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; args&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span class=&quot;me1&quot;&gt;out&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//Display the string.&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
The following language strings are currently recognized: &lt;em&gt;4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
There are additional &lt;a href=&quot;https://www.dokuwiki.org/syntax_highlighting&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax_highlighting&quot;&gt;advanced options&lt;/a&gt; available for syntax highlighting, such as highlighting lines or adding line numbers.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Highlighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_highlighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;15814-18599&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;downloadable_code_blocks&quot;&gt;Downloadable Code Blocks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When you use the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; syntax as above, you might want to make the shown code available for download as well. You can do this by specifying a file name after language code like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file php myexample.php&amp;gt;
&amp;lt;?php echo &amp;quot;hello world!&amp;quot;; ?&amp;gt;
&amp;lt;/file&amp;gt;&lt;/pre&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:syntax&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;myexample.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
If you don&amp;#039;t want any highlighting but want a downloadable file, specify a dash (&lt;code&gt;-&lt;/code&gt;) as the language code: &lt;code&gt;&amp;lt;code - myfile.foo&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Downloadable Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;downloadable_code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;18600-19129&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;rss_atom_feed_aggregation&quot;&gt;RSS/ATOM Feed Aggregation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can integrate data from external XML feeds. For parsing the XML feeds, &lt;a href=&quot;http://simplepie.org/&quot; class=&quot;urlextern&quot; title=&quot;http://simplepie.org/&quot; rel=&quot;ugc nofollow&quot;&gt;SimplePie&lt;/a&gt; is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit31&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Parameter  &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; any number &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; will be used as maximum number items to show, defaults to 8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; reverse    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; display the last items in the feed first &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; author     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item authors names &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; date       &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item dates &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; description&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show the item description. All &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; tags will be stripped &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; nosort     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; do not sort the items in the feed &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;em&gt;n&lt;/em&gt;[dhm] &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;19450-19903&amp;quot;} --&gt;
&lt;p&gt;
The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; to re-render the page if it is more than &lt;em&gt;refresh period&lt;/em&gt; since the page was last rendered.
&lt;/p&gt;

&lt;p&gt;
By default the feed will be sorted by date, newest items first. You can sort it by oldest first using the &lt;code&gt;reverse&lt;/code&gt; parameter, or display the feed as is with &lt;code&gt;nosort&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Example:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{rss&amp;gt;http://slashdot.org/index.rss 5 author date 1h }}&lt;/pre&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://tech.slashdot.org/story/26/06/05/211249/the-us-military-quietly-turned-gps-into-a-global-numbers-station-evidence-suggests?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://tech.slashdot.org/story/26/06/05/211249/the-us-military-quietly-turned-gps-into-a-global-numbers-station-evidence-suggests?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;The US Military Quietly Turned GPS Into a Global &amp;#039;Numbers Station,&amp;#039; Evidence Suggests&lt;/a&gt;  — BeauHD (2026/06/06 02:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://hardware.slashdot.org/story/26/06/05/2017239/google-will-pay-spacex-920-million-per-month-for-compute?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://hardware.slashdot.org/story/26/06/05/2017239/google-will-pay-spacex-920-million-per-month-for-compute?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;Google Will Pay SpaceX $920 Million Per Month For Compute&lt;/a&gt;  — BeauHD (2026/06/06 01:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://it.slashdot.org/story/26/06/05/202230/bitcoin-falls-to-60000-as-zcash-bug-rocks-crypto?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://it.slashdot.org/story/26/06/05/202230/bitcoin-falls-to-60000-as-zcash-bug-rocks-crypto?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;Bitcoin Falls To $60,000 As Zcash Bug Rocks Crypto&lt;/a&gt;  — BeauHD (2026/06/06 00:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://news.slashdot.org/story/26/06/05/1910242/340-local-news-outlets-now-blocking-the-internet-archive?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://news.slashdot.org/story/26/06/05/1910242/340-local-news-outlets-now-blocking-the-internet-archive?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;340 Local News Outlets Now Blocking the Internet Archive&lt;/a&gt;  — BeauHD (2026/06/05 23:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://news.slashdot.org/story/26/06/05/1839258/govuk-goes-dutch-on-payments-as-it-dumps-stripe?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://news.slashdot.org/story/26/06/05/1839258/govuk-goes-dutch-on-payments-as-it-dumps-stripe?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;GOV.UK Goes Dutch On Payments As It Dumps Stripe&lt;/a&gt;  — BeauHD (2026/06/05 22:00)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSS\/ATOM Feed Aggregation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rss_atom_feed_aggregation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;19130-20595&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;control_macros&quot;&gt;Control Macros&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit33&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Macro           &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ~~NOTOC~~   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; If this macro is found on the page, no table of contents will be created &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ~~NOCACHE~~ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the &amp;lt;php&amp;gt; syntax above is used), adding this macro will force DokuWiki to rerender a page on every call &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;20756-21098&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Control Macros&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;control_macros&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;20596-21099&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;syntax_plugins&quot;&gt;Syntax Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki&amp;#039;s syntax can be extended by &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Plugins&lt;/a&gt;. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:autotooltip&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:autotooltip&quot; rel=&quot;ugc nofollow&quot;&gt;Auto-Tooltip&lt;/a&gt; &lt;em&gt;2026-01-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#64;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#46;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&quot; class=&quot;mail&quot; title=&quot;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#64;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#46;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&quot;&gt;Eli Fenton&lt;/a&gt;&lt;br/&gt;
Syntax and helper plugins for tooltips, including automatically generated tips based on page abstract.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:cellbg&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:cellbg&quot; rel=&quot;ugc nofollow&quot;&gt;Cells background color plugin&lt;/a&gt; &lt;em&gt;2013-10-09&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#64;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#64;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;dr4Ke&lt;/a&gt;&lt;br/&gt;
Sets background of a cell with a specific color&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:codeprettify&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:codeprettify&quot; rel=&quot;ugc nofollow&quot;&gt;Code Prettifier&lt;/a&gt; &lt;em&gt;2023-09-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot; class=&quot;mail&quot; title=&quot;&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
syntax highlighting of source code snippets in wiki page using Javascript code prettifier&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:dbquery&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:dbquery&quot; rel=&quot;ugc nofollow&quot;&gt;dbquery plugin&lt;/a&gt; &lt;em&gt;2025-07-24&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Display query results from a database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:description&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:description&quot; rel=&quot;ugc nofollow&quot;&gt;description plugin&lt;/a&gt; &lt;em&gt;2025-05-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Mark C. Prins, Ikuo Obataya, Matthias Schulte&lt;/a&gt;&lt;br/&gt;
Add a specified string to a description meta header&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:diagrams&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:diagrams&quot; rel=&quot;ugc nofollow&quot;&gt;Diagrams plugin&lt;/a&gt; &lt;em&gt;2025-10-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Innovakom + CosmoCode&lt;/a&gt;&lt;br/&gt;
Embed diagrams.net editor (formerly draw.io)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://nikita.melnichenko.name/projects/dokuwiki-diagram/index.php&quot; class=&quot;urlextern&quot; title=&quot;http://nikita.melnichenko.name/projects/dokuwiki-diagram/index.php&quot; rel=&quot;ugc nofollow&quot;&gt;Diagram plugin&lt;/a&gt; &lt;em&gt;2021-02-21&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#117;&amp;#112;&amp;#112;&amp;#111;&amp;#114;&amp;#116;&amp;#64;&amp;#109;&amp;#101;&amp;#108;&amp;#110;&amp;#105;&amp;#99;&amp;#104;&amp;#101;&amp;#110;&amp;#107;&amp;#111;&amp;#46;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#117;&amp;#112;&amp;#112;&amp;#111;&amp;#114;&amp;#116;&amp;#64;&amp;#109;&amp;#101;&amp;#108;&amp;#110;&amp;#105;&amp;#99;&amp;#104;&amp;#101;&amp;#110;&amp;#107;&amp;#111;&amp;#46;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&quot;&gt;Nikita Melnichenko&lt;/a&gt;&lt;br/&gt;
Constructs diagrams&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:discussion&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/plugin:discussion&quot; rel=&quot;ugc nofollow&quot;&gt;discussion plugin&lt;/a&gt; &lt;em&gt;2021-12-31&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gerrit Uitslag, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner, Matthias Schulte&lt;/a&gt;&lt;br/&gt;
Provides discussion funtionality for wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;DokuTeaser Plugin&lt;/a&gt; &lt;em&gt;2016-01-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
A plugin for internal use on dokuwiki.org only&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://github.com/mmedvede/dokuwiki-plugin-fontawesome&quot; class=&quot;urlextern&quot; title=&quot;http://github.com/mmedvede/dokuwiki-plugin-fontawesome&quot; rel=&quot;ugc nofollow&quot;&gt;fontawesome plugin&lt;/a&gt; &lt;em&gt;2013-10-10&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#109;&amp;#101;&amp;#100;&amp;#118;&amp;#101;&amp;#100;&amp;#101;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#117;&amp;#109;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#109;&amp;#101;&amp;#100;&amp;#118;&amp;#101;&amp;#100;&amp;#101;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#117;&amp;#109;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Mikhail Medvedev&lt;/a&gt;&lt;br/&gt;
Embed Font Awesome icons&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:gallery&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:gallery&quot; rel=&quot;ugc nofollow&quot;&gt;Gallery Plugin&lt;/a&gt; &lt;em&gt;2024-04-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Creates a gallery of images from a namespace or RSS/ATOM feed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/Sideboard/dokuwiki-plugin-htmldetailstag&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/Sideboard/dokuwiki-plugin-htmldetailstag&quot; rel=&quot;ugc nofollow&quot;&gt;HTML Details Tag Plugin&lt;/a&gt; &lt;em&gt;2021-03-18&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#114;&amp;#101;&amp;#118;&amp;#111;&amp;#108;&amp;#117;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#97;&amp;#114;&amp;#116;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#114;&amp;#101;&amp;#118;&amp;#111;&amp;#108;&amp;#117;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#97;&amp;#114;&amp;#116;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Sascha Klawohn&lt;/a&gt;&lt;br/&gt;
Use the HTML &amp;lt;details&amp;gt; and &amp;lt;summary&amp;gt; tag for toggling information&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:htmlmetatags&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:htmlmetatags&quot; rel=&quot;ugc nofollow&quot;&gt;htmlmetatags plugin&lt;/a&gt; &lt;em&gt;2024-03-04&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#104;&amp;#101;&amp;#105;&amp;#107;&amp;#111;&amp;#46;&amp;#104;&amp;#101;&amp;#105;&amp;#110;&amp;#122;&amp;#64;&amp;#115;&amp;#111;&amp;#102;&amp;#116;&amp;#50;&amp;#99;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#104;&amp;#101;&amp;#105;&amp;#107;&amp;#111;&amp;#46;&amp;#104;&amp;#101;&amp;#105;&amp;#110;&amp;#122;&amp;#64;&amp;#115;&amp;#111;&amp;#102;&amp;#116;&amp;#50;&amp;#99;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Heiko Heinz&lt;/a&gt;&lt;br/&gt;
Set html and open graph meta tags.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:htmlok&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:htmlok&quot; rel=&quot;ugc nofollow&quot;&gt;htmlok plugin&lt;/a&gt; &lt;em&gt;2023-05-10&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;saggi, glen&lt;/a&gt;&lt;br/&gt;
Allows embed HTML and PHP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:icons&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:icons&quot; rel=&quot;ugc nofollow&quot;&gt;Icons Plugin&lt;/a&gt; &lt;em&gt;2024-10-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#103;&amp;#105;&amp;#117;&amp;#115;&amp;#101;&amp;#112;&amp;#112;&amp;#101;&amp;#46;&amp;#100;&amp;#105;&amp;#116;&amp;#101;&amp;#114;&amp;#108;&amp;#105;&amp;#122;&amp;#122;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#105;&amp;#117;&amp;#115;&amp;#101;&amp;#112;&amp;#112;&amp;#101;&amp;#46;&amp;#100;&amp;#105;&amp;#116;&amp;#101;&amp;#114;&amp;#108;&amp;#105;&amp;#122;&amp;#122;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Giuseppe Di Terlizzi&lt;/a&gt;&lt;br/&gt;
Embed icons in Dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:info&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:info&quot; rel=&quot;ugc nofollow&quot;&gt;Info Plugin&lt;/a&gt; &lt;em&gt;2020-06-04&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays information about various DokuWiki internals&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:meta&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:meta&quot; rel=&quot;ugc nofollow&quot;&gt;Meta plugin&lt;/a&gt; &lt;em&gt;2024-08-07&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann&lt;/a&gt;&lt;br/&gt;
Set Metadata for the current page. (previous authors: Esther Brunner, Gina Häußge, Michael Klier)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:note&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:note&quot; rel=&quot;ugc nofollow&quot;&gt;Note Plugin&lt;/a&gt; &lt;em&gt;2024-04-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot;&gt;Anael Mobilia&lt;/a&gt;&lt;br/&gt;
Add Note/Important/Tip/Warning Capability (DIV+CSS box)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; rel=&quot;ugc nofollow&quot;&gt;Pagelist Plugin&lt;/a&gt; &lt;em&gt;2023-08-27&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Matthias Schulte, Michael Hamann, Michael Klier, Gina Haeussge&lt;/a&gt;&lt;br/&gt;
Lists pages in a nice formatted way&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:phpwikify&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:phpwikify&quot; rel=&quot;ugc nofollow&quot;&gt;PHP Wikify&lt;/a&gt; &lt;em&gt;2020-06-05&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#116;&amp;#114;&amp;#97;&amp;#105;&amp;#108;&amp;#106;&amp;#101;&amp;#101;&amp;#112;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#116;&amp;#114;&amp;#97;&amp;#105;&amp;#108;&amp;#106;&amp;#101;&amp;#101;&amp;#112;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Trailjeep&lt;/a&gt;&lt;br/&gt;
Allows one the possibility of having output of PHP scripts parsed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:repository&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:repository&quot; rel=&quot;ugc nofollow&quot;&gt;Repository plugin&lt;/a&gt; &lt;em&gt;2024-02-09&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#110;&amp;#100;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#104;&amp;#97;&amp;#107;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#110;&amp;#100;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#104;&amp;#97;&amp;#107;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Andreas Gohr/Håkan Sandell&lt;/a&gt;&lt;br/&gt;
Helps organizing the plugin and template repository&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:rating&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:rating&quot; rel=&quot;ugc nofollow&quot;&gt;rating plugin&lt;/a&gt; &lt;em&gt;2016-01-13&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#103;&amp;#111;&amp;#104;&amp;#114;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#111;&amp;#104;&amp;#114;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Allows rating a page&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/tschinz/dokuwiki_stars_plugin&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/tschinz/dokuwiki_stars_plugin&quot; rel=&quot;ugc nofollow&quot;&gt;Stars2 Plugin&lt;/a&gt; &lt;em&gt;2025-02-07&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#122;&amp;#97;&amp;#115;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#122;&amp;#97;&amp;#115;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Zahno Silvan&lt;/a&gt;&lt;br/&gt;
Embedding Rating Stars&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:statdisplay&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:statdisplay&quot; rel=&quot;ugc nofollow&quot;&gt;DokuWiki statdisplay plugin&lt;/a&gt; &lt;em&gt;2022-12-12&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays log statistics about your DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:stepbystep&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:stepbystep&quot; rel=&quot;ugc nofollow&quot;&gt;StepByStep plugin&lt;/a&gt; &lt;em&gt;2023-09-25&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;saggi&lt;/a&gt;&lt;br/&gt;
Displays step-by-step tutorials, spoilers, or more information about a topic&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:tablelayout&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/plugin:tablelayout&quot; rel=&quot;ugc nofollow&quot;&gt;tablelayout plugin&lt;/a&gt; &lt;em&gt;2022-03-28&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Große&lt;/a&gt;&lt;br/&gt;
Set the width of table columns and set which lines to fix&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:tag&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:tag&quot; rel=&quot;ugc nofollow&quot;&gt;Tag Plugin&lt;/a&gt; &lt;em&gt;2023-10-17&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner&lt;/a&gt;&lt;br/&gt;
tag wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:translation&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:translation&quot; rel=&quot;ugc nofollow&quot;&gt;Translation Plugin&lt;/a&gt; &lt;em&gt;2025-05-20&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Supports the easy setup of a multi-language wiki.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:typography&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:typography&quot; rel=&quot;ugc nofollow&quot;&gt;Typography plugin&lt;/a&gt; &lt;em&gt;2020-07-31&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot; class=&quot;mail&quot; title=&quot;&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
Enable typesetting capabilities with CSS font properties such as font face, size, weight, and color of text&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:wrap&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:wrap&quot; rel=&quot;ugc nofollow&quot;&gt;Wrap Plugin&lt;/a&gt; &lt;em&gt;2023-08-13&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Anika Henke&lt;/a&gt;&lt;br/&gt;
Universal plugin which combines functionalities of many other plugins. Wrap wiki text inside containers (divs or spans) and give them a class (choose from a variety of preset classes), a width and/or a language with its associated text direction.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:xref&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:xref&quot; rel=&quot;ugc nofollow&quot;&gt;PHPXref Plugin&lt;/a&gt; &lt;em&gt;2024-04-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Makes linking to a PHPXref generated API doc easy.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Plugins&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_plugins&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;21100-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;This is a footnote&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;when the aspect ratio of the given width and height doesn&amp;#039;t match that of the image, it will be cropped to the new ratio before resizing&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 24 Aug 2025 14:58:37 +0000</pubDate>
        </item>
        <item>
            <title>javascript</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:javascript&amp;rev=1723675982</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;javascript&quot;&gt;JavaScript&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Для удобства «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;ДокуВики&lt;/a&gt;» позволяет использовать программистам &lt;a href=&quot;https://en.wikipedia.org/wiki/wiki:JavaScript&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/wiki:JavaScript&quot;&gt;JavaScript&lt;/a&gt;. Также как и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:css&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config:css&quot; data-wiki-id=&quot;wiki:config:css&quot;&gt;страницы стилей CSS&lt;/a&gt;, все файлы JavaScript загружаются через программу-диспетчер с целью уменьшения количества HTTP-запросов, для кэширования, а также удаления пробелов и комментариев (настройка &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:compress&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config:compress&quot; data-wiki-id=&quot;wiki:config:compress&quot;&gt;compress&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Эта статья даст общее представление о том, как скрипты JavaScript загружаются из ядра «ДокуВики», &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugins&quot; data-wiki-id=&quot;wiki:plugins&quot;&gt;плагинов&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:template:template&quot; class=&quot;wikilink2&quot; title=&quot;wiki:template:template&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:template:template&quot;&gt;шаблонов&lt;/a&gt;. Также здесь содержится информация об обработке событий и стиля программирования, когда JavaScript используются в ДокуВики.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;JavaScript&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;javascript&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1092&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;загрузка_javascript&quot;&gt;Загрузка JavaScript&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Все Java скрипты собираются и загружаются через &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:xref:dokuwiki:lib:exe:js.php&quot; class=&quot;media mediafile mf_php&quot; title=&quot;wiki:xref:dokuwiki:lib:exe:js.php (11 KB)&quot;&gt;js.php&lt;/a&gt;, который объединяет все найденные файлы яваскрипта, убирает пробелы и комментарии (если включена опция &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:compress&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config:compress&quot; data-wiki-id=&quot;wiki:config:compress&quot;&gt;compress&lt;/a&gt;) и помещает результат в кэш. Также он (&lt;code&gt;js.php&lt;/code&gt;) даёт команду браузеру помещать в кэш результат, так что, когда вы разрабатываете новый яваскрит, не забывайте сбрасывать кэш браузера (например Shift+F5, Shift+CTL+R и тому подобное) всякий раз, когда ваш скрипт изменён. Если ваш сайт сидит в облаке, в отдельных случаях может потребоваться touch его настроек.
&lt;/p&gt;

&lt;p&gt;
«ДокуВики» получает JavaScript из:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; автоматически сгенерированные яваскрипты (языковые строки, настройки конфигурации, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:toolbar&quot; class=&quot;wikilink1&quot; title=&quot;wiki:toolbar&quot; data-wiki-id=&quot;wiki:toolbar&quot;&gt;панель инструментов&lt;/a&gt;);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; lib/scripts/*.js &lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; lib/plugins/*/script.js;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; lib/tpl/&amp;lt;currenttemplate&amp;gt;/script.js;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; conf/userscript.js.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Из вышеизложенного следует, что использование яваскриптов возможно в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:templates&quot; class=&quot;wikilink1&quot; title=&quot;wiki:templates&quot; data-wiki-id=&quot;wiki:templates&quot;&gt;шаблонах&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugins&quot; data-wiki-id=&quot;wiki:plugins&quot;&gt;плагинах&lt;/a&gt; (с помощью файла &lt;code&gt;script.js&lt;/code&gt;), а также возможно определить свои собственные скрипты в &lt;code&gt;conf/userscript.js&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Также яваскрипт может быть добавлен в &lt;code&gt;main.php&lt;/code&gt;, расположенном в &lt;code&gt;lib/tpl/&amp;lt;currenttemplate&amp;gt;&lt;/code&gt;. Хорошо знакомый &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-код &amp;lt;head&amp;gt; &amp;lt;/head&amp;gt; принимает JavaScript.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;об_атрибутах_внешних_скриптов&quot;&gt;Об атрибутах внешних скриптов&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Однако до загрузки файла скрипта, особенно если он крупный, рендеринг сайта будет останавливаться, это стандартное поведение браузеров служит очень частой причиной для недовольства «Dokuwiki». Кроме того, скрипт исполняется немедленно после загрузки, не дожидаясь окончания сборки самой страницы. До появления атрибутов &lt;a href=&quot;http://htmlbook.ru/html/script/defer&quot; class=&quot;urlextern&quot; title=&quot;http://htmlbook.ru/html/script/defer&quot; rel=&quot;ugc nofollow&quot;&gt;defer&lt;/a&gt; в &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; 4.01 (откладывающего запуск скрипта до окончания загрузки его цели) и &lt;a href=&quot;http://htmlbook.ru/html/script/async&quot; class=&quot;urlextern&quot; title=&quot;http://htmlbook.ru/html/script/async&quot; rel=&quot;ugc nofollow&quot;&gt;async&lt;/a&gt; в &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; 5 (процесса, полностью независимого от рендеринга) для тега &amp;lt;script&amp;gt; работающие со страницей скрипты рекомендовалось размещать в конце неё. Async рекомендуется для библиотечных скриптов, а defer - для обрабатывающих страницу, и размещать теги с такими атрибутами можно на привычном месте внутри тега head. Но если defer-скрипт опирается на async-библиотеку и та так увесиста, что не всегда успевает грузиться даже до его старта, то defer-скрипт всё же придётся поставить в конец шаблона.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 JavaScript&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430_javascript&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1093-5150&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;синтаксис_подключения_использования_include&quot;&gt;Синтаксис подключения, использования (include)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Диспетчер яваскриптов «ДокуВики» позволяет использовать специальные (особые) комментарии, чтобы подгружать отличные от вышеописанных файлы скриптов. Это важно для случаев, когда в основном только один файл яваскрипт подвергается анализу (разбору) диспетчером, например в плагинах и шаблонах.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Подключаемые файлы не проверяются механизмом кэширования на предмет обновления. Необходимо изменить основной файл, чтобы запустить механизм кэширования.
&lt;/p&gt;

&lt;p&gt;
Либо использовать самообновляющий детектор &lt;code&gt;&amp;lt;script charset=«UTF-8» src=«/lib/tpl/шаблон/editor.js?ver=&amp;#039; . date ( «y-m-d_H:i:s», filemtime ( &amp;#039;/var/www/сайт/lib/tpl/шаблон/editor.js&amp;#039; ) ) . &amp;#039;» defer&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Подключения (includes) &lt;strong&gt;не&lt;/strong&gt; поддерживаются внутри подключаемых файлов с целью предотвращения кольцевых ссылок (рекурсии).
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Путь для подключения (includepath) должен содержать только буквы, цифры, знак подчёркивания, знак дроби и точку.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;include&quot;&gt;include&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/* DOKUWIKI:include somefile.js */&lt;/pre&gt;

&lt;p&gt;
Этот код включит указанный файл в то место, где был расположен комментарий. Путь к файлу по умолчанию относительный, но будет абсолютный, если поставить в начале знак дроби (&lt;code&gt;/&lt;/code&gt;). 
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;include_once&quot;&gt;include_once&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;/* DOKUWIKI:include_once common_library.js */&lt;/pre&gt;

&lt;p&gt;
Этот код включит указанный файл в то место, где был расположен комментарий. Путь к файлу по умолчанию относительный, но будет абсолютный, если поставить в начале знак дроби (&lt;code&gt;/&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
Указанный файл будет подключен (использован), только если файл с аналогичным имененм не подгружался ранее с помощью оператора &lt;code&gt;include_once&lt;/code&gt;. Данное имя файла будет доступно через любые другие скриптовые файлы (из всех плагинов), поэтому стоит давать понятное наименование такому файлу.
&lt;/p&gt;

&lt;p&gt;
Использование этого оператора имеет смысл, если разрабатываются несколько независимых &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugins&quot; data-wiki-id=&quot;wiki:plugins&quot;&gt;плагинов&lt;/a&gt;, каждый из которых использует одну и ту же библиотеку яваскрипт. Использование оператора &lt;code&gt;include_once&lt;/code&gt; несколько раз с одинаковым именем подключаемого файла даст гарантию того, что библиотека будет подгружена только один раз, даже если будет установлено несколько плагинов одновременно.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (include)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441_\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f_\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f_include&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5151-8800&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;рекомендации_по_написанию_кода_программированию&quot;&gt;Рекомендации по написанию кода (программированию)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Когда JavaScript используется в «ДокуВики», необходимо соблюдать несколько правил, поскольку ошибка в скрипте может привести не только к его прерыванию (остановке), но и к сбою всех скриптов в «ДокуВики».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u043a\u043e\u0434\u0430 (\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438_\u043f\u043e_\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e_\u043a\u043e\u0434\u0430_\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;8801-9272&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;проверка_вашего_программного_кода&quot;&gt;Проверка вашего программного кода&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As mentioned above, DokuWiki will shrink the JavaScript code when the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:compress&quot; class=&quot;wikilink2&quot; title=&quot;config:compress&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:compress&quot;&gt;compress&lt;/a&gt; option is enabled (which it is by default). To do this without introducing syntax errors, the JavaScript has to be checked more strictly than it might be when run uncompressed.
&lt;/p&gt;

&lt;p&gt;
To check your code you should use the &lt;a href=&quot;http://www.jslint.com/&quot; class=&quot;urlextern&quot; title=&quot;http://www.jslint.com/&quot; rel=&quot;ugc nofollow&quot;&gt;JSLint&lt;/a&gt; online service.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; debug your code with &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:compress&quot; class=&quot;wikilink2&quot; title=&quot;config:compress&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:compress&quot;&gt;compress&lt;/a&gt; disabled but&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; verify your code still works with &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:compress&quot; class=&quot;wikilink2&quot; title=&quot;config:compress&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:compress&quot;&gt;compress&lt;/a&gt; enabled&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0432\u0430\u0448\u0435\u0433\u043e_\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e_\u043a\u043e\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;9273-9829&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;use_unobtrusive_javascript&quot;&gt;Use unobtrusive JavaScript&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Do not assume people have JavaScript enabled, when writing new DokuWiki functionality. Instead use JavaScript as enhancement of the user interface only, when JavaScript is not available you code should fallback to normal page reload based behavior.
&lt;/p&gt;

&lt;p&gt;
To help you with this DokuWiki has a few predefined functions to help you with &lt;a href=&quot;#event_handling&quot; title=&quot;wiki:config:javascript ↵&quot; class=&quot;wikilink1&quot;&gt;Event Handling&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Use unobtrusive JavaScript&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;use_unobtrusive_javascript&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9830-10219&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;avoid_inappropriate_mixing&quot;&gt;Avoid Inappropriate Mixing&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The old way of doing things is to embed JavaScript directly in the &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;.  However, JavaScript and (X)&lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; shouldn&amp;#039;t be mixed, and indeed with DokuWiki there are many cases where they &lt;em&gt;cannot&lt;/em&gt; be mixed.  Here are some examples of &lt;strong&gt;INAPPROPRIATE MIXING&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;onload&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;refreshPage()&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;some HTML&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;JavaScript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
  doSomethingHere();
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/script.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;script&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;more &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://example.com&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;onclick&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;doSomethingElse()&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;HTML&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/body.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;body&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
This isn&amp;#039;t just a matter of philosophical purity: some of the JavaScript may not work.  In the above example, it turns out that both DokuWiki and the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; tag are trying to assign the page&amp;#039;s &lt;code&gt;onload&lt;/code&gt; handler to different JavaScript functions. Browsers cannot handle this conflict and the results are unpredictable.
&lt;/p&gt;

&lt;p&gt;
Strictly speaking, it is possible to embed JavaScript in your &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, but only if you know that the JavaScript has no conflict with DokuWiki. Because this requires knowledge of DokuWiki&amp;#039;s implementation, and because DokuWiki&amp;#039;s implementation can change, this is still not a good idea. It&amp;#039;s wiser to be philosophically pure.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Avoid Inappropriate Mixing&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;avoid_inappropriate_mixing&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;10220-11546&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;using_ids&quot;&gt;Using IDs&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
To modify a DOM object the JavaScript must be able to locate the object. The easiest way to locate the object is to give the associated &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; tag an ID.  This ID must be unique among all IDs on the page so that referencing this ID produces exactly the right DOM object.
&lt;/p&gt;

&lt;p&gt;
When you are producing your own &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; (e.g. from a template or plugin) that should be accessed from JavaScript later, be sure that the ID does not conflict with an existing ID. In particular, be sure that it won&amp;#039;t conflict with the IDs automatically assigned to section headers. The easiest way to ensure this is to use two adjacent underscores (&lt;code&gt;__&lt;/code&gt;) in your ID. Because section IDs are always valid &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=pagenames&quot; class=&quot;wikilink2&quot; title=&quot;pagenames&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;pagenames&quot;&gt;pagenames&lt;/a&gt;, they will never contain adjacent underscores.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Using IDs&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;using_ids&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;11547-12306&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;inline_scripts&quot;&gt;Inline scripts&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As said before you should avoid mixing JavaScript and XHTML. However if you need to use inline JavaScript, you should wrap it like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!--//--&amp;gt;&amp;lt;![CDATA[//&amp;gt;&amp;lt;!--
...
//--&amp;gt;&amp;lt;!]]&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

&lt;p&gt;
This ensures your script code is served in the most compatible way. Some more info is available at the &lt;a href=&quot;http://www.w3.org/TR/xhtml1/#h-4.8&quot; class=&quot;urlextern&quot; title=&quot;http://www.w3.org/TR/xhtml1/#h-4.8&quot; rel=&quot;ugc nofollow&quot;&gt; XHTML 1.0: Script and Style elements&lt;/a&gt; specification and &lt;a href=&quot;http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597&quot; class=&quot;urlextern&quot; title=&quot;http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-E067D597&quot; rel=&quot;ugc nofollow&quot;&gt;CDATA section interface&lt;/a&gt; definition.
&lt;/p&gt;

&lt;p&gt;
If you need to add inline JavaScript to the &amp;lt;head&amp;gt; section you should write an &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:action_plugin&quot; class=&quot;wikilink2&quot; title=&quot;wiki:config:action_plugin&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:config:action_plugin&quot;&gt;action_plugin&lt;/a&gt; and handle the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:events_list#tpl_metaheader_output&quot; class=&quot;wikilink2&quot; title=&quot;wiki:config:events_list&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:config:events_list&quot;&gt;TPL_METAHEADER_OUTPUT&lt;/a&gt; event.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Inline scripts&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;inline_scripts&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;12307-13033&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;dokuwiki_javascript_library&quot;&gt;DokuWiki JavaScript Library&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki does not use any of the bigger JavaScript libraries like Prototype, Dojo or JQuery. Instead it comes with a small set of handy classes and functions that may help you with writing JavaScript code for DokuWiki.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki JavaScript Library&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_javascript_library&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;13034-13294&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;event_handling&quot;&gt;Event Handling&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
As said in &lt;a href=&quot;#avoid_inappropriate_mixing&quot; title=&quot;wiki:config:javascript ↵&quot; class=&quot;wikilink1&quot;&gt;Avoid Inappropriate Mixing&lt;/a&gt;, event handlers should not be mixed into &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; code. Instead those handlers should be assigned when the &lt;a href=&quot;https://en.wikipedia.org/wiki/Document Object Model&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Document Object Model&quot;&gt;Document Object Model&lt;/a&gt; (DOM) was loaded. The DOM is a tree-based object representation of the &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; that is available to the JavaScript.  Your JavaScript need merely figure out which objects to attach functions to and then to attach functions to them.
&lt;/p&gt;

&lt;p&gt;
To attach functions to any given DOM Object in a cross-browser compatible way, the &lt;strong&gt;&lt;code&gt;addEvent()&lt;/code&gt;&lt;/strong&gt; function is provided. It takes the DOM object, an event name (like &amp;#039;click&amp;#039;) and a callback function (the handler) as arguments. This function also takes care of multiple plugins trying to register an event on the same DOM object.
&lt;/p&gt;

&lt;p&gt;
Additionally, &lt;code&gt;addEvent()&lt;/code&gt; changes the properties and methods of the event in Internet Explorer - so you can use the &lt;code&gt;target&lt;/code&gt; property and can call the &lt;code&gt;preventDefault()&lt;/code&gt; and &lt;code&gt;stopPropagation()&lt;/code&gt; methods.
&lt;/p&gt;

&lt;p&gt;
Unfortunately, the JavaScript in your &lt;code&gt;script.js&lt;/code&gt; loads before the &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; has finished loading and before the DOM tree has been made.  The objects that the JavaScript needs don&amp;#039;t yet exist. However, you may still run JavaScript when &lt;code&gt;script.js&lt;/code&gt; loads, as long as that JavaScript doesn&amp;#039;t require DOM.
&lt;/p&gt;

&lt;p&gt;
To solve this problem DokuWiki provides the &lt;strong&gt;&lt;code&gt;addInitEvent()&lt;/code&gt;&lt;/strong&gt; function. This function will register a given callback to be run as soon as the DOM is ready.
&lt;/p&gt;

&lt;p&gt;
Here&amp;#039;s an example (from the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:summary_enforcement&quot; class=&quot;wikilink2&quot; title=&quot;tips:summary_enforcement&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:summary_enforcement&quot;&gt;summary_enforcement&lt;/a&gt; tip) using both methods:
&lt;/p&gt;
&lt;pre class=&quot;code javascript&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; enforceSummary&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;coMULTI&quot;&gt;/*...*/&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;function&lt;/span&gt; installSummaryEnforcement&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;var&lt;/span&gt; summary_input &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; document.&lt;span class=&quot;me1&quot;&gt;getElementById&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&#039;edit__summary&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;summary_input &lt;span class=&quot;sy0&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;coMULTI&quot;&gt;/*...*/&lt;/span&gt;
        addEvent&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;summary_input&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;change&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; enforceSummary&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        addEvent&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;summary_input&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&#039;keyup&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; enforceSummary&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
addInitEvent&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;installSummaryEnforcement&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
In this example, we need to attach &lt;code&gt;enforceSummary()&lt;/code&gt; to the &lt;code&gt;onchange&lt;/code&gt; and &lt;code&gt;onkeyup&lt;/code&gt; handlers for the summary input field. &lt;code&gt;installSummaryEnforcement()&lt;/code&gt; does this.
&lt;/p&gt;

&lt;p&gt;
The call to &lt;code&gt;addInitEvent()&lt;/code&gt; will run the &lt;code&gt;installSummaryEnforcement()&lt;/code&gt; function as soon as the DOM is loaded.
&lt;/p&gt;

&lt;p&gt;
Notice how &lt;code&gt;installSummaryEnforcement()&lt;/code&gt; itself works.  First it acquires a DOM object by ID (though there are other ways to acquire it).  In this case the object may not exist since the summary field is only shown when editing a page, so the function first tests to see if it got the object.  If it did, it calls &lt;code&gt;addEvent()&lt;/code&gt; to attach &lt;code&gt;enforceSummary()&lt;/code&gt; to the event handlers.
&lt;/p&gt;

&lt;p&gt;
The DokuWiki event functions were originally provided by Dean Edwards &lt;a href=&quot;http://dean.edwards.name/weblog/2005/10/add-event/&quot; class=&quot;urlextern&quot; title=&quot;http://dean.edwards.name/weblog/2005/10/add-event/&quot; rel=&quot;ugc nofollow&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://dean.edwards.name/weblog/2005/10/add-event2/&quot; class=&quot;urlextern&quot; title=&quot;http://dean.edwards.name/weblog/2005/10/add-event2/&quot; rel=&quot;ugc nofollow&quot;&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For deeper insight on the event system see the &lt;a href=&quot;http://dev.splitbrain.org/reference/dokuwiki/nav.html?lib/scripts/events.js.source.html&quot; class=&quot;urlextern&quot; title=&quot;http://dev.splitbrain.org/reference/dokuwiki/nav.html?lib/scripts/events.js.source.html&quot; rel=&quot;ugc nofollow&quot;&gt;source&lt;/a&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Event Handling&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;event_handling&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;13295-16245&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;predefined_global_variable&quot;&gt;Predefined Global Variable&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki defines certain JavaScript variables for the use in your script:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_BASE&lt;/code&gt; – the full webserver path to the DokuWiki installation&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_TPL&lt;/code&gt; – the full webserver path to the used &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=template&quot; class=&quot;wikilink2&quot; title=&quot;template&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;template&quot;&gt;Template&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;LANG&lt;/code&gt; – an array of languagestrings&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Predefined Global Variable&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;predefined_global_variable&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;16246-16546&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;sack_ajax_library&quot;&gt;SACK (AJAX) Library&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki provides a simple AJAX library named &lt;code&gt;SACK&lt;/code&gt; by Gregory Wild-Smith.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See the &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/tw-sack.js&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/tw-sack.js&quot; rel=&quot;ugc nofollow&quot;&gt;Source tw-sack.js&lt;/a&gt; for details on how to use it.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SACK (AJAX) Library&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sack_ajax_library&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;16547-16793&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;section&quot;&gt;$()&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The $() function is a handy shortcut to the all-too-frequent &lt;code&gt;document.getElementById()&lt;/code&gt; function of the DOM. Like the DOM function, this one returns the element that has the id passed as an argument. Unlike the DOM function, though, this one goes further. You can pass more than one id and $() will return an Array object with all the requested elements. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Taken from the &lt;a href=&quot;http://prototype.conio.net/&quot; class=&quot;urlextern&quot; title=&quot;http://prototype.conio.net/&quot; rel=&quot;ugc nofollow&quot;&gt;prototype library&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; See &lt;a href=&quot;http://www.sergiopereira.com/articles/prototype.js.html&quot; class=&quot;urlextern&quot; title=&quot;http://www.sergiopereira.com/articles/prototype.js.html&quot; rel=&quot;ugc nofollow&quot;&gt;Docs by Sergio Pereira&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;$()&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;16794-17329&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;additional_functions&quot;&gt;Additional functions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki provides various other tool methods. Especially the following might be useful for your development: isset, getElementsByClass, findPosX, findPosY, jsEscape, prependChild.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; For details check the source of these files:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/script.js&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/script.js&quot; rel=&quot;ugc nofollow&quot;&gt;script.js&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/helpers.js&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/lib/scripts/helpers.js&quot; rel=&quot;ugc nofollow&quot;&gt;helpers.js&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Additional functions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;additional_functions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;17330-17776&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;jsinfo&quot;&gt;JSINFO&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Since &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/commit/85b9dd81bb1eac380c07b7491f48e23fb74a0923&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/commit/85b9dd81bb1eac380c07b7491f48e23fb74a0923&quot; rel=&quot;ugc nofollow&quot;&gt;november 23, 2009&lt;/a&gt; DokuWiki passes the global &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:environment#jsinfo&quot; class=&quot;wikilink2&quot; title=&quot;devel:environment&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:environment&quot;&gt;$JSINFO&lt;/a&gt; to javascript. (see the mailinglist &lt;a href=&quot;http://www.freelists.org/post/dokuwiki/INFO,44&quot; class=&quot;urlextern&quot; title=&quot;http://www.freelists.org/post/dokuwiki/INFO,44&quot; rel=&quot;ugc nofollow&quot;&gt;mailinglist&lt;/a&gt;)
&lt;/p&gt;

&lt;p&gt;
The usual way in a plugin is this:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; register&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Doku_Event_Handler &lt;span class=&quot;re0&quot;&gt;$controller&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$controller&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;register_hook&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKUWIKI_STARTED&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;AFTER&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;_adduser&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; _adduser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$event&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$param&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$JSINFO&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$JSINFO&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REMOTE_USER&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; add exact time when the array is send to JavaScript
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;JSINFO&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;jsinfo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;17777-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;чтобы избежать излишней загрузки скриптов для тех, кто читает статью, содержимое &lt;code&gt;edit.js&lt;/code&gt; и &lt;code&gt;media.js&lt;/code&gt; загружается только в режиме редактирования или отображения медиафайлов&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Please note as well that there is no &lt;code&gt;language&lt;/code&gt; attribute of the &lt;code&gt;script&lt;/code&gt; tag! Instead use &lt;code&gt;type=«text/javascript»&lt;/code&gt; to be standards compliant.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 14 Aug 2024 22:53:02 +0000</pubDate>
        </item>
        <item>
            <title>logging</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:logging&amp;rev=1768846402</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;ведение_журнала&quot;&gt;Ведение журнала&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.patreon.com/posts/better-logging-44629895&quot; class=&quot;urlextern&quot; title=&quot;https://www.patreon.com/posts/better-logging-44629895&quot; rel=&quot;ugc nofollow&quot;&gt;Вводная запись в блоге&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-148&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;лесозаготовительные_объекты&quot;&gt;Лесозаготовительные объекты&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Системы логирования классифицируют зарегистрированные сообщения об ошибках. Они соответствуют каталогам в директории &lt;code&gt;data/log/&lt;/code&gt; Плагины могут использовать свои собственные системы..
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;В DokuWiki&lt;/a&gt; по умолчанию определены три средства ведения журналов:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;error&lt;/code&gt; – всё, что не должно произойти и является результатом проблемы с кодом, средой, конфигурацией или взаимодействием с пользователем.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;deprecated&lt;/code&gt; – регистрирует использование устаревшего кода. Трассировка стека должна помочь определить код, который необходимо обновить.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;debug&lt;/code&gt; – сообщения, которые помогают в процессе разработки или настройки, но обычно не требуются.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Какие именно объекты следует регистрировать, можно настроить с помощью опции &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:dontlog&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config:dontlog&quot; data-wiki-id=&quot;wiki:config:dontlog&quot;&gt;dontlog&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Если вам нужно только записывать сообщения об ошибках, без устаревших команд, и отлаживать код, то используйте следующую строку в файле.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;conf/dokuwiki.php&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Должно выглядеть вот так.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;$conf[&amp;#039;dontlog&amp;#039;] = &amp;#039;deprecated,debug&amp;#039;;&lt;/code&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u0435\u0441\u043e\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u0435\u0441\u043e\u0437\u0430\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435_\u043e\u0431\u044a\u0435\u043a\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;149-1905&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;автоматическая_регистрация_ошибок&quot;&gt;Автоматическая регистрация ошибок&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki регистрирует обработчики ошибок, которые автоматически пытаются перехватить все возникающие исключения, ошибки и фатальные события. При этом отображается информационное сообщение для конечного пользователя, а ошибка регистрируется в &lt;code&gt;error&lt;/code&gt; соответствующей системе.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f_\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f_\u043e\u0448\u0438\u0431\u043e\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1906-2487&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;формат_журнала&quot;&gt;Формат журнала&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u043e\u0440\u043c\u0430\u0442 \u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u043e\u0440\u043c\u0430\u0442_\u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2488-2536&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;пользовательское_ведение_журнала&quot;&gt;Пользовательское ведение журнала&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435_\u0432\u0435\u0434\u0435\u043d\u0438\u0435_\u0436\u0443\u0440\u043d\u0430\u043b\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2537-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 19 Jan 2026 18:13:22 +0000</pubDate>
        </item>
        <item>
            <title>parser</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser&amp;rev=1737111227</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;парсер_докувики&quot;&gt;Парсер «Докувики»&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В этом документе излагаются детали функционирования парсера «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;Докувики&lt;/a&gt;», которые могут понадобиться разработчикам для модификации поведения парсера или получения контроля над выходным документом, возможно, изменив сгенерированный &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; или реализовав другие форматы вывода.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0430\u0440\u0441\u0435\u0440 \u00ab\u0414\u043e\u043a\u0443\u0432\u0438\u043a\u0438\u00bb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0430\u0440\u0441\u0435\u0440_\u0434\u043e\u043a\u0443\u0432\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-573&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;обзор&quot;&gt;Обзор&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Парсер разбивает процесс трансформации исходного документа «Докувики» в финальный выходной документ (обычно XHTML) на дискретные стадии. Каждая стадия представлена одним или несколькими PHP-классами.
&lt;/p&gt;

&lt;p&gt;
В общем рассмотрении этими элементами являются;
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Lexer&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; (лексический анализатор): сканирует&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; исходный документ «Докувики» и выводит последовательность «вхождений» (токенов&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;), соответствующих синтаксической структуре документа.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Handler&lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; (обработчик): получает вхождения от анализатора и преобразует их в последовательность «инструкций»&lt;sup&gt;&lt;a href=&quot;#fn__5&quot; id=&quot;fnt__5&quot; class=&quot;fn_top&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt;. Он описывает, как должет быть сформирован выходной документ, от начала до конца.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Parser&lt;sup&gt;&lt;a href=&quot;#fn__6&quot; id=&quot;fnt__6&quot; class=&quot;fn_top&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt; (парсер): «связывает» лексический анализатор с обработчиком, предоставляя синтаксические правила «Докувики», а также точку доступа к системе (метод &lt;code&gt;Parser::parse()&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Renderer&lt;sup&gt;&lt;a href=&quot;#fn__7&quot; id=&quot;fnt__7&quot; class=&quot;fn_top&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; (преобразователь): принимает инструкции от обработчика и «отрисовывает» готовый к выводу документ (например, в виде XHTML).&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Механизма для соединения Handler (обработчика)  с Renderer (логическим преобразователем) &lt;strong&gt;не предусмотрено&lt;/strong&gt; — для этого требуется кодирование для каждого конкретного случая использования.
&lt;/p&gt;

&lt;p&gt;
Схематическая диаграмма связей между компонентами;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    ┌────────────┐           ┌────────────┐
    │            │   Ввод    │ Клиентский │
    │   Парсер   ◄───────────┤ код        │
    │            │  Строка   │            │
    └─────┬──────┘           └─────▲──────┘
  Режимы  │                        │
    +     │        Инструкции      │
  Строка  │        преобразователя │
  ввода   │                        │
    ┌─────▼──────┐           ┌─────┴──────┐
    │            │           │            │
    │ Анализатор ├───────────► Обработчик │
    │            │ Вхождения │            │
    └─────┬──────┘           └────────────┘
          │
          │
     ┌────┴───┐
     │ Режимы ├─┐
     └─┬──────┘ ├─┐
       └─┬──────┘ │
         └────────┘&lt;/pre&gt;

&lt;p&gt;
«Клиентский код» (код, использующий парсер) вызывает парсер, передавая ему входную строку. В ответ ему возвращается перечень «инструкций» преобразователя, построенных обработчиком. Они могут быть использованы неким объектом, реализующим преобразователь.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание:&lt;/strong&gt; критическим моментом здесь является намерение позволить преобразователю быть настолько «тупым», насколько это возможно. От него &lt;em&gt;не&lt;/em&gt; требуется осуществлять дальнейшую интерпретацию или модификацию переданных инструкций, но полностью сконцентрироваться на формировании выходных данных (например, XHTML) — в особенности, преобразователю не следует отслеживать состояния. Соблюдение этого принципа и, кроме того, составление преобразователя достаточно простым для реализации (сосредоточенной исключтельно на том, что следует выводить), также сделает возможным преобразователю быть взаимозаменяемым (например, вывод PDF в качестве альтернативы XHTML). В то же самое время, выходные инструкции обработчика &lt;em&gt;направляются&lt;/em&gt; для преобразования в XHTML и не всегда могут быть пригодынми для всех выходных форматов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u0437\u043e\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u0437\u043e\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;574-7307&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;лексический_анализатор&quot;&gt;Лексический анализатор&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Определяется в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;inc/Parsing/Lexer/Lexer.php&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
В самом общем смысле, он реализует инструмент для управления комплексными регулярными выражениями, где важным является состояние. Анализатор появился из &lt;a href=&quot;https://simpletest.sourceforge.net/en/start-testing.html&quot; class=&quot;urlextern&quot; title=&quot;https://simpletest.sourceforge.net/en/start-testing.html&quot; rel=&quot;ugc nofollow&quot;&gt;Simple Test &lt;/a&gt;, но содержит три модификации (читай: «хака»):
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; поддержка шаблонов просмотра назад и просмотра вперед&lt;sup&gt;&lt;a href=&quot;#fn__8&quot; id=&quot;fnt__8&quot; class=&quot;fn_top&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; поддержка изменения модификаторов шаблона в пределах шаблона;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; уведомление обработчика о начальном индексе байта в необработанном тексте, где был сопоставлен токен.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Короче говоря, лексер Simple Test действует как инструмент, упрощающий управление регулярными выражениями — вместо гигантских регулярных выражений вы пишете много маленьких/простых. Лексер заботится об их эффективном объединении, а затем предоставляет вам &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; обратного вызова в стиле SAX , чтобы вы могли писать код для ответа на соответствующие «события».
&lt;/p&gt;

&lt;p&gt;
В целом Lexer состоит из трех основных классов;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20parallelregex.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:lexer:parallelregex.php&quot;&gt;inc/Parsing/Lexer/ParallelRegex&lt;/a&gt;: позволяет строить регулярные выражения из нескольких отдельных шаблонов, каждый шаблон связан с идентифицирующей «меткой», класс объединяет их в одно регулярное выражение с помощью подшаблонов. &lt;em&gt;При использовании Lexer вам не нужно беспокоиться об этом классе.&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20statestack.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:lexer:statestack.php&quot;&gt;inc/Parsing/Lexer/StateStack&lt;/a&gt;: предоставляет простой конечный автомат, чтобы лексирование могло быть «контекстно-зависимым». &lt;em&gt;При использовании Lexer вам не нужно беспокоиться об этом классе.&lt;/em&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;inc/Parsing/Lexer/Lexer&lt;/a&gt;: предоставляет точку доступа для клиентского кода с помощью Lexer. Управляет несколькими экземплярами ParallelRegex, используя StateStack для применения правильного экземпляра ParallelRegex в зависимости от «контекста». При обнаружении «интересного текста» вызывает функции для предоставленного пользователем объекта (Handler).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;необходимость_в_состояниях&quot;&gt;Необходимость в состояниях&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Синтаксис вики, используемый в «Докувики», содержит разметку, «внутри» которой применяются только определённые синтаксические правила. Самый очевидный пример — тэг &amp;lt;code/&amp;gt; , внутри которого синтаксис вики не будет распознаваться анализатором. Для других синтаксических конструкций, таких как списки или таблицы, следует позволять использовать &lt;em&gt;некоторую&lt;/em&gt; разметку, но не всю, например, в списка можно использовать ссылки, но не таблицы.
&lt;/p&gt;

&lt;p&gt;
Анализатор обеспечивает «осведомлённость о состояниях», позволяющую применять корректные синтаксические правила в зависимости от текущий позиции (контекста) в сканируемом тексте. Если он видит открывающий тэг &amp;lt;code&amp;gt;, он переключается в другое состояние, в пределах которого другие синтаксические правила не применяются (т. е. что-либо, что выглядит как синтаксис вики должно восприниматься как «простой» текст), до тех пор, пока не найдёт закрывающий тэг &amp;lt;/code&amp;gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;режимы_анализатора&quot;&gt;Режимы анализатора&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Термин &lt;em&gt;режим&lt;/em&gt; обозначает особенное состояние лексического анализа &lt;sup&gt;&lt;a href=&quot;#fn__9&quot; id=&quot;fnt__9&quot; class=&quot;fn_top&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt;. Код, использующий анализатор, регистрирует один или более шаблон регулярного выражения с особенным наименованием режима. Затем анализатор, сравнивая эти паттерны со сканируемым текстом, вызывает функции обработчика с тем же самым наименованием режима (если метод &lt;code&gt;mapHandler&lt;/code&gt; не был использован для создания псевдонимов — см. ниже).
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;api_анализатора&quot;&gt;API анализатора&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Краткое введение в лексический анализатор можно найти в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser:test:simple_test_lexer_notes&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser:test:simple_test_lexer_notes&quot; data-wiki-id=&quot;wiki:devel:parser:test:simple_test_lexer_notes&quot;&gt;Simple Test Lexer Notes&lt;/a&gt;. Здесь предлагается более подробное описание.
&lt;/p&gt;

&lt;p&gt;
Ключевыми методами анализатора являются:
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;конструктор&quot;&gt;Конструктор&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
Принимает ссылку на объект Handler, имя начального режима, в котором должен запускаться Lexer, и (необязательно) логический флаг, указывающий, должно ли сопоставление с образцом учитывать регистр.
&lt;/p&gt;

&lt;p&gt;
Пример:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; MyHandler &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; dokuwiki\Lexer\Lexer &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Здесь указан начальный режим &amp;#039;base&amp;#039;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;addentrypattern_addexitpattern&quot;&gt;addEntryPattern / addExitPattern&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;code&gt;addEntryPattern()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;Lexer.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Lexer.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;75&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addEntryPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$new_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ParallelRegex&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$new_mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;code&gt;addExitPattern()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;Lexer.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Lexer.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;89&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addExitPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ParallelRegex&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;__exit&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;addEntryPattern()&lt;/a&gt; и &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;addExitPattern()&lt;/a&gt; используются для регистрации шаблона для входа и выхода из определенного режима анализа. Например;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// arg0: регулярное выражение для сопоставления — обратите внимание, что нет необходимости добавлять разделители начального/конечного шаблона &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// arg1: имя режима, в котором может использоваться этот шаблон записи &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// arg2: имя режима для ввода &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;file&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// arg0: регулярное выражение для сопоставления &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// arg1: имя режима для выхода &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/file&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Код, приведённый выше, позволяет тэгу &amp;lt;file/&amp;gt; быть использованный при входе из базового в новый режим (&lt;code&gt;file&lt;/code&gt;). Если в дальнейшем следует применить режимы, пока анализатор находится в режиме &lt;code&gt;file&lt;/code&gt;, они должны быть зарегистрированы с режимом &lt;code&gt;file&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; в паттернах не требуется использование ограничителей (разделителей начала и конца шаблона).
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;addpattern&quot;&gt;addPattern&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;code&gt;addEntryPattern()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;Lexer.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Lexer.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;57&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;accept&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ParallelRegex&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;code&gt;addEntryPattern()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20parallelregex.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:lexer:parallelregex.php&quot;&gt;ParallelRegex.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=5&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;ParallelRegex.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;53&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$label&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$label&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;addEntryPattern()&lt;/a&gt; используется, чтобы реагировать на дополнительные «вхождения» внутри существующего режима (без переходов). Он принимает паттерн и наименование режима, внутри которого должен использоваться.
&lt;/p&gt;

&lt;p&gt;
Это наиболее наглядно видно из разбора парсером синтаксиса списков. Синтаксис списков выглядит в «Докувики» следующим образом;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;До списка
  * Ненумерованный элемент списка
  * Ненумерованный элемент списка
  * Ненумерованный элемент списка
После списка&lt;/pre&gt;

&lt;p&gt;
Использование &lt;code&gt;addPattern()&lt;/code&gt; делает возможным сравнивать полный список, одновременно корректно захватывая каждый элемент списка;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Сопоставляем открывающий элемент списка и меняем режим &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\n {2,}[\*]&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Сопоставить новые элементы списка, но остаться в режиме списка &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\n {2,}[\*]&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Если это перевод строки, который не соответствует указанному выше правилу addPattern, выходим из режима &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\n&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;list&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;addspecialpattern&quot;&gt;addSpecialPattern&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;code&gt;addSpecialPattern()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;Lexer.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Lexer.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;107&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addSpecialPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$special&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; ParallelRegex&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regexes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;_&lt;span class=&quot;es4&quot;&gt;$special&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;addSpecialPattern()&lt;/a&gt; используется для входа в новый режим только для совпадения, а затем сразу возвращается в «родительский» режим. Принимает шаблон, имя режима, в котором он может быть применен, и имя «временного» режима для входа для совпадения. Обычно это используется, если вы хотите заменить разметку wiki чем-то другим. Например, чтобы сопоставить смайлик, например :-), у вас может быть:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;:-)&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;smiley&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h5 id=&quot;maphandler&quot;&gt;mapHandler&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
&lt;code&gt;mapHandler()&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;Lexer.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=10&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Lexer.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol start=&quot;121&quot;&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; mapHandler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;mode_handlers&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20lexer%20lexer.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parsing:lexer:lexer.php&quot;&gt;mapHandler()&lt;/a&gt; позволяет сопоставить определенный именованный режим с методом с другим именем в Handler. Это может быть полезно, когда разный синтаксис должен обрабатываться одинаково, например, синтаксис DokuWiki для отключения другого синтаксиса внутри определенного текстового блока;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;nowiki&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;%%&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;unformattedalt&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;%%&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;unformattedalt&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Оба синтаксиса должны обрабатываться одинаково... &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;mapHandler&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;unformattedalt&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;подшаблоны_не_допускаются&quot;&gt;Подшаблоны не допускаются&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Поскольку Lexer (анализатор) сам использует &lt;strong&gt;подшаблоны&lt;/strong&gt; (внутри класса &lt;code&gt;ParallelRegex&lt;/code&gt;), код, &lt;em&gt;использующий&lt;/em&gt; анализатор, этого не может. Иногда это может пригодиться, но, по общему правилу, метод &lt;code&gt;addPattern()&lt;/code&gt; может быть применён для решения проблем, когда обычно применяются подшаблоны. Его преимущество в том, что он делает регулярные выражения более простыми и, следовательно, более простыми в управлении.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; если вы используете в шаблоне круглые скобки, они будут &lt;em&gt;автоматически&lt;/em&gt; пропущены анализатором.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;синтаксические_ошибки_и_состояния&quot;&gt;Синтаксические ошибки и состояния&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Для предотвращение «плохо форматируемой» (особенно при пропуске закрывающих тэгов) разметки, приводящей к тому, что Lexer (анализатор) входит в состояние (режим), который он никогда не покинет, может быть полезным использование паттерна просмотра вперёд для проверки наличия закрывающей разметки&lt;sup&gt;&lt;a href=&quot;#fn__10&quot; id=&quot;fnt__10&quot; class=&quot;fn_top&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt;. Например:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Использование просмотра вперёд во входном шаблоне...&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Использовать предпросмотр в шаблоне записи... &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;file&amp;gt;(?=.*&amp;lt;/file&amp;gt;)&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/file&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Шаблон входа проверяет, может ли он найти закрывающий &lt;code&gt;&amp;lt;/file&amp;gt;&lt;/code&gt; тег, прежде чем войти в состояние.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439_\u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;7308-24963&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;handler_обработчик&quot;&gt;Handler (Обработчик)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Определено в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parser%20handler.php&quot; class=&quot;interwiki plugin_xref plugin_xref_err&quot; title=&quot;unknown definition&quot;&gt;inc/parser/handler.php&lt;/a&gt; и папке &lt;code&gt;inc/Parsing/Handler&lt;/code&gt;
&lt;/p&gt;

&lt;table class=&quot;diagram&quot;&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-sh&quot;&gt;&lt;div /&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-folder&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Handler&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; AbstractRewriter.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Block.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; CallWriter.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Nest.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Lists.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; CallWriterInterface.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Preformatted.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Quote.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; ReWriterInterface.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td class=&quot;d-brs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-bbs&quot;&gt;&lt;/td&gt;
		&lt;td class=&quot;d-b&quot; style=&quot;text-align: left; border-color: white;&quot; colspan=&quot;6&quot; rowspan=&quot;2&quot;&gt;&lt;i class=&quot;dw-icons fa fa-file&quot; style=&quot;font-size:16px&quot; title=&quot;&quot;&gt;&lt;/i&gt; Table.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td class=&quot;d-sv&quot;&gt;&lt;div /&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
		&lt;td&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;
Handler — это класс, предоставляющий методы, которые вызывает Lexer, когда он сопоставляет токены. Затем он «тонко настраивает» токены в последовательность инструкций, готовых для Renderer.
&lt;/p&gt;

&lt;p&gt;
Обработчик в целом содержит следующие классы:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser:doku_handler&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser:doku_handler&quot; data-wiki-id=&quot;wiki:devel:parser:doku_handler&quot;&gt;Doku_Handler&lt;/a&gt;: все вызовы из Lexer производятся в этот класс. Для каждого режима, зарегистрированного в Lexer, будет соответствующий метод в Handler&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;code&gt;Doku_Handler&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20extension%20syntaxplugin.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:extension:syntaxplugin.php&quot;&gt;/dokuwiki/inc/Extension/SyntaxPlugin.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=13&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;SyntaxPlugin.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Doku_Handler&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;57&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;see Doku_Handler_Block
&lt;span class=&quot;nu0&quot;&gt;75&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;param Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt; The Doku_Handler object
&lt;span class=&quot;nu0&quot;&gt;77&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;param   Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt; The Doku_Handler object
&lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;code&gt;Doku_Handler&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20parser.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:parser.php&quot;&gt;/dokuwiki/inc/Parsing/Parser.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=14&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;Parser.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;use&lt;/span&gt; Doku_Handler&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;17&lt;/span&gt;  &lt;span class=&quot;co4&quot;&gt;/** @var Doku_Handler */&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;param Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;34&lt;/span&gt;  &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; __construct&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;code&gt;Doku_Handler&lt;/code&gt; в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parser%20handler.php&quot; class=&quot;interwiki plugin_xref plugin_xref_err&quot; title=&quot;unknown definition&quot;&gt;/dokuwiki/inc/parser/handler.php&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:parser&amp;amp;codeblock=15&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;handler.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;nu0&quot;&gt;16&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;Class&lt;/span&gt; Doku_Handler
&lt;span class=&quot;nu0&quot;&gt;18&lt;/span&gt;   &lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;40&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt; Doku_Handler constructor&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;795&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Doku_Handler_Parse_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;878&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$p&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; Doku_Handler_Parse_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;nu0&quot;&gt;1023&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Handler_Parse_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20callwriter.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:callwriter.php&quot;&gt;CallWriter&lt;/a&gt;: обеспечивает слой между массивом инструкций (массив &lt;code&gt;Doku_Handler::$calls&lt;/code&gt;)  и методами Handler, &lt;em&gt;записывающими&lt;/em&gt; эти инструкции. Пока идёт лексический анализ, он будет временно перемещён другими объектами, вроде &lt;code&gt;dokuwiki\Parsing\Handler\List&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20lists.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:lists.php&quot;&gt;List&lt;/a&gt;: отвечает за преобразование токенов списка в инструкции, пока выполняется лексический анализ&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20quote.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:quote.php&quot;&gt;Quote&lt;/a&gt;: отвечает за преобразование токенов &lt;code&gt;blockquote&lt;/code&gt; (текст, начинающийся с одного или нескольких &amp;gt;) в инструкции, пока выполняется лексический анализ&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20table.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:table.php&quot;&gt;Table&lt;/a&gt;: отвечает за преобразование токенов таблицы в инструкции, пока выполняется лексический анализ&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20block.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:block.php&quot;&gt;Block&lt;/a&gt;: отвечает за вставку инструкций «p_open» и «p_close», при этом отслеживая инструкции «уровня блока», после завершения всего лексического анализа (т.е. выполняет цикл один раз по всему списку инструкций и вставляет больше инструкций)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20abstractrewriter.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:abstractrewriter.php&quot;&gt;AbstractRewriter&lt;/a&gt;: расширено Preformattedи Nest… &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20nest.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:nest.php&quot;&gt;Nest&lt;/a&gt;: …&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20handler%20preformatted.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:handler:preformatted.php&quot;&gt;Preformatted&lt;/a&gt;: отвечает за преобразование предварительно отформатированных токенов (отступ в тексте dokuwiki) в инструкции, пока лексический анализ еще выполняется&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;

&lt;h4 id=&quot;методы_токенов_обработчиков&quot;&gt;Методы токенов обработчиков&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Обработчик должен предоставлять методы, названные в соответствии с режимами, зарегистрированными в лексическом анализаторе (имея в виду mapHandler() метод лексического анализатора — см. выше).
&lt;/p&gt;

&lt;p&gt;
Например, если вы зарегистрировали режим файла с помощью Lexer, например:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;file&amp;gt;(?=.*&amp;lt;/file&amp;gt;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/file&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Обработчику понадобится такой метод:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co4&quot;&gt;/**
    * @param string match содержит совпавший текст
    * @param int state - тип найденного соответствия (см. ниже)
    * @param int pos - индекс байта, где было найдено совпадение
    */&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Примечание:&lt;/strong&gt; метод Handler &lt;em&gt;должен&lt;/em&gt; возвращать &lt;strong&gt;true&lt;/strong&gt;, иначе Lexer немедленно остановится. Такое поведение может быть полезным при работе с другими типами проблем синтаксического анализа, но для парсера DokuWiki все методы Handler &lt;em&gt;всегда&lt;/em&gt; будут возвращать &lt;strong&gt;true&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Аргументы, реализумые методом обработчика;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;$match&lt;/code&gt;: текст, который был обнаружен;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;$state&lt;/code&gt;: содержит константу, которая описывает как именно было найдено совпадение:&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_ENTER&lt;/code&gt;: найден входной паттерн (см. Lexer::addEntryPattern);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_MATCHED&lt;/code&gt;: найден паттерн (см. Lexer::addPattern);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt;: внутри режима не было совпадений;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_EXIT&lt;/code&gt;: найден выходной паттерн (см. Lexer::addExitPattern);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_SPECIAL&lt;/code&gt;: найден специальный паттерн (см. Lexer::addSpecialPattern);&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;$pos&lt;/code&gt;: это индекс байта (длина строки от начала), где было найдено &lt;em&gt;начало&lt;/em&gt; вхождения. &lt;code&gt;$pos + strlen($match)&lt;/code&gt; даёт индекс байта конца совпадения.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
В качестве более сложного примера, для поиска списков в парсере определено следующее;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\n {2,}[\-\*]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\n\t{1,}[\-\*]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\n {2,}[\-\*]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\n\t{1,}[\-\*]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; postConnect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\n&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Метод &lt;code&gt;listblock&lt;/code&gt; в обработчике (вызов просто &lt;code&gt;list&lt;/code&gt; приводит к ошибке обработчика PHP, поскольку &lt;code&gt;list&lt;/code&gt; зарезервировано в PHP) выглядит как:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; listblock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// Начало списка...&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_ENTER&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// Создать List rewrite, пропуская текущий CallWriter&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$ReWriter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler_List&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Заменить текущий CallWriter на List rewriter&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// все поступающие вхождения (даже, если они не являются вхождениями list)&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;// теперь направляются в list&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ReWriter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;list_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// Для конца списка&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_EXIT&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;list_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Дать указание List rewriter об очистке&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;process&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Восстановить прежний CallWriter&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$ReWriter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ReWriter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;CallWriter&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_MATCHED&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;list_item&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_UNMATCHED&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;cdata&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;конвертирование_вхождений&quot;&gt;Конвертирование вхождений&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
«Тонкая обработка» задействует вставку символа дроби «/», переименование или удаление вхождений, переданных анализатором.
&lt;/p&gt;

&lt;p&gt;
Например, список вроде:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is not a list
  * This is the opening list item
  * This is the second list item
  * This is the last list item
This is also not a list&lt;/pre&gt;

&lt;p&gt;
в результате превратиться в последовательность вхождений вроде;
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;base: «This is not a list&amp;quot;, DOKU_LEXER_UNMATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: «\n  *&amp;quot;, DOKU_LEXER_ENTER&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: « This is the opening list item&amp;quot;, DOKU_LEXER_UNMATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: «\n  *&amp;quot;, DOKU_LEXER_MATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: « This is the second list item&amp;quot;, DOKU_LEXER_UNMATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: «\n  *&amp;quot;, DOKU_LEXER_MATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: « This is the last list item&amp;quot;, DOKU_LEXER_UNMATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listblock: «\n&amp;quot;, DOKU_LEXER_EXIT&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;base: «This is also not a list&amp;quot;, DOKU_LEXER_UNMATCHED&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Но чтобы быть использованными преобразователем, это может быть конвертировано в следующие инструкции:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;p_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;cdata: «This is not a list&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;p_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listu_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;cdata: « This is the opening list item&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;cdata: « This is the second list item&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;cdata: « This is the last list item&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;listitem_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;list_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;p_open:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;cdata: «This is also not a list&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;p_close:&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
В случае со списками, это требует помощи класса &lt;code&gt;Doku_Handler_List&lt;/code&gt;, который принимает вхождения, заменяя их на корректные инструкции для Преобразователя.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Handler (\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;handler_\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;24964-37160&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;parser_парсер&quot;&gt;Parser (Парсер)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Определено в &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20parser.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:parser.php&quot;&gt;/dokuwiki/inc/Parsing/Parser.php&lt;/a&gt; и &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parser%20parser.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for inc:parser:parser.php&quot;&gt;/dokuwiki/inc/parser/parser.php&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
dokuwiki &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20parser.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:parser.php&quot;&gt;\Parsing\Parser&lt;/a&gt; действует как интерфейс для внешнего кода и настраивает Lexer с помощью шаблонов и режимов, описывающих синтаксис DokuWiki.
&lt;/p&gt;

&lt;p&gt;
Использование парсера обычно выглядит так:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Создаем обработчик Handler&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создаем парсер с обработчиком &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; dokuwiki\Parsing\Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавить требуемые режимы синтаксиса в парсер &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footnote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; dokuwiki\Parsing\ParserMode\Footnote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;hr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; dokuwiki\Parsing\ParserMode\Hr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; dokuwiki\Parsing\ParserMode\Unformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;# etc.
&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;wikipage.txt.&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Более подробные примеры приведены ниже.
&lt;/p&gt;

&lt;p&gt;
В целом Parser также содержит классы, представляющие каждый доступный режим синтаксиса, базовым классом для всех них является &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=&amp;amp;path=inc%20parsing%20parsermode%20abstractmode.php&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for inc:parsing:parsermode:abstractmode.php&quot;&gt;dokuwiki\Parsing\ParserMode\AbstractMode&lt;/a&gt;. Поведение этих режимов лучше всего понять, рассмотрев примеры добавления синтаксиса далее в этом документе.
&lt;/p&gt;

&lt;p&gt;
Причина представления режимов с помощью классов заключается в том, чтобы избежать повторных вызовов методов Lexer. Без них пришлось бы жестко кодировать каждое правило шаблона для каждого режима, в котором может быть сопоставлен шаблон, например, регистрация одного правила шаблона для синтаксиса ссылок CamelCase потребовала бы чего-то вроде:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;base&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;footnote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;table&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;strong&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;underline&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// и т.д.&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Каждый режим, которому разрешено содержать ссылки CamelCase, должен быть явно назван.
&lt;/p&gt;

&lt;p&gt;
Вместо того, чтобы жестко кодировать это, вместо этого это реализовано с использованием одного класса, например:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; dokuwiki\Parsing\ParserMode&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; CamelCaseLink &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; AbstractMode &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;\b[A-Z]+[a-z]+[A-Z][A-Za-z]*\b&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
При настройке лексического анализатора парсер вызывает &lt;code&gt;connectTo()&lt;/code&gt; метод объекта &lt;code&gt;dokuwiki\Parsing\ParserMode\CamelCaseLink&lt;/code&gt; для каждого другого режима, который принимает синтаксис CamelCase (некоторым такой &lt;code&gt;&amp;lt;code /&amp;gt;&lt;/code&gt; синтаксис не нравится).
&lt;/p&gt;

&lt;p&gt;
За счет усложнения понимания настройки лексического анализатора это позволяет сделать код более гибким при добавлении нового синтаксиса.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Parser (\u041f\u0430\u0440\u0441\u0435\u0440)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;parser_\u043f\u0430\u0440\u0441\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:21,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;37161-41382&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;формат_данных_инструкций&quot;&gt;Формат данных инструкций&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:parserarray&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:parserarray&quot; data-wiki-id=&quot;wiki:plugin:parserarray&quot;&gt;Плагин Parserarray&lt;/a&gt; — это экспортный рендерер, который показывает инструкции для текущей страницы. Он может помочь вам понять формат данных. Ниже показан пример сырого текста вики и соответствующий вывод парсера;
&lt;/p&gt;

&lt;p&gt;
Исходный текст (содержит таблицу):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;abc
| Row 0 Col 1    | Row 0 Col 2     | Row 0 Col 3        |
| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
def&lt;/pre&gt;

&lt;p&gt;
После обработки будет возвращён следующий массив PHP (описан ниже):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Array(
    [0] =&amp;gt; Array(
            [0] =&amp;gt; document_start
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 0
        )
    [1] =&amp;gt; Array(
            [0] =&amp;gt; p_open
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 0
        )
    [2] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 

abc
                )
            [2] =&amp;gt; 0
        )
    [3] =&amp;gt; Array(
            [0] =&amp;gt; p_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 5
        )
    [4] =&amp;gt; Array(
            [0] =&amp;gt; table_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 3
                    [1] =&amp;gt; 2
                )
            [2] =&amp;gt; 5
        )
    [5] =&amp;gt; Array(
            [0] =&amp;gt; tablerow_open
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 5
        )
    [6] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 5
        )
    [7] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 0 Col 1
                )
            [2] =&amp;gt; 7
        )
    [8] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;     
                )
            [2] =&amp;gt; 19
        )
    [9] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 23
        )
    [10] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 23
        )
    [11] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 0 Col 2
                )
            [2] =&amp;gt; 24
        )
    [12] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;      
                )
            [2] =&amp;gt; 36
        )
    [13] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 41
        )
    [14] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 41
        )
    [15] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 0 Col 3
                )
            [2] =&amp;gt; 42
        )
    [16] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;         
                )
            [2] =&amp;gt; 54
        )
    [17] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 62
        )
    [18] =&amp;gt; Array(
            [0] =&amp;gt; tablerow_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 63
        )
    [19] =&amp;gt; Array(
            [0] =&amp;gt; tablerow_open
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 63
        )
    [20] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 63
        )
    [21] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 1 Col 1
                )
            [2] =&amp;gt; 65
        )
    [22] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;     
                )
            [2] =&amp;gt; 77
        )
    [23] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 81
        )
    [24] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 81
        )
    [25] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 1 Col 2
                )
            [2] =&amp;gt; 82
        )
    [26] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;      
                )
            [2] =&amp;gt; 94
        )
    [27] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 99
        )
    [28] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_open
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; 1
                    [1] =&amp;gt; left
                )
            [2] =&amp;gt; 99
        )
    [29] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;  Row 1 Col 3
                )
            [2] =&amp;gt; 100
        )
    [30] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt;         
                )
            [2] =&amp;gt; 112
        )
    [31] =&amp;gt; Array(
            [0] =&amp;gt; tablecell_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 120
        )
    [32] =&amp;gt; Array(
            [0] =&amp;gt; tablerow_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 121
        )
    [33] =&amp;gt; Array(
            [0] =&amp;gt; table_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 121
        )
    [34] =&amp;gt; Array(
            [0] =&amp;gt; p_open
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 121
        )
    [35] =&amp;gt; Array(
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array(
                    [0] =&amp;gt; def

                )
            [2] =&amp;gt; 122
        )
    [36] =&amp;gt; Array(
            [0] =&amp;gt; p_close
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 122
        )
    [37] =&amp;gt; Array(
            [0] =&amp;gt; document_end
            [1] =&amp;gt; Array()
            [2] =&amp;gt; 122
        )
)&lt;/pre&gt;

&lt;p&gt;
Верхний уровень массива — это просто список. Каждый из его дочерних элементов описывает возвратную функцию, которая будет запущена под преобразователем (см. описание &lt;a href=&quot;#renderer_преобразователь&quot; title=&quot;wiki:devel:parser ↵&quot; class=&quot;wikilink1&quot;&gt;Renderer&lt;/a&gt; ниже), также как и индекс байта исходного текста, где был найден особенный «элемент» синтаксиса вики.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;единственная_инструкция&quot;&gt;Единственная инструкция&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Рассмотрим единственный элемент, который представляет единственную инструкцию, из списка инструкций, приведённого выше:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    [35] =&amp;gt; Array
        (
            [0] =&amp;gt; cdata
            [1] =&amp;gt; Array
                (
                    [0] =&amp;gt; def

                )
            [2] =&amp;gt; 122
        )&lt;/pre&gt;

&lt;p&gt;
Первый элемент (индекс 0) — это имя метода или функции в Renderer, которую необходимо выполнить.
&lt;/p&gt;

&lt;p&gt;
Второй элемент (индекс 1) сам по себе является массивом, каждый из элементов которого является аргументом для метода Renderer, который будет вызван.
&lt;/p&gt;

&lt;p&gt;
В этом случае имеется один аргумент со значением &lt;code&gt;&amp;quot;def\n&amp;quot;&lt;/code&gt;, поэтому вызов метода будет выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$Render&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;cdata&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;def&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Третий элемент (индекс 2) — это индекс байта первого символа, который «запустил» эту инструкцию в необработанном текстовом документе. Он должен быть таким же, как значение, возвращаемое функцией PHP &lt;a href=&quot;https://secure.php.net/strpos&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/strpos&quot;&gt;strpos&lt;/a&gt;. Это можно использовать для извлечения разделов необработанного текста вики на основе позиций сгенерированных из него инструкций (пример ниже).
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание&lt;/strong&gt;: Метод парсера &lt;code&gt;parse&lt;/code&gt; дополняет необработанный текст вики предшествующим и последующим символом перевода строки, чтобы гарантировать корректный выход определенных состояний лексера, поэтому вам может потребоваться вычесть 1 из индекса байта, чтобы получить правильное местоположение в исходном необработанном тексте вики. Парсер также нормализует переводы строк в соответствии со стилем Unix (т. е. все &lt;code&gt;\r\n&lt;/code&gt; становятся &lt;code&gt;\n&lt;/code&gt;), поэтому документ, который видит лексер, может быть меньше того, который вы ему фактически дали.
&lt;/p&gt;

&lt;p&gt;
Пример массив инструкций страницы с описанием &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:syntax&quot; data-wiki-id=&quot;wiki:syntax&quot;&gt;синтаксиса&lt;/a&gt; можно найти &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser:sample_instructions&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser:sample_instructions&quot; data-wiki-id=&quot;wiki:devel:parser:sample_instructions&quot;&gt;здесь&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u043e\u0440\u043c\u0430\u0442_\u0434\u0430\u043d\u043d\u044b\u0445_\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:24,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;41383-51092&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;renderer_преобразователь&quot;&gt;Renderer (преобразователь)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Renderer (преобразователь) — это класс (или коллекция функций), определяемый вами. Его интерфейс описан в файле &lt;code&gt;inc/parser/renderer.php&lt;/code&gt; и выглядит так:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// вырезка&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$text&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; section_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; section_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; cdata&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$text&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; p_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; p_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; linebreak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; hr&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// вырезка&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Он используется для документирования Renderer, хотя его также можно расширить, если вы хотите написать Renderer, который захватывает только определенные вызовы.
&lt;/p&gt;

&lt;p&gt;
Основной принцип того, как инструкции, возвращаемые парсером, используются против Renderer, аналогичен понятию &lt;a href=&quot;https://en.wikipedia.org/wiki/Simple_API_for_XML&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Simple_API_for_XML&quot;&gt;SAX XML API&lt;/a&gt; - инструкции представляют собой список имен функций/методов и их аргументов. Проходя по списку инструкций, каждая инструкция может быть вызвана против Renderer (т. е. методы, предоставляемые Renderer, являются &lt;a href=&quot;https://en.wikipedia.org/wiki/Callback_(computer_science)&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Callback_(computer_science)&quot;&gt;callbacks&lt;/a&gt;). Unlike the SAX &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt;, where only a few, fairly general, callbacks are available (e.g. tag_start, tag_end, cdata etc.). В отличие от SAX &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; , где доступно только несколько, довольно общих, обратных вызовов (например, tag_start, tag_end, cdata и т. д.), Renderer определяет более явный &lt;abbr title=&quot;Application Programming Interface&quot;&gt;API&lt;/abbr&gt; , где методы обычно соответствуют один к одному акту генерации вывода. В разделе Renderer, показанном выше, методы &lt;code&gt;p_open&lt;/code&gt; и &lt;code&gt;p_close&lt;/code&gt; будут использоваться для вывода тегов &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; и &lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt; в XHTML, соответственно, в то время как &lt;code&gt;header&lt;/code&gt; функция принимает два аргумента — некоторый текст для отображения и «уровень» заголовка, поэтому вызов типа &lt;code&gt;header(&amp;#039;Some Title&amp;#039;, 1)&lt;/code&gt; будет выведен в XHTML типа &lt;code&gt;&amp;lt;h1&amp;gt;Some Title&amp;lt;/h1&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;вызов_рендерера_с_инструкциями&quot;&gt;Вызов рендерера с инструкциями&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Клиентскому коду, использующему Parser, остается выполнить список инструкций для Renderer. Обычно это делается с помощью функции PHP &lt;a href=&quot;https://secure.php.net/call_user_func_array()&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/call_user_func_array()&quot;&gt;call_user_func_array()&lt;/a&gt; function. Например;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Получить список инструкций от парсера &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$rawDoc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создаем рендерер &lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Renderer_xhtml&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Проходим по инструкциям &lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Выполняем обратный вызов для Renderer &lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/call_user_func_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;call_user_func_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;методы_связи_с_рендерером&quot;&gt;Методы связи с рендерером&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Ключевые методы Renderer для обработки различных типов ссылок:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=camelcaselink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for camelcaselink($link)&quot;&gt;camelcaselink($link)&lt;/a&gt; {} // $link like &amp;quot;SomePage&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Вероятно, это можно проигнорировать для проверки на спам — никто не должен иметь возможности ссылаться на сторонние сайты с таким синтаксисом.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=internallink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for internallink($link, $title = null)&quot;&gt;internallink($link, $title = null)&lt;/a&gt; {} // $link like &amp;quot;[[syntax]]&amp;quot;&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Хотя &lt;code&gt;$link&lt;/code&gt; сам по себе является внутренним, &lt;code&gt;$title&lt;/code&gt; может быть изображением, которое находится вне сайта, поэтому необходимо проверить&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=externallink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for externallink($link, $title = null)&quot;&gt;externallink($link, $title = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Оба изображения &lt;code&gt;$link&lt;/code&gt; и &lt;code&gt;$title&lt;/code&gt; (изображения) нуждаются в проверке&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=interwikilink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for interwikilink($link, $title = null, $wikiName, $wikiUri)&quot;&gt;interwikilink($link, $title = null, $wikiName, $wikiUri)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Необходимость &lt;code&gt;$title&lt;/code&gt; проверки изображений&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=filelink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for filelink($link, $title = null)&quot;&gt;filelink($link, $title = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Технически должны совпадать только действительные &lt;code&gt;file://&lt;/code&gt; &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адреса, но, вероятно, лучше все равно проверить, плюс &lt;code&gt;$title&lt;/code&gt; может быть стороннее изображение&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=windowssharelink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for windowssharelink($link, $title = null)&quot;&gt;windowssharelink($link, $title = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Должен соответствовать только допустимым &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адресам общих ресурсов Windows, но в любом случае проверять наличие &lt;code&gt;$title&lt;/code&gt; изображений&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=emaillink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for emaillink($address, $title = null)&quot;&gt;emaillink($address, $title = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;$title&lt;/code&gt; может быть изображение. Проверить почту тоже?$titleможет быть изображение. Проверить почту тоже?&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=internalmedialink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for internalmedialink($src, $title = null, $align = null,  $width = null, $height = null, $cache = null)&quot;&gt;internalmedialink($src, $title = null, $align = null,  $width = null, $height = null, $cache = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;Это не требует проверки — должно ссылаться только на локальные изображения. &lt;code&gt;$title&lt;/code&gt; само по себе не может быть изображением&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;function &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=externalmedialink&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;view definition for externalmedialink($src, $title = null, $align = null, $width = null, $height = null, $cache = null)&quot;&gt;externalmedialink($src, $title = null, $align = null, $width = null, $height = null, $cache = null)&lt;/a&gt; {}&lt;/code&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;code&gt;$src&lt;/code&gt; нуждается в проверке&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Особого внимания требуют методы, которые принимаютe &lt;code&gt;$title&lt;/code&gt; аргумент, представляющий видимый текст ссылки, например;
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;https://www.example.com&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;This is the title&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Аргумент &lt;code&gt;$title&lt;/code&gt; может иметь три возможных типа значений;
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;null&lt;/code&gt;: в вики-документе заголовок не указан.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; string: в качестве заголовка использовалась простая текстовая строка&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; array (hash): в качестве заголовка использовано изображение.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Если это &lt;code&gt;$title&lt;/code&gt; массив, он будет содержать ассоциативные значения, описывающие изображение;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Может быть &#039;internalmedia&#039; (локальное изображение) или &#039;externalmedia&#039; (внешнее изображение) &lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;type&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;internalmedia&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// URL-адрес изображения (может быть URL-адресом wiki или https://static.example.com/img.png) &lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;src&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wiki:php-powered.png&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Для атрибута alt - строка или null &lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Powered by PHP&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// &#039;left&#039;, &#039;right&#039;, &#039;center&#039; или null&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;align&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;right&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Ширина в пикселях или null &lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;width&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Высота в пикселях или null &lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;height&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;75&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Кэшировать ли изображение (для внешних изображений)&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;cache&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Renderer (\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;renderer_\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:28,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;51093-59075&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;примеры&quot;&gt;Примеры&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Следующие примеры показывают общие задачи, которые будут решаться с помощью парсера.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0440\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:32,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;59076-59261&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;основной_вызов&quot;&gt;Основной вызов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Чтобы вызвать парсер со &lt;em&gt;всеми&lt;/em&gt; режимами, и обработать синтаксис документа «Докувики»:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; DOKU_INC &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser/parser.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создать парсер&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавить обработчик&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загрузить все режимы&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ListBlock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Preformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;notoc&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_NoToc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Header&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;table&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Table&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$formats&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;strong&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;emphasis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;underline&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;monospace&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;subscript&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;superscript&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;deleted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$formats&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Formatting&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;linebreak&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Linebreak&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footnote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Footnote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;hr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_HR&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Unformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_PHP&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;html&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_HTML&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;code&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Code&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_File&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;quote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Quote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Здесь требуются данные. Функции &#039;&#039;get*&#039;&#039;остаются на ваше усмотрение&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;acronym&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Acronym&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_keys&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_keys&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getAcronyms&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;wordblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Wordblock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_keys&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_keys&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getBadWords&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;smiley&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Smiley&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_keys&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_keys&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getSmileys&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;entity&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Entity&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_keys&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_keys&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getEntities&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;multiplyentity&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_MultiplyEntity&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;quotes&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Quotes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_CamelCaseLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;internallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_InternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;media&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;externallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ExternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Email&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;windowssharelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_WindowsShareLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;filelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_FileLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;eol&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Eol&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загрузить исходный документ вики&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_DATA &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wiki/syntax.txt&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Получить список инструкций&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создать преобразователь&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; DOKU_INC &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser/xhtml.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Renderer_XHTML&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;# Здесь загрузите в преобразователь данные (например, типа смайлов)
&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// Проходимся по всем инструкциям&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Выполняем обратный вызов через преобразователь&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/call_user_func_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;call_user_func_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Отображаем выходные данные&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0432\u044b\u0437\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439_\u0432\u044b\u0437\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:32,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;59262-62713&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;выбор_текста_для_фрагментов&quot;&gt;Выбор текста (для фрагментов)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Следующий код показывает, как выбрать фрагмент исходного текста, используя инструкции, полученные из парсера;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Создаём парсер&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавляем обработчик&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загружаем режим header для поиска заголовков&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Header&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загружаем режимы, которые могут содержать разметку,&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// которая может быть принята за заголовок&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ListBlock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Preformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;table&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Table&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Unformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_PHP&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;html&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_HTML&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;code&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Code&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_File&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;quote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Quote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;footnote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Footnote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;internallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_InternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;media&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;externallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ExternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Email&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;windowssharelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_WindowsShareLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;filelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_FileLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загружаем исходный документ вики&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_DATA &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wiki/syntax.txt&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Получаем перечень инструкций&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Используем эти переменные, чтобы узнать,&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// находимся ли мы внутри необходимого фрагмента&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$inSection&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$startPos&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$endPos&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Проходимся по всем инструкциям&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$inSection&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Ищем заголовки в списках&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Lists&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$startPos&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$inSection&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Ищем конец фрагмента&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;section_close&#039;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$endPos&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Нормализуем и разбиваем документ&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\r&lt;/span&gt;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Получаем текст, идущий перед фрагментом, который нам необходим&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$before&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$startPos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$section&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$startPos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$endPos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$startPos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$after&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$endPos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u044b\u0431\u043e\u0440 \u0442\u0435\u043a\u0441\u0442\u0430 (\u0434\u043b\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u044b\u0431\u043e\u0440_\u0442\u0435\u043a\u0441\u0442\u0430_\u0434\u043b\u044f_\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:33,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;62714-65843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;управление_входными_файлами_с_данными_в_шаблонах&quot;&gt;Управление входными файлами с данными в шаблонах&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
«Докувики» хранит части некоторых шаблонов во внешних файлах (например, смайлы). Поскольку парсинг и вывод документа являются отдельными стадиями, обрабатываемыми различными компонентами, при использовании данных также требуется дифференцированный подход.
&lt;/p&gt;

&lt;p&gt;
Каждый подходящий режим принимает простой список элементов, который он собирает в список шаблонов для регистрации в анализаторе.
&lt;/p&gt;

&lt;p&gt;
Например:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Простой список вхождений смайлов...&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;:-)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;:-(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;;-)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// и т. д.&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создать режим&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$SmileyMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Smiley&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавить режим в парсер&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$SmileyMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Для парсера не имеет значения выходной формат смайлов.
&lt;/p&gt;

&lt;p&gt;
Другие режимы, где применяется подобный подход, определяются классами;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Parser_Mode_Acronym&lt;/code&gt; — для сокращений;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Parser_Mode_Wordblock&lt;/code&gt; — для блоков специфических слов (например, ненормативной лексики);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Parser_Mode_Entity&lt;/code&gt; — для типографических символов.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Конструктор каждого класса принимает в качестве параметра список указанных элементов.
&lt;/p&gt;

&lt;p&gt;
На практике возникает необходимость в функциях для извлечения данных из конфигурационных файлов и размещение ассоциативных массивов в статической переменной, например:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getSmileys&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    static &lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$lines&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; DOKU_CONF &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;smileys.conf&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$lines&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// игнорировать комментарии&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/#.*$/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$smiley&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/\s+/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co1&quot;&gt;// Собрать ассоциативный массив&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$smiley&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$smiley&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$smileys&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Эта функция может быть использована следующим образом:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Загрузить шаблоны смайлов в режим&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$SmileyMode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Smiley&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_keys&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_keys&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getSmileys&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Загрузить ассоциативный массив в Преобразователь&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;smileys&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; getSmileys&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; проверка ссылок, которые необходимо блокировать, обрабатывается другим способом, описанным ниже.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0432\u0445\u043e\u0434\u043d\u044b\u043c\u0438_\u0444\u0430\u0439\u043b\u0430\u043c\u0438_\u0441_\u0434\u0430\u043d\u043d\u044b\u043c\u0438_\u0432_\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:34,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;65844-69369&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;проверка_ссылок_на_спам&quot;&gt;Проверка ссылок на спам&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В идеале ссылки требуется проверять на спам &lt;em&gt;до&lt;/em&gt; размещения документа (после редактирования).
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Этот пример следует использовать осторожно. Он создаёт полезные точки связывания, но по результатам тестирования является очень медленным — возможно проще использовать функцию, которая «закрывает глаза» на синтаксис, но ищет во всем документе ссылки, сверяя их с «чёрным списком». Между тем, этот пример может быть полезным как основа для построения «карты вики» или поиска «требуемых страниц» посредством проверки внутренних ссылок.&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
Это можно сделать, создав специальный преобразователь, который проверяет только относящиеся к ссылкам обратные вызовы и сверяет ULR с «чёрным списком».
&lt;/p&gt;

&lt;p&gt;
Требуется функция для загрузки файла &lt;code&gt;spam.conf&lt;/code&gt; и связывания его с единственным регулярным выражением:
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Недавно протестировал этот подход (единственное регулярное выражение) с использованием последней версии «чёрного списка» с &lt;a href=&quot;http://blacklist.chongqed.org/&quot; class=&quot;urlextern&quot; title=&quot;http://blacklist.chongqed.org/&quot; rel=&quot;ugc nofollow&quot;&gt;blacklist.chongqed.org&lt;/a&gt; и получил ошибки о том, что окончательное регулярное выражение слишком велико. Возможно, следует разбить регулярное выражение на маленькие кусочки и возвращать их как массив.&lt;/div&gt;&lt;/blockquote&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getSpamPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    static &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/is_null&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;is_null&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$lines&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_CONF &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;spam.conf&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$lines&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$sep&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$lines&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/#.*$/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Игнорировать пустые строки&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/empty&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sep&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$line&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;re0&quot;&gt;$sep&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;|&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#si&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Теперь нам нужно расширить основной преобразователь ещё одним, который проверяет только ссылки:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; DOKU_INC &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser/renderer.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer_SpamCheck &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; Doku_Renderer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Здесь должен быть код, выполняющий инструкции&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$currentCall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Массив инструкций, которые содержат спам&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$spamFound&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// PCRE-шаблон для нахождения спама&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;#^$#&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; internallink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; externallink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; interwikilink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; filelink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; windowssharelink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; email&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$address&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$address&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; internalmedialink &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; externalmedialink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$src&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; __checkTitle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/is_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;is_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;src&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$title&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;src&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Поиск по шаблону осуществляется здесь&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; __checkLinkForSpam&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;spamPattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$spam&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;currentCall&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$spam&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;spamFound&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$spam&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Обратите внимание на строку &lt;code&gt;$spam[3] = $link;&lt;/code&gt; в методе &lt;code&gt;__checkLinkForSpam&lt;/code&gt;. Она вставляет дополнительный элемент в список найденных спамовых инструкций, позволяя легко определить, какие &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; были «плохими».
&lt;/p&gt;

&lt;p&gt;
Наконец мы можем использовать преобразователь с проверкой на спам:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// Создать парсер&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавить обработчик&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Добавить режимы, которые могут содержать разметку,&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// которая ошибочно будет принята за ссылку&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Preformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;unformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Unformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_PHP&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;html&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_HTML&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;code&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Code&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_File&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;quote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Quote&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загружаем режим link...&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;internallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_InternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;media&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Media&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;externallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ExternalLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Email&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;windowssharelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_WindowsShareLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;filelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_FileLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загружаем исходный документ вики&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_DATA &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wiki/spam.txt&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Получить список инструкций&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Создать преобразователь&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; DOKU_INC &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser/spamcheck.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Renderer_SpamCheck&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Загрузить шаблон спама&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;spamPattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; getSpamPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Пройтись по всем инструкциям&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Сохранить текущую инструкцию&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;currentCall&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://www.php.net/call_user_func_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;call_user_func_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Что за спам был найден?&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;pre&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://www.php.net/print_r&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;print_r&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;spamFound&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/pre&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Поскольку нам не нужны все режимы синтаксиса, проверка спама таким способом будет быстрее, чем обычный парсинг документа.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u043f\u0430\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430_\u0441\u0441\u044b\u043b\u043e\u043a_\u043d\u0430_\u0441\u043f\u0430\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:38,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;69370-77126&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;добавление_синтаксической_конструкции&quot;&gt;Добавление синтаксической конструкции&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Предупреждение:&lt;/strong&gt; приведённый ниже код ещё не испытан — это только пример.
&lt;/p&gt;

&lt;p&gt;
Простая задача по модификации парсера: этот пример будет добавлять тэг-«закладку», который может быть использован для создания якоря в документе для создания ссылки на него.
&lt;/p&gt;

&lt;p&gt;
Синтаксис для тэга будет таким:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;BM{Моя закладка}&lt;/pre&gt;

&lt;p&gt;
Строка «Моя закладка» является наименование закладки, а &lt;code&gt;BM&lt;/code&gt; {} идентифицируется как сама закладка. В &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; эта конструкция будет соответствовать:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Моя закладка&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/a.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;a&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Добавление этой синтаксической конструкции требует следующих шагов:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; создать синтаксический режим парсера, для регистрации в лексическом анализаторе;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; обновить код функции &lt;code&gt;Doku_Parser_Substition&lt;/code&gt;, находящейся в конце файла &lt;code&gt;parser.php&lt;/code&gt; и которая используется для быстрого получения списка режимов (используется в классах вроде&lt;code&gt;Doku_Parser_Mode_Table&lt;/code&gt;);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; обновить код обработчика, дополнив его методом, «ловящим» вхождения закладок;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; обновление абстрактного класса преобразователя и какого-нибудь конкретного преобразователя.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Создание режима парсера подразумевает расширение класса &lt;code&gt;Doku_Parser_Mode&lt;/code&gt; и перегрузкой метода &lt;code&gt;connectTo&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Parser_Mode_Bookmark &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; Doku_Parser_Mode &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Разрешаются слова и пробелы&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;BM\{[\w ]+\}&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;bookmark&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Будет осуществляться поиск целой закладки с использованием единственного шаблона (извлечение имени закладки из остального синтаксиса будет осущевляться обработчиком). Используется метод &lt;code&gt;addSpecialPattern&lt;/code&gt; анализатора, так что закладка присутствует в своём собственном состоянии.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; анализатор не требует ограничителей шаблона — он заботиться об этом за вас.
&lt;/p&gt;

&lt;p&gt;
Поскольку ничто &lt;em&gt;внутри&lt;/em&gt; закладки не должно рассматриваться как годная разметка вики, связывание с другими режимами, которые может принимать этот, отсутствует.
&lt;/p&gt;

&lt;p&gt;
Следующая функция &lt;code&gt;Doku_Parser_Substition&lt;/code&gt; в файле &lt;code&gt;inc/parser/parser.php&lt;/code&gt; требует обновления, чтобы она возвращала в списке новый режим с наименованием &lt;code&gt;bookmark&lt;/code&gt;;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Parser_Substition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;acronym&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;smiley&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;wordblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;entity&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;camelcaselink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;internallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;media&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;externallink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;linebreak&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;windowssharelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;filelink&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;notoc&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;multiplyentity&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;quotes&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;bookmark&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Эта функция лишь помогает в регистрации режима с другими режимами, которые получают его (например, списки могут содержать этот режим — ваша ссылка может быть внутри списка).
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; существует похожая функция, вроде &lt;code&gt;Doku_Parser_Protected&lt;/code&gt; и &lt;code&gt;Doku_Parser_Formatting&lt;/code&gt;, которые возвращают разные группы режимов. Группировка различных типов синтаксиса не является полностью совершенной, но всё равно остаётся полезной для экономии кода.
&lt;/p&gt;

&lt;p&gt;
Описав синтаксис, мы должны добавить в обработчик новый метод, который сравнивает наименование режима (т. е.&lt;code&gt;bookmark&lt;/code&gt;).
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// $match - строка, которая сравнивается анализатором&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;//          с регулярным выражением для закладок&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// $state идентифицирует тип совпадения (см. выше)&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// $pos - индекс байта первого символа совпадения в исходном документе&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; bookmark&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Технически не следует беспокоится о состоянии:&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// оно всегда будет DOKU_LEXER_SPECIAL, если&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// нет серьёзных багов&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_SPECIAL&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Попытка извлечения наименования закладки&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/^BM\{(\w{1,})\}$/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$nameMatch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                    &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$nameMatch&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                    &lt;span class=&quot;co1&quot;&gt;// arg0: наименование вызываемого метода преобразователя&lt;/span&gt;
                    &lt;span class=&quot;co1&quot;&gt;// arg1: массив аргументов для метода преобразователя&lt;/span&gt;
                    &lt;span class=&quot;co1&quot;&gt;// arg2: индекс байта&lt;/span&gt;
                    &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;bookmark&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co1&quot;&gt;// Если у закладки нет годного имени,&lt;/span&gt;
                &lt;span class=&quot;co1&quot;&gt;//  пропускаем не меняя как cdata&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
                    &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__addCall&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;cdata&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Должно вернуть TRUE или анализатор будет остановлен&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Последний этап — обновление кода преобразователя (&lt;code&gt;renderer.php&lt;/code&gt;) новой функцией и её реализация в XHTML преобразовании (&lt;code&gt;xhtml.php&lt;/code&gt;):
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; bookmark&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer_XHTML &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; bookmark&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__xmlEntities&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// id is required in XHTML while name still supported in 1.0&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;a class=&amp;quot;bookmark&amp;quot; name=&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot; id=&amp;quot;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
См. скрипт &lt;code&gt;tests/parser_replacements.test.php&lt;/code&gt; в качестве примера того, как можно использовать этот код.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439_\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:41,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;77127-84807&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;добавление_синтаксиса_форматирования_с_состоянием&quot;&gt;Добавление синтаксиса форматирования (с состоянием)&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Предупреждение:&lt;/strong&gt; нижеприведённый код ещё не протестирован — это только пример.
&lt;/p&gt;

&lt;p&gt;
Для того, чтобы показать расширенное использование анализатора, этот пример добавляет разметку, которая позволяет пользователям менять цвет обрамляемый текст на красный, жёлтый или зелёный.
&lt;/p&gt;

&lt;p&gt;
Разметка будет выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;red&amp;gt;Это красный цвет&amp;lt;/red&amp;gt;.
Это чёрный цвет
&amp;lt;yellow&amp;gt;Это жёлтый цвет&amp;lt;/yellow&amp;gt;.
Это тоже чёрный цвет
&amp;lt;green&amp;gt;Это зелёный цвет&amp;lt;/green&amp;gt;.&lt;/pre&gt;

&lt;p&gt;
Шаги, необходимые для внедрения данной возможности, в сущности, являются такими же, как в предыдущем примере, начинаются с нового синтаксического режима, но добавляет некоторые детали, поскольку задействуются другие режимы:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Parser_Mode_TextColors &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; Doku_Parser_Mode &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$colors&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;blue&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Parser_Mode_TextColor&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Предотвращает ошибки использования этого режима&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/array_key_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_key_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;colors&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/trigger_error&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trigger_error&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Invalid color &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;E_USER_WARNING&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Этот режим принимает другие режимы:&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;allowedModes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_merge&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_merge&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            Doku_Parser_Formatting&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            Doku_Parser_Substition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            Doku_Parser_Disabled&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// connectTo вызывается однократно для каждого режима, зарегистрированного анализатором&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// Шаблон с просмотром вперёд проверяет наличие закрывающего тэга...&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;gt;(?=.*&amp;lt;/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;gt;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// arg0: шаблон сравнения при входе в режим;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// arg1: другие режимы, может сравниваться этот шаблон;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// arg2: наименование режима.&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// post connect вызывается однократно&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; postConnect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;co1&quot;&gt;// arg0: шаблон сравнения при выходе из режима;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// arg1: наименование режима.&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Некоторые особенности вышеприведённых классов:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В действительности представляют множество режимов, один для каждого цвета. Цвета следует выделять в отдельные режимы так, что, например, &lt;code&gt;&amp;lt;/green&amp;gt;&lt;/code&gt; не будет закрывающим тэгом для &lt;code&gt;&amp;lt;red&amp;gt;&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Эти режимы могут содержать, например, &lt;code&gt;&amp;lt;red&amp;gt;**Предупреждение**&amp;lt;/red&amp;gt;&lt;/code&gt; для полужирного текста красного цвета. Это регистрируется в конструкторе класса назначением полученных наименований режимов свойству &lt;code&gt;allowedModes&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Когда регистрируется входной шаблон, имеет смысл проверить существование выходного шаблона (с помощью просмотра вперёд). Это поможет в защите пользователей от них самих, когда они забудут добавить закрывающий тэг.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Входной шаблон требует регистрации для каждого режима, внутри которого тэги &amp;lt;color /&amp;gt; могут использоваться. Нам требуется толь один выходной шаблон, помещённый в метод &lt;code&gt;postConnect&lt;/code&gt;, который исполняется однократно, после всех вызовов &lt;code&gt;connectTo&lt;/code&gt; по всем вызванным режимам.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Когда с классом режимами обработки покончено, новые режимы требуется добавить в в функцию &lt;code&gt;Doku_Parser_Formatting&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Parser_Formatting&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$remove&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;strong&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;emphasis&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;underline&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;monospace&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; 
        &lt;span class=&quot;st_h&quot;&gt;&#039;subscript&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;superscript&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;deleted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;yellow&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$key&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_search&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_search&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$remove&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/is_int&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;is_int&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/unset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; эта функция обрабатывается, чтобы снять режим для предотвращения включения режима форматирования в самого себя (так, например, нежелательно:  &lt;code&gt;&amp;lt;red&amp;gt;Срочное&amp;lt;red&amp;gt;и важное&amp;lt;/red&amp;gt;сообщение&amp;lt;/red&amp;gt;&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
Далее обработчик должен быть обновлён методами для каждого цвета:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; red&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Метод nestingTag в обработчике предотвращает&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// многократное повторение одного и того же кода.&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// Он создаёт открывающий и закрывающий инструкции&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// для входных и выходных шаблонов,&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// пропуская остальные как cdata.&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__nestingTag&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;red&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; yellow&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__nestingTag&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;yellow&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; green&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__nestingTag&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;green&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Наконец мы может обновить преобразователи:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; red_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; red_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; yellow_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; yellow_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; green_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; green_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer_XHTML &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; red_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;span class=&amp;quot;red&amp;quot;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; red_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/span&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; yellow_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;span class=&amp;quot;yellow&amp;quot;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; yellow_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/span&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; green_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;span class=&amp;quot;green&amp;quot;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; green_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/span&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
См. скрипт &lt;code&gt;tests/parser_formatting.test.php&lt;/code&gt; в качестве примера того, как можно использовать этот код.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430_\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f_\u0441_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:48,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;84808-92583&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;добавление_блочных_синтаксических_конструкций&quot;&gt;Добавление блочных синтаксических конструкций&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Предупреждение:&lt;/strong&gt; приведённый ниже код ещё не тестировался — это только пример.
&lt;/p&gt;

&lt;p&gt;
Развивая предыдущий пример, этот будет создавать новый тэг для разметки сообщений о том, что ещё предстоит сделать. Пример использования может выглядеть так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;
===== Синтаксис цитирования в вики =====

Этот синтаксис позволяет

&amp;lt;todo&amp;gt;
Опишите синтаксис цитирования &amp;#039;&amp;gt;&amp;#039;
&amp;lt;/todo&amp;gt;

Другой текст&lt;/pre&gt;

&lt;p&gt;
Этот синтаксис позволяет искать страницы вики и находить вопросы, которые предстоит решить, выделяя их в документе бросающимся в глаза стилем.
&lt;/p&gt;

&lt;p&gt;
Особенностью данного синтаксиса является то, что он должен отображаться в отдельном блоке документа (например, внутри &lt;code&gt;
&lt;/p&gt;
&lt;div class=&quot;plugin_wrap&quot;&gt;&lt;/div&gt;
&lt;p&gt;
&lt;/code&gt;, так что он с помощью &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt; может «плавать»). Это требует модификации класса &lt;code&gt;Doku_Handler_Block&lt;/code&gt;, который пробегает по всем инструкциям, после того, как обработчиком найдены все вхождения, и заботиться о добавлении тэгов &lt;code&gt;&amp;lt;p/&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Режим парсера для этого синтаксиса может быть таким:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Parser_Mode_Todo &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; Doku_Parser_Mode &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Parser_Mode_Todo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;allowedModes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array_merge&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array_merge&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            Doku_Parser_Formatting&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            Doku_Parser_Substition&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            Doku_Parser_Disabled&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;todo&amp;gt;(?=.*&amp;lt;/todo&amp;gt;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;todo&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; postConnect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/todo&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;todo&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Затем этот режим добавляется в функцию &lt;code&gt;Doku_Parser_BlockContainers&lt;/code&gt; в файле &lt;code&gt;parser.php&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; Doku_Parser_BlockContainers&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;footnote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;table&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;quote&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// горизонтальные разрывы нарушают принцип, но они не могут использоваться в таблицах / списках, &lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;// так что вставляем их сюда&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;hr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;todo&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$modes&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Обновление класса &lt;code&gt;Doku_Handler&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; todo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;__nestingTag&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;todo&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;TRUE&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Класс &lt;code&gt;Doku_Handler_Block&lt;/code&gt; (см. файл &lt;code&gt;inc/parser/handler.php&lt;/code&gt;) также нуждается в обновлении, чтобы регистрировать открывающие и закрывающие инструкции &lt;code&gt;todo&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Handler_Block &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$blockOpen&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;listu_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listo_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listitem_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;table_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tablerow_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tablecell_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tableheader_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;quote_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;section_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Needed to prevent p_open between header and section_open&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;code&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;html&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;hr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;todo_open&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$blockClose&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;listu_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listo_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listitem_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;table_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tablerow_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tablecell_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;tableheader_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;quote_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;section_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// Needed to prevent p_close after section_close&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;code&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;file&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;html&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;hr&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;todo_close&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;
Регистрация &lt;code&gt;todo_open&lt;/code&gt; и &lt;code&gt;todo_close&lt;/code&gt; в массивах &lt;code&gt;$blockOpen&lt;/code&gt; и &lt;code&gt;$blockClose&lt;/code&gt; сообщает классу &lt;code&gt;Doku_Handler_Block&lt;/code&gt;, что любые предыдущие абзацы должны быть закрыты &lt;em&gt;до&lt;/em&gt; входа в секцию &lt;code&gt;todo&lt;/code&gt;, а новый абзац должен начинаться &lt;em&gt;после&lt;/em&gt; секции &lt;code&gt;todo&lt;/code&gt;. Внутри &lt;code&gt;todo&lt;/code&gt; дополнительные абзацы не вставляются.
&lt;/p&gt;

&lt;p&gt;
После этого должен быть обновлён код преобразователя:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; todo_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; todo_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; Doku_Renderer_XHTML &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; todo_open&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;div class=&amp;quot;todo&amp;quot;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; todo_close&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/div&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// ...&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u0431\u043b\u043e\u0447\u043d\u044b\u0445_\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445_\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:54,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;92584-97795&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;сериализация_инструкций_преобразователя&quot;&gt;Сериализация инструкций преобразователя&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Список выводимых обработчиком инструкций можно сериализировать, чтобы устранить повторную обработку исходного документа при каждом запросе, если содержание документа не менялось.
&lt;/p&gt;

&lt;p&gt;
Самая простая реализация может быть такой:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_DATA &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wiki/syntax.txt&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_CACHE &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;.cache&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// Если кэш-файл отсутствует или утратил актуальность&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// (исходный документ модифицирован), получить «свежий» список инструкций&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/filemtime&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filemtime&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/filemtime&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filemtime&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt; DOKU_INC &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser/parser.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Создать парсер&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Добавить обработчик&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Загрузить все режимы&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ListBlock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Preformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;notoc&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_NoToc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;header&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Header&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;table&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Table&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// и т. д., и т. п.&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$filename&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Сериализировать и кэшировать &lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sInstructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/serialize&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;serialize&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;a href=&quot;http://www.php.net/fopen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/fwrite&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fwrite&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sInstructions&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Cannot write to file (&lt;span class=&quot;es4&quot;&gt;$cacheID&lt;/span&gt;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;a href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Загрузить и десериализировать&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sInstructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/unserialize&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unserialize&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$sInstructions&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Renderer_XHTML&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instructions&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/call_user_func_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;call_user_func_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$instruction&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$Renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Замечание:&lt;/strong&gt; эта реализация не является полной. Что должно просходить, если кто-либо, например, модифицирует файл &lt;code&gt;smiley.conf&lt;/code&gt;, добавив новый смайл? Это изменение должно порождать изменение кэша с обработкой нового смайла. Также необходимо позаботиться о блокировке файлов (или их переименовании).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f_\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439_\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:61,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;97796-100656&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;сериализация_парсера&quot;&gt;Сериализация парсера&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
По аналогии с приведённым выше примером, возможна сериализация самого парсера до начала обработки. Поскольку установка режимов поддерживает довольно высокую перегрузку, этот пример может немного увеличить производительность. По неточной оценке, обработка страницы &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:wiki:syntax&quot; class=&quot;wikilink2&quot; title=&quot;ru:wiki:syntax&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:wiki:syntax&quot;&gt;syntax&lt;/a&gt; в медленной системе занимает около 1,5-а секунд для завершения &lt;em&gt;без&lt;/em&gt; сериализации и около 1,25-х секунды в версии парсера &lt;em&gt;с поддержкой&lt;/em&gt; сериализации.
&lt;/p&gt;

&lt;p&gt;
Если коротко, то сериализация может быть реализована таким способом:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$cacheId&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_CACHE &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;parser.cache&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/file_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheId&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Создаём парсер&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Handler&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Handler&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Загружаем все режимы&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;listblock&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_ListBlock&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addMode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preformatted&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kw2&quot;&gt;new&lt;/span&gt; Doku_Parser_Mode_Preformatted&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co2&quot;&gt;# и т. д., и т. п.
&lt;/span&gt;    
    &lt;span class=&quot;co1&quot;&gt;// ВАЖНО: вызов connectModes()&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;connectModes&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Сериализация&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sParser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/serialize&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;serialize&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// Запись в файл&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;&lt;a href=&quot;http://www.php.net/fopen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fopen&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;a&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/fwrite&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fwrite&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$sParser&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Cannot write to file (&lt;span class=&quot;es4&quot;&gt;$cacheID&lt;/span&gt;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;a href=&quot;http://www.php.net/fclose&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fclose&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fh&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// Загружаем сериализированную версию&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$sParser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/file_get_contents&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;file_get_contents&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$cacheID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/unserialize&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unserialize&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$sParser&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$Parser&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$doc&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Некоторые замечания по реализации, не упомянутые выше:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для некоторых файлов вместо записи требуется блокировка, в противном случае в ответ на запрос может быть получен частично кэшированный файл, если он будет считываться, пока продолжается запись.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Что следует делать, если обновляется один из файлов &lt;code&gt;*.conf&lt;/code&gt;? Необходимо очистить кэш.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Могут быть различные версии парсера (например, с проверкой на спам), так что используйте кэш-идентификаторы (cache IDs).&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0441\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f_\u043f\u0430\u0440\u0441\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:62,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;100657-103460&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;тестирование&quot;&gt;Тестирование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://ru.wikipedia.org/wiki/Модульное_тестирование&quot; class=&quot;urlextern&quot; title=&quot;http://ru.wikipedia.org/wiki/Модульное_тестирование&quot; rel=&quot;ugc nofollow&quot;&gt;Тесты программных единиц&lt;/a&gt; обеспечивают использование «&lt;a href=&quot;http://www.lastcraft.com/simple_test.php&quot; class=&quot;urlextern&quot; title=&quot;http://www.lastcraft.com/simple_test.php&quot; rel=&quot;ugc nofollow&quot;&gt;Simple Test for PHP&lt;/a&gt;». «Simple Test» является отличным инструментом для тестирования единиц php-кода. Особенно выделяются блестящая документация (см. &lt;a href=&quot;http://simpletest.sourceforge.net/&quot; class=&quot;urlextern&quot; title=&quot;http://simpletest.sourceforge.net/&quot; rel=&quot;ugc nofollow&quot;&gt;simpletest.sourceforge.net&lt;/a&gt; и &lt;a href=&quot;http://www.lastcraft.com/simple_test.php&quot; class=&quot;urlextern&quot; title=&quot;http://www.lastcraft.com/simple_test.php&quot; rel=&quot;ugc nofollow&quot;&gt;www.lastcraft.com/simple_test.php&lt;/a&gt;) и хорошо продуманый код, обеспечивающий «прозрачное» решение многих вопросов (вроде перехвата ошибок PHP и сообщения о них в результатах тестирования).
&lt;/p&gt;

&lt;p&gt;
Для парсера «Докувики» тесты проводились по всем внедряемым синтаксическим конструкциям, и я &lt;em&gt;очень сильно&lt;/em&gt; рекомендую написание новых тестов, если добавляется новый синтаксис.
&lt;/p&gt;

&lt;p&gt;
Чтобы запустить тесты, вам следует модифицировать файл &lt;code&gt;tests/testconfig.php&lt;/code&gt;, указав корректные директории «Simple Test» и «Докувики».
&lt;/p&gt;

&lt;p&gt;
Некоторые заметки и рекомендации:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Повторно запускайте тесты каждый раз, когда вы меняете что-нибудь в парсере — проблемы немедленно выплывают на поверхность, экономя кучу времени.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Это только тесты для специфических ситуаций. Они не гарантируют отсутствие ошибок, если в этих специфических ситуациях работают корректно.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если найдена ошибка, в процессе её устранения напишите тесты (даже лучше, &lt;em&gt;до&lt;/em&gt; её устранения), чтобы предотвратить её повторное возникновение.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;103461-105813&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;ошибки_и_проблемы&quot;&gt;Ошибки и проблемы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Некоторые вопросы остаются за рамками подробного рассмотрения.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438_\u0438_\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;105814-105978&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;важность_порядка_добавления_режимов&quot;&gt;Важность порядка добавления режимов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Требуется выполение не столько «правил», сколько порядка, в котором добавляются режимы (парсер этого не проверяет). В особенности, режим &lt;code&gt;eol&lt;/code&gt; должен быть загружен последним, т. к. он «съедает» «обёрточные» символы, что может нарушить корректную работу других режимов, вроде &lt;code&gt;list&lt;/code&gt; или &lt;code&gt;table&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
В общем случае рекомендуется загружать режимы в порядке, описанном выше в первом примере.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 По моим наработкам, порядок важен, только если два и более режима имеют шаблоны, с которыми могут сравниваться одинаковые совокупности символов - в этом случае «выиграет» режим, имеющий низший порядковый номер.  Синтаксический плагин может извлечь из этого выгоду, заменяя оригинальный обработчик, в качестве примера см. плагин «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:code&quot; class=&quot;wikilink2&quot; title=&quot;plugin:code&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:code&quot;&gt;Code&lt;/a&gt;» — &lt;em&gt; &lt;a href=&quot;mailto:&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#104;&amp;#114;&amp;#105;&amp;#115;&amp;#64;&amp;#106;&amp;#97;&amp;#108;&amp;#97;&amp;#107;&amp;#97;&amp;#105;&amp;#46;&amp;#99;&amp;#111;&amp;#46;&amp;#117;&amp;#107;&quot;&gt;ChrisS&lt;/a&gt; 2005-07-30 &lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0436\u0438\u043c\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c_\u043f\u043e\u0440\u044f\u0434\u043a\u0430_\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f_\u0440\u0435\u0436\u0438\u043c\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;105979-107431&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;замены_блокиратора_слов&quot;&gt;Замены «блокиратора слов»&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В оригинале функционирование «блокиратора слов» &lt;code&gt;wordblock&lt;/code&gt; заключалось в сравнении &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; ссылок с «чёрным списком». Сейчас этот режим используется для нахождения грубых слов. Для блокирования спамовых &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; лучше использовать приведённый выше пример.
&lt;/p&gt;

&lt;p&gt;
Рекомендация — файл &lt;code&gt;conf/wordblock.conf&lt;/code&gt; следует переименовать в &lt;code&gt;conf/spam.conf&lt;/code&gt;, содержащий «чёрный список» &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;. Новый файл&lt;code&gt;conf/badwords.conf&lt;/code&gt; будет содержать список цензурируемых грубых слов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043c\u0435\u043d\u044b \u00ab\u0431\u043b\u043e\u043a\u0438\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u043e\u0432\u00bb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043c\u0435\u043d\u044b_\u0431\u043b\u043e\u043a\u0438\u0440\u0430\u0442\u043e\u0440\u0430_\u0441\u043b\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;107432-108258&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit22&quot; id=&quot;слабые_моменты&quot;&gt;Слабые моменты&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
С точки зрения архитектуры, наихудшие части кода находятся в файле &lt;code&gt;inc/parser/handler.php&lt;/code&gt;, преимущественно в «re-writing»-классах;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_List&lt;/code&gt; (inline re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Preformatted&lt;/code&gt; (inline re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Quote&lt;/code&gt; (inline re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Table&lt;/code&gt; (inline re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Section&lt;/code&gt; (post processing re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Block&lt;/code&gt; (post processing re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;Doku_Handler_Toc&lt;/code&gt; (post processing re-writer)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
«Inline re-writers» используются, пока обработчик получает вхождения от анализатора, в то время как «post processing re-writers», вызываются из &lt;code&gt;Doku_Handler::__finalize()&lt;/code&gt; и выполняются однократно в отношении полного списка инструкций, созданных обработчиком.
&lt;/p&gt;

&lt;p&gt;
&lt;em&gt;Возможно лучше&lt;/em&gt; устранить &lt;code&gt;Doku_Handler_List&lt;/code&gt;, &lt;code&gt;Doku_Handler_Quote&lt;/code&gt; и &lt;code&gt;Doku_Handler_Table&lt;/code&gt;, использовав взамен многострочные лексические режимы.
&lt;/p&gt;

&lt;p&gt;
Также &lt;em&gt;возможно лучше&lt;/em&gt; изменить &lt;code&gt;Doku_Handler_Section&lt;/code&gt; и &lt;code&gt;Doku_Handler_Toc&lt;/code&gt; в «inline re-writers«, срабатывающие на вхождения заголовков, принимаемых Обработчиком.
&lt;/p&gt;

&lt;p&gt;
Самое «больное место» — это класс &lt;code&gt;Doku_Handler_Block&lt;/code&gt;, отвечающий за вставку абзацев в инструкции. Имеет значение добавить в него больше абстракций для облегчения разработки, но в общем-то я не вижу каких-либо путей полного его устранения.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043b\u0430\u0431\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043b\u0430\u0431\u044b\u0435_\u043c\u043e\u043c\u0435\u043d\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;108259-110205&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit23&quot; id=&quot;жадные_тэги&quot;&gt;«Жадные» тэги&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Рассмотрим следующий синтаксис вики:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Привет, &amp;lt;sup&amp;gt;Мир! 

----

&amp;lt;sup&amp;gt;Пока,&amp;lt;/sup&amp;gt; Мир...&lt;/pre&gt;

&lt;p&gt;
Пользователь забыл закрыть первый тэг &amp;lt;sup&amp;gt;.
&lt;/p&gt;

&lt;p&gt;
В результате получится:
&lt;/p&gt;

&lt;p&gt;
Привет, &lt;sup&gt;Мир! 

—-

&amp;lt;sup&amp;gt;Пока,&lt;/sup&gt; Мир…
&lt;/p&gt;

&lt;p&gt;
Первый тэг &amp;lt;sup&amp;gt; оказался слишком «жадным» в проверке своего входного шаблона.
&lt;/p&gt;

&lt;p&gt;
Это применимо ко всем подобным режимам. Входные шаблоны проверяют наличие закрывающего тэга, но также они должны проверять, чтобы раньше не встретился второй открывающий тэг.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u00ab\u0416\u0430\u0434\u043d\u044b\u0435\u00bb \u0442\u044d\u0433\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0436\u0430\u0434\u043d\u044b\u0435_\u0442\u044d\u0433\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:63,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;110206-111058&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit24&quot; id=&quot;сноски_через_список&quot;&gt;Сноски через список&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В сущности, если сноска закрывается через несколько элементов списка, это вызывает эффект открывающей инструкции сноски без соответствующей закрывающей. Вот пример синтаксиса, вызывающего проблему:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  *((A))
    *(( B
  * C )) &lt;/pre&gt;

&lt;p&gt;
Это будет происходить до тех пор, пока пользователи не поправят страницу. Решение — разбить захват элементов списка в многострочные режимы (сейчас для списков есть только единственный режим &lt;code&gt;listblock&lt;/code&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043d\u043e\u0441\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u043f\u0438\u0441\u043e\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043d\u043e\u0441\u043a\u0438_\u0447\u0435\u0440\u0435\u0437_\u0441\u043f\u0438\u0441\u043e\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:64,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;111059-111888&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit25&quot; id=&quot;захват_обёрточных_символов&quot;&gt;Захват «обёрточных» символов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Баг № &lt;a href=&quot;doku.php?id=wiki:bug:dokuwiki:261&quot; class=&quot;interwiki iw_bug&quot; title=&quot;doku.php?id=wiki:bug:dokuwiki:261&quot;&gt;261&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Поскольку синтаксис заголовка, горизонтальной линии, списка, таблицы, цитаты и неформатируемого (выделяемого) текста полагается на «обёрточные» символы для разметки своих начала и окончания, им требуются регулярные выражения, которые поглощают «обёрточные» символы. Это означает, что пользователь должен добавлять «обёрточные» символы, если таблица находится сразу после списка, например:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;До списка
  - Элемент списка
  - Элемент списка
| Ячейка A | Ячейка B |
| Ячейка C | Ячейка D |
После таблицы&lt;/pre&gt;

&lt;p&gt;
Выдаёт:
&lt;/p&gt;

&lt;p&gt;
До списка
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Элемент списка&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Элемент списка&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
| Ячейка A | Ячейка B |
&lt;/p&gt;
&lt;div class=&quot;table sectionedit26&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Ячейка C &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Ячейка D &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;113030-113065&amp;quot;} --&gt;
&lt;p&gt;
После таблицы
&lt;/p&gt;

&lt;p&gt;
Заметьте, что &lt;strong&gt;первая строка&lt;/strong&gt; таблицы воспринимается как обычный текст.
&lt;/p&gt;

&lt;p&gt;
Чтобы скорректировать это, синтаксис вики должен иметь дополнительную «обёртку» между списком и таблицей:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;До списка
  - Элемент списка
  - Элемент списка

| Ячейка A | Ячейка B |
| Ячейка C | Ячейка D |
После таблицы&lt;/pre&gt;

&lt;p&gt;
Что будет выглядеть следующим образом:
&lt;/p&gt;

&lt;p&gt;
До списка
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Элемент списка&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Элемент списка&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;table sectionedit27&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Ячейка A &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Ячейка B &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Ячейка C &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Ячейка D &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;113778-113849&amp;quot;} --&gt;
&lt;p&gt;
После таблицы
&lt;/p&gt;

&lt;p&gt;
Без сканирования текста множества раз (некая разновидность «предварительных» операций, которые вставляют «обёртку»), едва ли можно найти простое решение.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0445\u0432\u0430\u0442 \u00ab\u043e\u0431\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445\u00bb \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0445\u0432\u0430\u0442_\u043e\u0431\u0451\u0440\u0442\u043e\u0447\u043d\u044b\u0445_\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:65,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;111889-114162&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;проблемы_списков_таблиц_и_цитат&quot;&gt;Проблемы списков, таблиц и цитат&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для синтаксиса списков, таблиц и цитат есть вероятность, что использование внутри их другого синтаксиса «съест» несколько  строк. Например, таблица вроде:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;| Cell A | &amp;lt;sup&amp;gt;Cell B |
| Cell C | Cell D&amp;lt;/sup&amp;gt; |
| Cell E | Cell F |&lt;/pre&gt;

&lt;p&gt;
выдаёт:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit29&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Cell A &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;sup&gt;Cell B |
| Cell C | Cell D&lt;/sup&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Cell E &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Cell F &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;114621-114691&amp;quot;} --&gt;
&lt;p&gt;
В идеале должно быть преобразовано так:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit30&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Cell A &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &amp;lt;sup&amp;gt;Cell B &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Cell C &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Cell D&amp;lt;/sup&amp;gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Cell E &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; Cell F &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;114767-114845&amp;quot;} --&gt;
&lt;p&gt;
Т. е. открывающий тэг &lt;code&gt;&amp;lt;sup&amp;gt;&lt;/code&gt; должен игнорироваться, если в текущей ячейке отсутствует закрывающий тэг.
&lt;/p&gt;

&lt;p&gt;
Для устранения этого требуется поддержка многострочного режима внутри таблиц, списков и цитат.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 \u0446\u0438\u0442\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b_\u0441\u043f\u0438\u0441\u043a\u043e\u0432_\u0442\u0430\u0431\u043b\u0438\u0446_\u0438_\u0446\u0438\u0442\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:67,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;114163-115213&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit31&quot; id=&quot;сноски_и_блоки&quot;&gt;Сноски и блоки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Внутри сносок блоки игнорируются, вместо этого используется эквивалент инструкции &lt;code&gt;&amp;lt;br/&amp;gt;&lt;/code&gt;. Это связано с неудобным в разработке классом &lt;code&gt;Doku_Handler_Block&lt;/code&gt;. Если внутри сноски используются таблица, список, цитата или горизонтальная линия, это &lt;em&gt;сработает&lt;/em&gt; как абзац.
&lt;/p&gt;

&lt;p&gt;
Устраняется модификацией класса &lt;code&gt;Doku_Handler_Block&lt;/code&gt;, однако рекомендуется предварительно тщательно ознакомиться с его устройством.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043d\u043e\u0441\u043a\u0438 \u0438 \u0431\u043b\u043e\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043d\u043e\u0441\u043a\u0438_\u0438_\u0431\u043b\u043e\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:68,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;115214-115961&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit32&quot; id=&quot;заголовки&quot;&gt;Заголовки&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Текущие заголовки могут находиться на той же строке, что и предшествующий текст. Это вытекает из эффекта, рассмотренного выше в вопросе «Захват строк», и требует некоторой предварительной обработки для устранения. Например:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;До заголовка есть
Некоторый текст == Заголовок ==
После заголовка&lt;/pre&gt;

&lt;p&gt;
Если бы поведение было бы таким же, как в оригинальном парсере «Докувики», преобразование было бы таким:
&lt;/p&gt;

&lt;p&gt;
До заголовка есть
Некоторый текст == Заголовок ==
После заголовка
&lt;/p&gt;

&lt;p&gt;
Но в результате будет:
&lt;/p&gt;

&lt;p&gt;
До заголовка есть
Некоторый текст
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;заголовок&quot;&gt;Заголовок&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;

&lt;p&gt;
После заголовка
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:68,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;115962-117014&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit33&quot; id=&quot;конфликт_блоков_и_списков&quot;&gt;Конфликт блоков и списков&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Существует проблема: если до списка находится пустая строка с двумя пробелами, всё это вместе будет интерпретироваться как блок:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;* list item
* list item 2&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442_\u0431\u043b\u043e\u043a\u043e\u0432_\u0438_\u0441\u043f\u0438\u0441\u043a\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:69,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;117015-117344&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;что_ещё_необходимо_сделать&quot;&gt;Что ещё необходимо сделать&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вот некоторые вопросы, которые ещё предстоит решить…
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0427\u0442\u043e \u0435\u0449\u0451 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0447\u0442\u043e_\u0435\u0449\u0451_\u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e_\u0441\u0434\u0435\u043b\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:69,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;117345-117507&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit35&quot; id=&quot;больше_состояний_для_закрывающих_инструкций&quot;&gt;Больше состояний для закрывающих инструкций&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для преобразования в иные форматы, нежели XHTML, может оказаться полезным добавление отождествления уровня для закрывающих инструкций списка, и т. д.
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Почему бы просто не «преобразовать» в XML и затем применить к нему некоторые парсеры XSLT/XML?&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043e\u043b\u044c\u0448\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043e\u043b\u044c\u0448\u0435_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439_\u0434\u043b\u044f_\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0445_\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:69,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;117508-118038&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit36&quot; id=&quot;подрежимы_для_таблиц_списков_цитат&quot;&gt;Подрежимы для таблиц, списков, цитат&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Анализатор с множественными режимами для предотвращения случаев вложенности состояний друг в друга.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0440\u0435\u0436\u0438\u043c\u044b \u0434\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446, \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0446\u0438\u0442\u0430\u0442&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0440\u0435\u0436\u0438\u043c\u044b_\u0434\u043b\u044f_\u0442\u0430\u0431\u043b\u0438\u0446_\u0441\u043f\u0438\u0441\u043a\u043e\u0432_\u0446\u0438\u0442\u0430\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:69,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;118039-118304&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit37&quot; id=&quot;обсуждение&quot;&gt;Обсуждение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Спасибо за перевод! &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:69,&amp;quot;secid&amp;quot;:37,&amp;quot;range&amp;quot;:&amp;quot;118305-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;em class=&quot;u&quot;&gt;L&lt;/em&gt;exer относится к классу &lt;code&gt;Doku_Lexer&lt;/code&gt; и содержится в файле &lt;code&gt;inc/parser/lexer.php&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Сканирование — чтение строки PHP от начала до конца.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Термин «токен» в этом документе относится к совпадению регулярного выраждения, полученного лексическим анализатором, и соответствующему вызову метода обработчиком.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;em class=&quot;u&quot;&gt;H&lt;/em&gt;andler относится к классу &lt;code&gt;Doku_Handler&lt;/code&gt; и содержится в файле &lt;code&gt;inc/parser/handler.php&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__5&quot; id=&quot;fn__5&quot; class=&quot;fn_bot&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Последовательность инструкций содержится в массиве &lt;code&gt;$calls&lt;/code&gt;, который является атрибутом обработчика. Предназначен для использования с &lt;a href=&quot;https://secure.php.net/call_user_func_array&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/call_user_func_array&quot;&gt;call_user_func_array&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__6&quot; id=&quot;fn__6&quot; class=&quot;fn_bot&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;em class=&quot;u&quot;&gt;P&lt;/em&gt;arser относится к классу &lt;code&gt;Doku_Parser&lt;/code&gt; и содержится в файле &lt;code&gt;inc/parser/parser.php&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__7&quot; id=&quot;fn__7&quot; class=&quot;fn_bot&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;em class=&quot;u&quot;&gt;R&lt;/em&gt;enderer (&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; от «to render» &lt;em&gt;в значении&lt;/em&gt; превращать, преобразовывать) относится к абстрактному (implemented) классу &lt;code&gt;Doku_Renderer&lt;/code&gt; - см. &lt;code&gt;inc/parser/renderer.php&lt;/code&gt; и &lt;code&gt;inc/parser/xhtml.php&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__8&quot; id=&quot;fn__8&quot; class=&quot;fn_bot&quot;&gt;8)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Прим. переводчика: возможно, речь идёт о т.н. &lt;strong&gt;незахватывающем поиске&lt;/strong&gt;, подробнее см. литературу по регулярным выражениям, например, Джеффри Фридла «Регулярные выражения: библиотека программиста. Второе издание.» — СПб.: Питер, 2003, или документацию по PHP — &lt;a href=&quot;http://ru.php.net/manual/en/ref.pcre.php&quot; class=&quot;urlextern&quot; title=&quot;http://ru.php.net/manual/en/ref.pcre.php&quot; rel=&quot;ugc nofollow&quot;&gt;ru.php.net/manual/en/ref.pcre.php&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__9&quot; id=&quot;fn__9&quot; class=&quot;fn_bot&quot;&gt;9)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Термины «состояние» и «режим» используются отчасти как взаимозаменяемые, когда здесь говориться об анализаторе&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__10&quot; id=&quot;fn__10&quot; class=&quot;fn_bot&quot;&gt;10)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Смысл «плохо форматируемый» не применим к парсеру «Докувики» — он разработан так, чтобы предотвращать случаи, когда пользователь забывает добавить закрывающий тэг некоторой разметки, полностью игнорируя эту разметку.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 17 Jan 2025 10:53:47 +0000</pubDate>
        </item>
        <item>
            <title>smileys.conf</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:smileys.conf&amp;rev=1736847951</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;smileysconf&quot;&gt;smileys.conf&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Используется для замены текстовых макросов графическим представлением. Также может использоваться для размещения других изображений &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:smileys&quot; class=&quot;wikilink1&quot; title=&quot;wiki:smileys&quot; data-wiki-id=&quot;wiki:smileys&quot;&gt;smileys&lt;/a&gt; внутри текстового потока.
&lt;/p&gt;

&lt;p&gt;
Текст заменяется, если он найден в исходном коде вики-страницы, другой синтаксис не требуется.
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;# Настроенные здесь смайлики будут заменены на
# настроенные изображения в каталоге смайликов

8-)         icon_cool.gif
8-O         icon_eek.gif
8-o         icon_eek.gif
:-(         icon_sad.gif
:-)         icon_smile.gif
=)          icon_smile2.gif
:-/         icon_doubt.gif
:-\         icon_doubt2.gif
:-?         icon_confused.gif
:-D         icon_biggrin.gif
:-P         icon_razz.gif
:-o         icon_surprised.gif
:-O         icon_surprised.gif
:-x         icon_silenced.gif
:-X         icon_silenced.gif
:-|         icon_neutral.gif
;-)         icon_wink.gif
m(          facepalm.gif
^_^         icon_fun.gif
:?:         icon_question.gif
:!:         icon_exclaim.gif
LOL         icon_lol.gif
FIXME       fixme.gif
DELETEME    delete.gif&lt;/pre&gt;

&lt;p&gt;
Или находится в репозитории git: &lt;code&gt;&lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/conf/smileys.conf&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/blob/master/conf/smileys.conf&quot; rel=&quot;ugc nofollow&quot;&gt;conf/smileys.conf&lt;/a&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Администраторы Вики должны разместить свои смайлики &lt;code&gt;conf/smileys.local.conf&lt;/code&gt;, см. также &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:smileys#настройка_смайликов&quot; class=&quot;wikilink1&quot; title=&quot;wiki:smileys&quot; data-wiki-id=&quot;wiki:smileys&quot;&gt;Настройка смайликов&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 14 Jan 2025 09:45:51 +0000</pubDate>
        </item>
        <item>
            <title>syntax_plugins</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:syntax_plugins&amp;rev=1736451851</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;синтаксические_плагины&quot;&gt;Синтаксические плагины&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Синтаксические плагины — это плагины расширения синтаксиса «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;ДокуВики&lt;/a&gt;». Чтобы понять, что необходимо для регистрации нового синтаксиса в «ДокуВики», вы должны прочитать, как работает &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser&quot; data-wiki-id=&quot;wiki:devel:parser&quot;&gt;парсер&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435_\u043f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-441&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;краткий_обзор&quot;&gt;Краткий обзор&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для синтаксического плагина &lt;em&gt;example&lt;/em&gt; требуется объявить имя класса как &lt;code&gt;syntax_plugin_&amp;lt;example&amp;gt;&lt;/code&gt;, который расширяет класс &lt;code&gt;DokuWiki_Syntax_Plugin&lt;/code&gt;, определённый в файле &lt;code&gt;lib/plugins/syntax.php&lt;/code&gt;. Класс необходимо сохранить в файле с названием &lt;code&gt;lib/plugins/example/syntax.php&lt;/code&gt;. Для более подробной информации можно обратиться к статье о &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_file_structure&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugin_file_structure&quot; data-wiki-id=&quot;wiki:devel:plugin_file_structure&quot;&gt;структуре файлов плагина&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Класс должен содержать как минимум следующие функции:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;del&gt;&lt;code&gt;getInfo()&lt;/code&gt; — возвращает хэш с информацией о плагине: автор, электропочта, дата, название, описание, ссылки.&lt;/del&gt;&lt;br/&gt;
&lt;strong&gt;Теперь вместо неё прилагается отдельный файл plugin.info.txt&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;getType()&lt;/code&gt; — должен возвращать тип синтаксиса (см. &lt;a href=&quot;#синтаксические_типы&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;ниже&lt;/a&gt;).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;getSort()&lt;/code&gt; — возвращает число, по которому определяется, в каком порядке должны добавляться состояния, см. также  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser#order_of_adding_modes_important&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser&quot; data-wiki-id=&quot;wiki:devel:parser&quot;&gt;parser, order of adding modes&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser:getsort_list&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser:getsort_list&quot; data-wiki-id=&quot;wiki:devel:parser:getsort_list&quot;&gt;getSort list&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;connectTo($mode)&lt;/code&gt; — эта функция наследуется от класса Doku_Parser_Mode, определённого в &lt;code&gt;inc/parser/parser.php&lt;/code&gt;. Это место, где регистрируется регулярные выражения, необходимые для опознания вашего синтаксиса.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;handle($match, $state, $pos, Doku_Handler $handler)&lt;/code&gt; — функция для подготовки совпавшего синтаксиса для использования рендером.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;render($mode, Doku_Renderer $renderer, $data)&lt;/code&gt; — функция для отображения контента.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Следующие дополнительные методы могут быть переопределены при необходимости:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;getPType()&lt;/code&gt; — определяет, как данный синтаксис размещается относительно параграфов&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;. Возвращает:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;  &lt;code&gt;normal&lt;/code&gt; — (значение по умолчанию, используется, если метод не переопределяется) Плагин может использоваться внутри параграфов,&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;block&lt;/code&gt; — Открытые параграфы должны быть закрыты до вывода плагина или &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;stack&lt;/code&gt; — Специальный случай. Плагин обёртывает другие параграфы&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;getAllowedTypes()&lt;/code&gt; (значение по умолчанию: &lt;code&gt;array()&lt;/code&gt;) Должен вернуть массив &lt;a href=&quot;#синтаксические_типы&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;типов состояний&lt;/a&gt;, которые могут быть включены в собственную разметку плагина.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;accepts($mode)&lt;/code&gt; — Эта функция говорит парсеру, допускает ли плагин синтаксическое состояние $mode в своей разметке. Поведение по умолчанию заключается в проверке наличия $mode в массиве состояний, хранящемся в унаследованном свойстве &lt;code&gt;allowedModes&lt;/code&gt;. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
При необходимости могут быть определены дополнительные функции. Рекомендуется добавлять впереди символ подчерка к названиям самостоятельно определённых функций для того, чтобы избежать возможных пересечений имён при дальнейшем развитии спецификации плагинов.   
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Унаследованные свойства
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;allowedModes&lt;/code&gt; — начальное значение: пустой массив, унаследованный от  класса &lt;code&gt;Doku_Parser_Mode&lt;/code&gt;, определённого в &lt;code&gt;inc/parser/parser.php&lt;/code&gt;. Содержит список других синтаксических состояний, появление которых допустимо внутри собственного синтаксического состояния плагина (т. е. состояния, которые относятся к любым другим элементам разметки «ДокуВики», которые могут быть включены внутрь собственной разметки плагина). Обычно он автоматически заполняется функцией &lt;code&gt;accepts()&lt;/code&gt;, используя результаты &lt;code&gt;getAllowedTypes()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0440\u0430\u0442\u043a\u0438\u0439_\u043e\u0431\u0437\u043e\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;442-5673&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;синтаксические_типы&quot;&gt;Синтаксические типы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
«ДокуВики» использует различные синтаксические типы для того, чтобы определить, какие синтаксические конструкции могут быть вставлены внутрь другой. Например, вы можете вставить текстовое форматирование внутрь таблицы. 
&lt;/p&gt;

&lt;p&gt;
Для того, чтобы интегрировать свой плагин в эту систему, нужно указать, какой тип он имеет и какие типы могут вставляться в него. В настоящий момент доступны следующие типы: 
&lt;/p&gt;
&lt;div class=&quot;table sectionedit4&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Тип  &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Используется в…   &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Описание  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; container &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; listblock, table, quote, hr &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Контейнеры — это сложные состояния, которые могут содержать много других состояний, но они не должны использоваться в таблицах и списках (состояние &lt;code&gt;hr&lt;/code&gt; нарушает общий принцип), поэтому они отнесены к этому типу. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; baseonly &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; header &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Некоторые состояния допустимы только внутри базового состояния. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; formatting &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; strong, emphasis, underline, monospace, subscript, superscript, deleted, footnote &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Состояния для изменения стиля текста (сноски (footnote) также можно рассматривать как стиль). &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; substition&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; acronym, smiley, wordblock, entity, camelcaselink, internallink, media, externallink, linebreak, emaillink, windowssharelink, filelink, notoc, nocache, multiplyentity, quotes, rss &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Состояния, в которых токен просто меняется на что-то; не могут содержать в себе другие состояния. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; protected &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; preformatted, code, file, php, html &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;Состояния, имеющие начальный и конечный токены, но внутри которых не допустимы никакие другие состояния. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; disabled &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; unformatted &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Внутри этого состояния вики-разметка не отрабатывается, переносы строки и пробелы не сохраняются. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; paragraphs &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; eol &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; Используется для отметки границ параграфов. &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6452-8649&amp;quot;} --&gt;
&lt;p&gt;
Для описания того, что каждый из типов значит и какие другие классы форматирования зарегистрированы в них, читайте комментарии в файле  &lt;code&gt;inc/parser/parser.php&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0435_\u0442\u0438\u043f\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5674-8927&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit5&quot; id=&quot;руководстворазбор_синтаксического_плагина&quot;&gt;Руководство: разбор синтаксического плагина&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Цель данного руководства — разобрать концепции, касающиеся &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:syntax_plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:syntax_plugins&quot; data-wiki-id=&quot;wiki:devel:syntax_plugins&quot;&gt;синтаксических плагинов&lt;/a&gt; «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;ДокуВики&lt;/a&gt;» и пройти шаги, связанные с написанием своего собственного плагина.
&lt;/p&gt;

&lt;p&gt;
Для тех, кто с особым нетерпением жаждет начать: возьмите копию плагина &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:syntax_plugin_skeleton&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:syntax_plugin_skeleton&quot; data-wiki-id=&quot;wiki:devel:syntax_plugin_skeleton&quot;&gt;syntax plugin skeleton&lt;/a&gt;. Это своего рода костяк — плагин, который выводит «Hello World!», когда встречает токен «&lt;code&gt;&amp;lt;TEST&amp;gt;&lt;/code&gt;» в статье вики. Начните наращивать на него «мясо».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e: \u0440\u0430\u0437\u0431\u043e\u0440 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u0440\u0430\u0437\u0431\u043e\u0440_\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e_\u043f\u043b\u0430\u0433\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;8928-9805&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;краткая_выжимка&quot;&gt;Краткая выжимка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
состояния — modes
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Каждый отдельный элемент синтаксиса «ДокуВики», включая и ваш собственный плагин, имеет своё собственное состояние.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Похожие состояния группируются в &lt;a href=&quot;#типы_состояний&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;типы состояний&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «allowedTypes» каждого состояния определяет, какие другие синтаксические конструкции «ДокуВики» опознаются внутри собственной синтаксической конструкции этого состояния. Все состояния из «allowedTypes» допустимы.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «Тип» состояния даёт понять другим состояниям, могут ли они допустить использование данного состояния внутри своего синтаксиса.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;handle&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Метод &lt;code&gt;&lt;a href=&quot;#метод_handle&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;handle()&lt;/a&gt;&lt;/code&gt; вызывается, когда парсер решит, что столкнулся в содержимом статьи вики с куском, относящимся к синтаксису вашего состояния.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Параметр &lt;code&gt;$state&lt;/code&gt; говорит, какой тип шаблона из приписанных к вашему состоянию сработал. Если это просто обычный текст, то параметр &lt;code&gt;state&lt;/code&gt; будет установлен в &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Производите как можно больше обработки и принятия решений именно тут, оставляя как можно меньше на обработку методу &lt;code&gt;&lt;a href=&quot;#метод_render&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;render()&lt;/a&gt;&lt;/code&gt;, потому что выдача метода handle кэшируется. This also means that you shouldn&amp;#039;t do any stuff here that mustn&amp;#039;t be cached.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;strong&gt;render&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Метод &lt;code&gt;render()&lt;/code&gt; выполняет инструкции отображения, которые применимы к синтаксическому состоянию плагина (и которые были созданы методом &lt;code&gt;handle()&lt;/code&gt; плагина.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Добавляйте содержание к выходному документу с помощью &lt;code&gt;$renderer-&amp;gt;doc .= &amp;#039;content&amp;#039;;&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Убедитесь, что любая выдача вашего плагина &lt;strong&gt;безопасна&lt;/strong&gt; (run raw wiki data through an entity conversion function). &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Совершайте как можно меньше операций по обработке и принятию решений здесь, это всё следует делать в методе &lt;code&gt;handle()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Нет никакой гарантии, что метод &lt;code&gt;render()&lt;/code&gt; будет вызван в то же время, что и метод &lt;code&gt;handle()&lt;/code&gt;. Инструкции, произведённые хэндлером, кэшируются и могут использоваться рендером в более позднее время. Единственный надёжный способ передать данные от &lt;code&gt;handle()&lt;/code&gt; к &lt;code&gt;render()&lt;/code&gt; — это использовать возвращаемый методом &lt;code&gt;handle()&lt;/code&gt; массив, который передаётся методу &lt;code&gt;render()&lt;/code&gt; в качестве параметра &lt;code&gt;$data&lt;/code&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0432\u044b\u0436\u0438\u043c\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0440\u0430\u0442\u043a\u0430\u044f_\u0432\u044b\u0436\u0438\u043c\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;9806-13335&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;ключевые_концепции&quot;&gt;Ключевые концепции&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435_\u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;13336-13384&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;состояния&quot;&gt;Состояния&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Состояния (более точно синтаксические состояния) — это основа, на которой базируется парсер «ДокуВики». Каждый отдельный элемент разметки «ДокуВики» имеет своё синтаксическое состояние. Например, существует состояние &lt;code&gt;strong&lt;/code&gt; для работы со &lt;strong&gt;strong&lt;/strong&gt;, состояние &lt;code&gt;superscript&lt;/code&gt; для работы с &lt;sup&gt;superscript&lt;/sup&gt;, состояние &lt;code&gt;table&lt;/code&gt; для работы таблицами и многие другие.
&lt;/p&gt;

&lt;p&gt;
Когда парсер сталкивается с разметкой, он попадает в соответствующее этой разметке синтаксическое состояние. Свойства и методы конкретного синтаксического состояния управляют тем, как ведёт себя парсер, пока он в этом состоянии, включая:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; какие другие состояния могут произойти;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; какие инструкции подготовить для рендера.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ваш плагин добавит своё синтаксическое состояние к парсеру — это автоматически производится «ДокуВики», когда впервые загружает плагин, назначаемое имя — &lt;code&gt;plugin_&lt;/code&gt;+ имя директории плагина (которое является также именем класса плагина без префикса «&lt;code&gt;syntax_&lt;/code&gt;»). Затем, когда парсер сталкивается с разметкой, используемой вашим плагином, он (парсер) войдёт в это синтаксическое состояние. Пока он находится в этом состоянии, ваш плагин управляет тем, что может делать парсер.   
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;13385-15510&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;типы_состояний&quot;&gt;Типы состояний&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для упрощения синтаксические состояния, которые ведут себя одинаковым образом, были сгруппированы в несколько типов состояний — полный список может быть найден в разделе «&lt;a href=&quot;#синтаксические_типы&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;Синтаксические плагины&lt;/a&gt;».
&lt;/p&gt;

&lt;p&gt;
Каждый тип состояний соотносится с ключом в массиве &lt;code&gt;$PARSER_MODES&lt;/code&gt;. Элемент этого массива, соответствующий каждому типу состояний, сам является массивом, который содержит все синтаксические состояния, относящиеся к этому типу. Например, в «чистой» «ДокуВики» без установленных плагинов элемент массива &lt;code&gt;$PARSER_MODES[&amp;#039;formatting&amp;#039;]&lt;/code&gt; содержит: strong, emphasis, underline, superscript, subscript, monospace, deleted и footnote.
&lt;/p&gt;

&lt;p&gt;
Когда плагин загружается в парсер, то через &lt;code&gt;getType()&lt;/code&gt; он запрашивается о типе состояния, к которому относится. Затем синтаксические состояния, относящиеся к плагину, добавляются в соответствующий массив &lt;code&gt;$PARSER_MODES&lt;/code&gt;.   
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Указанный вашим плагином тип состояний определяет, где в статье «ДокуВики» парсер будет опознавать разметку вашего плагин. Другие синтаксические состояния «ДокуВики» (также, как и плагины) не будут знать о вашем плагине, но они знают о различных типах состояний.
&lt;/p&gt;

&lt;p&gt;
Если они допускают конкретный тип состояний, он допускают все состояния этого типа, включая любые плагины, которые заявили этот тип состояний.
&lt;/p&gt;

&lt;p&gt;
Выберите тип состояний для своего плагина, сравнивая поведение своего плагина с поведением стандартных состояний «ДокуВики». Выберите тип, к которому относятся наиболее похожие состояния.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0438\u043f\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0438\u043f\u044b_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;15511-18137&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit10&quot; id=&quot;допустимые_состояния&quot;&gt;Допустимые состояния&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Есть другие состояния, которые могут возникнуть внутри разметки вашего собственного состояния.
&lt;/p&gt;

&lt;p&gt;
Каждое синтаксическое состояние имеет собственный массив допустимых состояний, который говорит парсеру, какие именно другие синтаксические состояния будут опознаваться во время обработки состояния. То есть, если вы хотите, чтобы ваш плагин мог оказаться внутри разметки «**strong**», тогда состояние &lt;code&gt;strong&lt;/code&gt; должен включить состояние вашего плагина в свой массив «allowedModes». И если вы хотите позволить разметке &lt;code&gt;strong&lt;/code&gt; включаться внутрь разметки вашего плагина, то ваш плагин должен содержать &lt;code&gt;&amp;#039;strong&amp;#039;&lt;/code&gt; в своём массиве «allowModes».
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Ваш плагин собирает в массив «allowedModes» другие синтаксические состояния посредством типа состояний, объявляемого методом &lt;code&gt;getType()&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Ваш плагин сообщает парсеру, какие другие синтаксические состояния он допускает, декларируя (объявляя) их через метод &lt;code&gt;getAllowedTypes()&lt;/code&gt;.  
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;18138-19816&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;ptype&quot;&gt;PType&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
PType определяет, как парсеру работать с &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-элементами &amp;lt;p&amp;gt;, когда он имеет дело с вашим синтаксическим состоянием.
&lt;/p&gt;

&lt;p&gt;
Обычно в тот момент, когда парсер сталкивается с некоторой разметкой, имеется открытый &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-тэг параграфа. Парсеру необходимо знать, должен ли он закрыть этот тэг перед входом в ваше синтаксическое состояние и затем открыть другой параграф на выходе (&lt;code&gt;PType=&amp;#039;block&amp;#039;&lt;/code&gt; или &lt;code&gt;PType=&amp;#039;stack&amp;#039;&lt;/code&gt;) или парсер должен оставить параграф в покое (&lt;code&gt;PType=&amp;#039;normal&amp;#039;&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
PType также определяет будет ли параграф создаваться внутри вашего синтаксического состояния. И если будет - то как.
&lt;/p&gt;

&lt;p&gt;
Если &lt;code&gt;PType=&amp;#039;normal&amp;#039;&lt;/code&gt;, то параграф не будет создаваться вовсе. 
&lt;/p&gt;

&lt;p&gt;
Если &lt;code&gt;PType=&amp;#039;block&amp;#039;&lt;/code&gt;, то парсер закроет параграф перед входом в ваше синтаксическое состояние, и откроет новый параграф после выходы из вашего синтаксического состояния. Внутри вашего синтаксического состояния создание параграфов должно быть запрещено (см. &lt;a href=&quot;#допустимые_состояния&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;&amp;quot;Допустимые состояния&amp;quot;&lt;/a&gt;), иначе открытый параграф закроется как обычно (как только встретятся два подряд или более newlines), и откроется новый. В результате, например, открывающий TAG &amp;lt;DIV&amp;gt; может оказаться внутри одного параграфа, а закрывающий &amp;lt;/DIV&amp;gt; внутри другого. Или ещё что-то.
&lt;/p&gt;

&lt;p&gt;
Если &lt;code&gt;PType=&amp;#039;stack&amp;#039;&lt;/code&gt;, то парсер:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; закроет параграф перед входом в ваше синтаксическое состояние;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; откроет параграф после входа в ваше синтаксическое состояние;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; если внутри вашего синтаксического состояния разрешёно создавать параграфы (см. &lt;a href=&quot;#допустимые_состояния&quot; title=&quot;wiki:devel:syntax_plugins ↵&quot; class=&quot;wikilink1&quot;&gt;&amp;quot;Допустимые состояния&amp;quot;&lt;/a&gt;), то параграфы внутри вашего синтаксического состояния будут создаваться как обычно (как только встретятся два подряд или более newlines). Если не разрешено, то параграф так и останется открытым до выхода из вашего синтаксического состояния;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; перед выходом из вашего синтаксического состояния парсер закроет параграф (в этом месте он должен быть открыт, не зависимо от того, разрешено ли создавать параграфы внутри или нет);&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; после выходы из вашего синтаксического состояния парсер откроет новый параграф.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Для тех, кто знает &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;, возвращение &lt;code&gt;PType=&amp;#039;block&amp;#039;&lt;/code&gt; означает, что html, произведённый вашим плагином, будет похож на &lt;code&gt;display:block&lt;/code&gt;, а возвращение &lt;code&gt;PType=&amp;#039;normal&amp;#039;&lt;/code&gt; означает html, похожий на &lt;code&gt;display:inline&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;пример&quot;&gt;Пример&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Предполагается, что вы хорошо знакомы со стандартным шаблоном syntax plugin ENTRY ⇒ UNMATCHED ⇒ EXIT. В зависимости от значения PType &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; и &lt;code&gt;&amp;lt;/p&amp;gt;&lt;/code&gt; будут расставляться автоматически рендером в разных точках снаружи и внутри текста плагина. Поэтому вашему плагину не нужно заботиться об этих тэгах.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit12&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;wikisyntax &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt;PType=normal &lt;/th&gt;&lt;th class=&quot;col2&quot;&gt;PType=block &lt;/th&gt;&lt;th class=&quot;col3&quot;&gt;PType=stack &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt;&lt;pre class=&quot;code&quot;&gt;foo
&amp;lt;plugin&amp;gt;text&amp;lt;/plugin&amp;gt;

bar&lt;/pre&gt;
&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;foo
ENTRY(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
UNMATCHED(&amp;quot;text&amp;quot;)
EXIT(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;bar&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;foo&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
ENTRY(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
UNMATCHED(&amp;quot;text&amp;quot;)
EXIT(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;bar&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;td class=&quot;col3&quot;&gt; &lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;foo&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
ENTRY(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
UNMATCHED(&amp;quot;text&amp;quot;)
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;
EXIT(&amp;quot;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;plugin&amp;gt;&lt;/span&gt;&amp;quot;)
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;bar&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/p.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;p&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;24300-24703&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PType&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ptype&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;19817-24704&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;порядковый_номер&quot;&gt;Порядковый номер&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Этот номер используется лексером&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; для управления порядком, в котором он проверяет шаблоны синтаксических состояний на «сырых» (исходных) данных вики. Это важно только в том случае, если один и тот же участок данных попадает в шаблоны, относящиеся к двум или более состояниям. После проверки будет выбран шаблон, относящийся к состоянию с наименьшим порядковым номером.
&lt;/p&gt;

&lt;p&gt;
Вы можете использовать это свойство для написания плагина, который заменяет или расширяет «родной» хендлер «ДокуВики» для той же синтаксической конструкции. Примером является плагин «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:code&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:code&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:code&quot;&gt;Code&lt;/a&gt;».
&lt;/p&gt;

&lt;p&gt;
Подробности о существующих порядковых номерах доступны для обоих &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser&quot; data-wiki-id=&quot;wiki:devel:parser&quot;&gt;parser&lt;/a&gt; (&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser:getsort_list&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser:getsort_list&quot; data-wiki-id=&quot;wiki:devel:parser:getsort_list&quot;&gt;sort list&lt;/a&gt;).
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/question.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:?:&quot; /&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439_\u043d\u043e\u043c\u0435\u0440&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;24705-26098&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;шаблоны&quot;&gt;Шаблоны&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Парсер использует PHP-функции «preg»&lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt;. Детальное объяснения регулярных выражений и их синтаксиса выходит за пределы этого руководства. Существует много хороших источников в интернете.
&lt;/p&gt;

&lt;p&gt;
Полный синтаксис «preg» не доступен для использования в конструировании шаблонов синтаксических плагинов. Ниже приведён список известных различий:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Шаблоны не окружаются разделителями.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для использования вертикальной черты «|» при множественных альтернативах, сделайте их non-captured-группами, т. е. «(?:cat|dog)».&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Будьте очень осторожны с «заглядыванием назад». Парсер только пытается сравнить шаблон со следующим куском «ещё не проверенных» данных. Если вам нужно заглянуть в символы, которые уже участвовали в предыдущем сравнении с шаблоном, то этих символов там на самом деле не будет.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Флаги опций могут быть включены только как встроенные опции, т. е. &lt;code&gt;(?i)&lt;/code&gt;, &lt;code&gt;(?-i)&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Парсер предоставляет плагину четыре функции для регистрации необходимых шаблонов. Каждая функция относится к шаблонам с разными смыслами.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;специальные шаблоны&lt;/strong&gt; — &lt;code&gt;addSpecialPattern()&lt;/code&gt; — это шаблоны, которые используются, когда один шаблон — это всё, что нужно. В терминах парсера эти шаблоны представляют и вход в синтаксическое состояние плагина, и выход из этого синтаксического состояния, всё в одно сравнение. Обычно они используются в плагинах &lt;code&gt;substition&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;входные шаблоны&lt;/strong&gt; — &lt;code&gt;addEntryPattern()&lt;/code&gt; — шаблон, указывающий на начало данных, которые должны быть обработаны плагином. Обычно эти шаблоны должны включать в себя заглядывание вперёд для проверки существования выходного шаблона. Любой плагин, который регистрирует входной шаблон, также должен зарегистрировать выходной шаблон.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;выходные шаблоны&lt;/strong&gt; — &lt;code&gt;addExitPattern()&lt;/code&gt; — шаблон, указывающий на конец данных, которые должны быть обработаны плагином. Этот совпадение с этим шаблоном может произойти, только если было найдено совпадение с входным шаблоном&lt;sup&gt;&lt;a href=&quot;#fn__5&quot; id=&quot;fnt__5&quot; class=&quot;fn_top&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;внутренние шаблоны&lt;/strong&gt; — &lt;code&gt;addPattern()&lt;/code&gt; — представляют специальный синтаксис, применимый к плагину, который может встретиться между входным и выходным шаблонами. Обычно это нужно только для достаточно сложных структур, например, таблиц и списков.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;br/&gt;

&lt;/p&gt;

&lt;p&gt;
Один плагин может добавить несколько шаблонов в парсер, включая более чем один шаблон одного типа.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Советы&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Используйте «нежадные» идентификаторы, т. е. &lt;code&gt;+?&lt;/code&gt; или &lt;code&gt;*?&lt;/code&gt; вместо &lt;code&gt;+&lt;/code&gt; или &lt;code&gt;*&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Будьте осторожны с использованием нескольких выходных шаблонов. Скорее всего сработает выход из состояния по первому встреченному выходному шаблону, даже если это будет не тот шаблон, который «увидел при заглядывании вперёд» входной шаблон. Необходимость нескольких выходных шаблонов может означать, что на самом деле вам нужны несколько плагинов.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В ранних версиях «ДокуВики» лексер имел баг, не дававший использовать угловые скобки «&amp;lt;» или «&amp;gt;» в «заглядывающих вперёд» шаблонах. Этот баг был исправлен и угловые скобки теперь допустимы. Некоторые плагины всё ещё содержат шестнадцатеричные обозначения для угловых скобкок («\x3C», «\x3E») — такой приём позволял обойти баг. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0430\u0431\u043b\u043e\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0430\u0431\u043b\u043e\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;26099-31726&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;метод_handle&quot;&gt;Метод handle()&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Это часть вашего плагина, которая должна совершать всю работу. До того как «ДокуВики» выведет статью вики, он создаёт список инструкций для рендера. Метод &lt;code&gt;handle()&lt;/code&gt; плагина создаёт инструкции отображения для собственного синтаксического состояния. В некий более поздний момент они будут интерпретированы методом &lt;code&gt;render()&lt;/code&gt; плагина. Список инструкций кэшируется и может быть использован много раз, разумно максимально увеличить объём работы, совершаемой один раз этой функцией и максимально уменьшить объём работы, совершаемый много раз функцией &lt;code&gt;render()&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Параметр &lt;code&gt;$match&lt;/code&gt; — текст, который совпадает с шаблоном, или, в случае &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt;, непрерывный кусок обычного текста, который не совпал с каким-либо шаблоном.
&lt;/p&gt;

&lt;p&gt;
Параметр &lt;code&gt;$state&lt;/code&gt; — тип шаблона, из-за которого запустился вызов handle().
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_ENTER&lt;/code&gt; — шаблон установлен функцией addEntryPattern();&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_MATCHED&lt;/code&gt; — шаблон установлен функцией addPattern();&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_EXIT&lt;/code&gt; — шаблон установлен функцией addExitPattern();&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_SPECIAL&lt;/code&gt; — шаблон установлен функцией addSpecialPattern();&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt; — обычный текст, встреченный внутри синтаксического состояния плагина, который не совпал ни с одним шаблоном.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Параметр &lt;code&gt;$pos&lt;/code&gt; — позиция первого символа найденного текста.
&lt;/p&gt;

&lt;p&gt;
Параметр &lt;code&gt;&amp;amp;$handler&lt;/code&gt; — ссылка на объект &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:devel:parser#обработчик&quot; class=&quot;wikilink2&quot; title=&quot;ru:devel:parser&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:devel:parser&quot;&gt;Doku_Handler&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0435\u0442\u043e\u0434 handle()&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0435\u0442\u043e\u0434_handle&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;31727-34042&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;метод_render&quot;&gt;Метод render()&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Часть плагина, которая производит вывод окончательной веб-страницы или какой-либо другой поддерживаемый формат. Именно здесь плагин добавляет собственный вывод к уже созданным другими частями рендерера путём склейки со свойством &lt;code&gt;doc&lt;/code&gt; рендера. Т. е.:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$renderer-&amp;gt;doc .= &amp;quot;некий вывод плагина...&amp;quot;;&lt;/pre&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; В любых сырых данных вики, которые передаются &lt;code&gt;render()&lt;/code&gt;, все спецсимволы должны быть преобразованы в элементы &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. Вы можете использовать PHP-функции &lt;code&gt;&lt;a href=&quot;http://uk.php.net/manual/en/function.htmlspecialchars.php&quot; class=&quot;urlextern&quot; title=&quot;http://uk.php.net/manual/en/function.htmlspecialchars.php&quot; rel=&quot;ugc nofollow&quot;&gt;htmlspecialchars()&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href=&quot;http://uk.php.net/manual/en/function.htmlentities.php&quot; class=&quot;urlextern&quot; title=&quot;http://uk.php.net/manual/en/function.htmlentities.php&quot; rel=&quot;ugc nofollow&quot;&gt;htmlentities()&lt;/a&gt;&lt;/code&gt; или собственный метод &lt;code&gt;xmlEntities()&lt;/code&gt; рендера. Т. е.:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$renderer-&amp;gt;doc .= $renderer-&amp;gt;_xmlEntities($text);&lt;/pre&gt;

&lt;p&gt;
Параметр &lt;code&gt;$mode&lt;/code&gt; — имя формата состояния финального вывода произведённого рендером. В настоящее время «ДокуВики» поддерживает только один формат вывода — &lt;code&gt;XHTML&lt;/code&gt; &lt;sup&gt;&lt;a href=&quot;#fn__6&quot; id=&quot;fnt__6&quot; class=&quot;fn_top&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt;.
&lt;/p&gt;

&lt;p&gt;
Новые состояния могут быть представлены в &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:renderer_plugins&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:renderer_plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:renderer_plugins&quot;&gt;плагинах рендера&lt;/a&gt;. Плагины должны производить вывод только для тех форматов, которые они поддерживают, это значит, что эта функция должна быть структурирована…
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;if ($mode == &amp;#039;xhtml&amp;#039;) {  // supported mode
  // code to generate XHTML output from instruction $data
}&lt;/pre&gt;

&lt;p&gt;
Параметр &lt;code&gt;$data&lt;/code&gt; — массив, содержащий инструкции, предварительно подготовленные собственным методом &lt;code&gt;handle()&lt;/code&gt; плагина. Эта функция должна интерпретировать инструкции и выдавать соответствующий вывод.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0435\u0442\u043e\u0434 render()&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0435\u0442\u043e\u0434_render&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;34043-36698&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;безопасность&quot;&gt;Безопасность&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Сырые данные вики, которые достигли вашего плагина, больше никогда не должны обрабатываться. Никакой дальнейшей обработки не производится над выводом после того, как он покидает плагин. Как минимум, плагин должен убедиться, что в выводе все спецсимволы &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; заменены на &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;-последовательности. Также к извлечённым и используемым внутри данным вики нужно относится с вниманием. См. также статью «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:security&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:security&quot; data-wiki-id=&quot;wiki:devel:security&quot;&gt;Безопасность&lt;/a&gt;».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;36699-37495&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;локализация&quot;&gt;Локализация&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
Смотрите статьи «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:common_plugin_functions#локализация&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:common_plugin_functions&quot; data-wiki-id=&quot;wiki:devel:common_plugin_functions&quot;&gt;Локализация&lt;/a&gt;» и «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_file_structure&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugin_file_structure&quot; data-wiki-id=&quot;wiki:devel:plugin_file_structure&quot;&gt;Структура файлов плагина&lt;/a&gt;».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;37496-37735&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;конфигурация&quot;&gt;Конфигурация&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Смотрите статью «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:configuration&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:configuration&quot; data-wiki-id=&quot;wiki:devel:configuration&quot;&gt;Конфигурация&lt;/a&gt;».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;37736-37850&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit20&quot; id=&quot;использование_css_и_javascript&quot;&gt;Использование CSS и JavaScript&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
Смотрите статью «&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_file_structure&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugin_file_structure&quot; data-wiki-id=&quot;wiki:devel:plugin_file_structure&quot;&gt;Структура файлов плагина&lt;/a&gt;».
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 CSS \u0438 JavaScript&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435_css_\u0438_javascript&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;37851-38020&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;добавление_кнопок_к_панели_инструментов&quot;&gt;Добавление кнопок к панели инструментов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Для того, чтобы облегчить жизнь пользователям вики, которые установили ваш плагин, следует добавить кнопку в панель инструментов редактора.
&lt;/p&gt;

&lt;p&gt;
См. статьи:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:action_plugins#sample_action_plugin_2&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:action_plugins&quot; data-wiki-id=&quot;wiki:devel:action_plugins&quot;&gt;Плагины действий&lt;/a&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:toolbar&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:toolbar&quot; data-wiki-id=&quot;wiki:devel:toolbar&quot;&gt;Панель инструментов&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u043a \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043a\u043d\u043e\u043f\u043e\u043a_\u043a_\u043f\u0430\u043d\u0435\u043b\u0438_\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;38021-38520&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit22&quot; id=&quot;написание_своего_собственного_плагина&quot;&gt;Написание своего собственного плагина&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ну хорошо, вы решили расширить синтаксис «ДокуВики» своим собственным плагином. Вам придётся разработать, каким будет ваша синтаксическая конструкция и как она будет отображаться в браузере пользователя. Теперь вам необходимо написать сам плагин.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Примите решение, как назвать плагин. Возможно вы захотите проверить список &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:plugins&quot; class=&quot;wikilink2&quot; title=&quot;ru:plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:plugins&quot;&gt;доступных плагинов&lt;/a&gt;, чтобы убедиться, что такое имя уже не используется.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В своей собственной установке «ДокуВики» создайте собственную поддиректорию в директории &lt;code&gt;lib/plugins/&lt;/code&gt;. Эта директория должна называться также, как ваш плагин.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Создайте в новой директории файл &lt;code&gt;syntax.php&lt;/code&gt;. В качестве отправной точки, можете использовать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:syntax_plugin_skeleton&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:syntax_plugin_skeleton&quot; data-wiki-id=&quot;wiki:devel:syntax_plugin_skeleton&quot;&gt;скелет плагина&lt;/a&gt;. Скопируйте его в свою директорию.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Отредактируйте этот файл под свои нужды:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените название класса, чтобы он был вида &lt;code&gt;syntax_plugin_&amp;lt;название вашего плагина&amp;gt;&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#fn__7&quot; id=&quot;fnt__7&quot; class=&quot;fn_top&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените метод &lt;code&gt;getInfo()&lt;/code&gt;, чтобы он выдавал информацию о вашем плагине;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените метод &lt;code&gt;getType()&lt;/code&gt;, чтобы он выдавал тип состояний, к которому относится ваш плагин;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; добавьте метод &lt;code&gt;getAllowedTypes()&lt;/code&gt; для сообщения всех типов состояний, которые ваш плагин может включать внутрь своей собственной синтаксической конструкции. Если ваш плагин не желает позволять какому-либо состоянию включаться в себя, он может быть выкинут;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените метод &lt;code&gt;getPType()&lt;/code&gt;, чтобы он выдавал PType, который относится к вашему плагин. Если это &lt;code&gt;&amp;#039;normal&amp;#039;&lt;/code&gt;, вы можете просто убрать этот метод;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените метод &lt;code&gt;getSort()&lt;/code&gt;, чтобы он выдавал уникальный номер, проверьте его в списке &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=ru:plugins&quot; class=&quot;wikilink2&quot; title=&quot;ru:plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;ru:plugins&quot;&gt;плагинов&lt;/a&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; измените метод &lt;code&gt;connectTo()&lt;/code&gt;, чтобы зарегистрировать шаблон для опознавания вашего синтакиса;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; добавьте метод &lt;code&gt;postConnect()&lt;/code&gt;, если ваш синтаксис имеет второй шаблон, для того, чтобы указать, когда парсер должен покинуть ваше синтаксическое состояние.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Ну вот, простая часть работы сделана, теперь у вас есть плагин, которой скажет «Hello World!», когда встретит шаблон вашего синтаксиса. Самое время проверить его и убедиться, что шаблон работает как надо — посетите свою вики и создайте статью с синтаксической страницей своего плагина, сохраните её и убедитесь, что «Hello World!» действительно  показывается.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Напишите свои собственные методы &lt;code&gt;handle()&lt;/code&gt; и &lt;code&gt;render()&lt;/code&gt;:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; если у вас есть входной и выходной шаблоны, не забудьте обработать не совпавшие с шаблоном данные;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; относитесь к сырым данным вики с подозрением (вниманием) и убедитесь, что все спецсимволы прошли конвертор последовательностей.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Протестируйте и добавьте плагин на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugins&quot; data-wiki-id=&quot;wiki:plugins&quot;&gt;страницу плагинов&lt;/a&gt; «ДокуВики».&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435_\u0441\u0432\u043e\u0435\u0433\u043e_\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e_\u043f\u043b\u0430\u0433\u0438\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;38521-43286&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit23&quot; id=&quot;пример_1-й_плагина_now&quot;&gt;Пример 1-й плагина — Now&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Когда синтаксическая конструкция этого плагина &lt;code&gt;[NOW]&lt;/code&gt; встречается в статье вики, текущая дата и время отображается в формате &lt;a href=&quot;http://www.faqs.org/rfcs/rfc2822&quot; class=&quot;urlextern&quot; title=&quot;http://www.faqs.org/rfcs/rfc2822&quot; rel=&quot;ugc nofollow&quot;&gt;RFC2822&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Типом является &lt;code&gt;&amp;#039;substition&amp;#039;&lt;/code&gt;. Мы подставляем временую метку вместо токена &lt;code&gt;[NOW]&lt;/code&gt;, аналогично смайлам и акронимами. Они также относятся к типу состояний  &lt;code&gt;&amp;#039;substition&amp;#039;&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Заполнять «allowedTypes» не требуется, т. к. никакие другие синтаксические конструкции не могут появиться в конструкции &lt;code&gt;[NOW]&lt;/code&gt;. Т. о. нам не нужен метод &lt;code&gt;getAllowedTypes()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PType — &lt;code&gt;normal&lt;/code&gt; — это значение по умолчанию, поэтому нам не нужно определять  метод &lt;code&gt;getPType()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нет необходимости во входном и выходном шаблонами, только специальный шаблон, чтобы найти &lt;code&gt;[NOW]&lt;/code&gt;. Единственная вещь, с которой нужно быть осторожным, это то, что символы «[» и «]» имеют специальное значение в регулярных выражениях, поэтому нам нужно «выключить» (escape) их, создав шаблон &lt;code&gt;&amp;#039;\[NOW\]&amp;#039;&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В нашем случае метод &lt;code&gt;handler()&lt;/code&gt; не должен ничего делать. Нам не нужно заботиться о специальных состояниях или дополнительных параметрах в нашем синтаксисе. Мы просто вернём пустой массив в качестве инструкций для рендера.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Всё, что нужно методу &lt;code&gt;render()&lt;/code&gt; — добавить штамп времени к текущей статье вики — &lt;code&gt;$renderer-&amp;gt;doc .= date(&amp;#039;r&amp;#039;);&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
И вот наш плагин завершён!
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:syntax_plugins&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;syntax.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * Plugin Now: Inserts a timestamp.
 * 
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Christopher Smith &amp;lt;chris@jalakai.co.uk&amp;gt;
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run within DokuWiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_INC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_PLUGIN&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_PLUGIN&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;DOKU_INC&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;lib/plugins/&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_PLUGIN&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;syntax.php&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * All DokuWiki plugins to extend the parser/rendering mechanism
 * need to inherit from this class
 */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; syntax_plugin_now &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Syntax_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getInfo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;author&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;me&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;me@someplace.com&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;2005-07-28&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Now Plugin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;desc&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Include the current date and time&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;st_h&quot;&gt;&#039;url&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;http://www.dokuwiki.org/plugin:tutorial&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;a href=&quot;http://www.php.net/gettype&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;getType&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;substition&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getSort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;32&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;\[NOW\]&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;plugin_now&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; 
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; render&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
      &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;xhtml&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/date&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;date&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;r&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Замечание: из-за способа, которым «ДокуВики» кэширует страницы, этот плагин будет отображать дату/время для момента, когда был создан кэш страницы. Вам нужно добавить на страницу макрос &lt;code&gt;~~NOCACHE~~&lt;/code&gt;,чтобы отображалось правильное время каждый раз, когда запрашивается страница.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0440 1-\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 Now&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440_1-\u0439_\u043f\u043b\u0430\u0433\u0438\u043d\u0430_now&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;43287-47417&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit24&quot; id=&quot;пример_2-й_плагина_color&quot;&gt;Пример 2-й плагина — Color&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Когда встретится синтаксическая конструкция плагина &lt;code&gt;&amp;lt;color somecolour/somebackgroundcolour&amp;gt;&lt;/code&gt; встречается в статье вики, цвет текста сменяется на «somecolour», а цвет фона — на «somebackgroundcolour»; и оба остаются такими, пока не встретится &lt;code&gt;&amp;lt;/color&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; То, что мы делаем, подобно тому, что делает состояние &lt;code&gt;strong&lt;/code&gt;, его тип — &amp;#039;formatting&amp;#039;, поэтому мы тоже должны использовать этот тип.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; «allowedTypes» должны быть inline состояния - &lt;code&gt;substition&lt;/code&gt;, &lt;code&gt;formatting&lt;/code&gt; и &lt;code&gt;disabled&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PType — &lt;code&gt;normal&lt;/code&gt; — это значение по умолчанию, поэтому нам снова не нужен метод &lt;code&gt;getPType()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нам нужны входные и выходные шаблоны. Входной шаблон должен проверять, что есть и выходной шаблон, т. е. &lt;code&gt;&amp;#039;&amp;lt;color.*&amp;gt;(?=.*?&amp;lt;/color&amp;gt;)&amp;#039;&lt;/code&gt;. Выходной шаблон аналогично  &lt;code&gt;&amp;lt;/color&amp;gt;&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Метод &lt;code&gt;handle()&lt;/code&gt; должен иметь дело с тремя состояниями: совпадающими с входным и выходным шаблонами и «несовпадающим» для промежуточного текста. &lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Состояние &lt;code&gt;DOKU_LEXER_ENTER&lt;/code&gt; требует некоторой обработки для извлечения значений цветов текста и фона, они войдут в инструкцию для нашего рендера.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Состояние &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt; не требует какой-либо обработки, но нам придётся передать «несовпадающий» текст (в параметре &lt;code&gt;$match&lt;/code&gt;) методу &lt;code&gt;render()&lt;/code&gt;, поэтому он войдёт в инструкцию для нашего рендера.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Состояние &lt;code&gt;DOKU_LEXER_EXIT&lt;/code&gt; не требует какой-либо обработки и не имеет никаких особых данных, мы просто должны сделать выходную инструкцию для &lt;code&gt;render()&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Методу &lt;code&gt;render()&lt;/code&gt; необходимо иметь дело с теми же тремя сотояниями, что и &lt;code&gt;handle()&lt;/code&gt;.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_ENTER&lt;/code&gt; — отрыть тэг &lt;code&gt;span&lt;/code&gt; с указанием стиля, использующего значения цветов текста и фона.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_UNMATCHED&lt;/code&gt; — добавить «несовпавший» текст к выходному документу.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;DOKU_LEXER_EXIT&lt;/code&gt; — закрыть тэг &lt;code&gt;span&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Опять же, всё достаточно очевидно. И вот, что мы имеем:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:devel:syntax_plugins&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;syntax.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * Plugin Color: Sets new colors for text and background.
 * 
 * @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
 * @author     Christopher Smith &amp;lt;chris@jalakai.co.uk&amp;gt;
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;// must be run within Dokuwiki&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_INC&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/die&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/defined&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;defined&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_PLUGIN&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/define&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;define&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;DOKU_PLUGIN&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;DOKU_INC&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;lib/plugins/&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;require_once&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_PLUGIN&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;syntax.php&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co4&quot;&gt;/**
 * All DokuWiki plugins to extend the parser/rendering mechanism
 * need to inherit from this class
 */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; syntax_plugin_color &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Syntax_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co4&quot;&gt;/**
     * return some info
     */&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getInfo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;author&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Christopher Smith&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;email&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;chris@jalakai.co.uk&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;date&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;2008-02-06&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Color Plugin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;desc&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Changes text colour and background&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;st_h&quot;&gt;&#039;url&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;http://www.dokuwiki.org/plugin:tutorial&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;a href=&quot;http://www.php.net/gettype&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;getType&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;formatting&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getAllowedTypes&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;formatting&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;substition&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;disabled&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;   
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getSort&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;158&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addEntryPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;color.*?&amp;gt;(?=.*?&amp;lt;/color&amp;gt;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;plugin_color&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; postConnect&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addExitPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/color&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;plugin_color&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
    &lt;span class=&quot;co4&quot;&gt;/**
     * Handle the match
     */&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_ENTER &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;
                &lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;/\//u&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_isValid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;color:&lt;span class=&quot;es4&quot;&gt;$color&lt;/span&gt;;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_isValid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;background-color:&lt;span class=&quot;es4&quot;&gt;$background&lt;/span&gt;;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
          &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_UNMATCHED &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_EXIT &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co4&quot;&gt;/**
     * Create output
     */&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; render&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;xhtml&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_ENTER &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;      
                &lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$background&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;span style=&#039;&lt;span class=&quot;es4&quot;&gt;$color&lt;/span&gt; &lt;span class=&quot;es4&quot;&gt;$background&lt;/span&gt;&#039;&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; 
                &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
              &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_UNMATCHED &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;  &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_xmlEntities&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; DOKU_LEXER_EXIT &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;/span&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// validate color value $c&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// this is cut price validation - only to ensure the basic format is correct and there is nothing harmful&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// three basic formats  &amp;quot;colorname&amp;quot;, &amp;quot;#fff[fff]&amp;quot;, &amp;quot;rgb(255[%],255[%],255[%])&amp;quot;&lt;/span&gt;
    &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; _isValid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$c&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$c&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$c&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/^\s*(
            ([a-zA-z]+)|                                #colorname - not verified
            (\#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}))|        #colorvalue
            (rgb\(([0-9]{1,3}%?,){2}[0-9]{1,3}%?\))     #rgb triplet
            )\s*$/x&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$c&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/trim&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$c&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Замечание: никаких проверок на корректность названий цветов или значения RGB не производилось.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0440 2-\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u2014 Color&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0440_2-\u0439_\u043f\u043b\u0430\u0433\u0438\u043d\u0430_color&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;47418-53967&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit25&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/devel:syntax_plugins&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/devel:syntax_plugins&quot; rel=&quot;ugc nofollow&quot;&gt;Ссылка на оригинал статьи&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;53968-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;См. Doku_Handler_Block&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Да, это неправильное написание, но мы не хотели бы его менять, чтобы избежать нарушения существующих плагинов. Иногда опечатки становятся стандартами, возьмите к примеру HTTP-заголовок «referer»&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Lexer — часть парсера, анализируящая «сырую» (исходную) статью вики.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Совместимые с Perl регулярные выражения. Ссылка: &lt;a href=&quot;http://www.php.net/manual/en/ref.pcre.php&quot; class=&quot;urlextern&quot; title=&quot;http://www.php.net/manual/en/ref.pcre.php&quot; rel=&quot;ugc nofollow&quot;&gt;www.php.net/manual/en/ref.pcre.php&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__5&quot; id=&quot;fn__5&quot; class=&quot;fn_bot&quot;&gt;5)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Криво переведено с англ.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__6&quot; id=&quot;fn__6&quot; class=&quot;fn_bot&quot;&gt;6)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Существует ещё специальное состояние &lt;code&gt;metadata&lt;/code&gt;, которое ничего не выводит, только собирает метаданные для страницы. Используйте его для вставки значений в массив метаданных.&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__7&quot; id=&quot;fn__7&quot; class=&quot;fn_bot&quot;&gt;7)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Название не может содержать символов подчерка и должно совпадать с названием класса&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 09 Jan 2025 19:44:11 +0000</pubDate>
        </item>
        <item>
            <title>dokuwiki_on_a_stick</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:dokuwiki_on_a_stick&amp;rev=1739022840</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;докувики_на_флешке&quot;&gt;«Докувики» на флешке&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
„Докувики“ на флешке — это установочный пакет &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;Докувики&lt;/a&gt;, содержащий в себе &lt;a href=&quot;https://github.com/&quot; class=&quot;interwiki iw_github&quot; title=&quot;https://github.com/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/splitbrain/dokuwiki-stickbuilder&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/splitbrain/dokuwiki-stickbuilder&quot; rel=&quot;ugc nofollow&quot;&gt;урезанный веб-сервер Apache&lt;/a&gt;. Таким образом, можно запускать «Докувики» с флешки на любом компьютере с Windows без необходимости установки на компьютер. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u00ab\u0414\u043e\u043a\u0443\u0432\u0438\u043a\u0438\u00bb \u043d\u0430 \u0444\u043b\u0435\u0448\u043a\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043a\u0443\u0432\u0438\u043a\u0438_\u043d\u0430_\u0444\u043b\u0435\u0448\u043a\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-547&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;получение&quot;&gt;Получение&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для создания «„Докувики“ на флешке» нужно на странице &lt;a href=&quot;https://download.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://download.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;download.dokuwiki.org&lt;/a&gt; скачать последнюю версию программы, предварительно отметив флажок MicroApache (Windows) в разделе Include Webserver.
&lt;/p&gt;

&lt;p&gt;
Затем распаковать полученный архив и переместить папку DokuWikiStick на USB-накопитель.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;548-1071&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;использование&quot;&gt;Использование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
По двойному щелчку на файле &lt;code&gt;run.cmd&lt;/code&gt; в папке DokuWikiStick запустится веб-сервер MicroApache и в браузере откроется ваша вики. При первом запуске запустится &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:installer&quot; class=&quot;wikilink1&quot; title=&quot;wiki:installer&quot; data-wiki-id=&quot;wiki:installer&quot;&gt;Инсталлятор «Докувики»&lt;/a&gt;, в котором можно настроить основные параметры. В дальнейшем, &lt;code&gt;run.cmd&lt;/code&gt; будет запускать стартовую вики-страничку — http://localhost:8800/
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; После первого запуска и настройки, при последующих запусках этому адресу загружается index.php. Можно обойти настройкой Apache в файле «D:\DokuWikiStick\server\conf\httpd.conf» изменить строку 35 - DirectoryIndex index.html &lt;del&gt;index.php&lt;/del&gt; &lt;strong&gt;doku.php&lt;/strong&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
В случае, если команда &lt;code&gt;stop&lt;/code&gt; в &lt;code&gt;run.cmd&lt;/code&gt; не работает, попробуйте использовать следующую команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;taskkill /f /im mapache.exe&lt;/pre&gt;

&lt;p&gt;
Команда «убьёт» экземпляры mapache.exe на вашем компьютере, а также выйдет из командной строки Windows.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1072-2430&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;обновление&quot;&gt;Обновление&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вы можете обновлять «„Докувики“ на флешке» до свежей версии так же как и обычную версию «Докувики» — скачать новый пакет и записать его поверху существующих файлов. (См. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:upgrade&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:upgrade&quot; data-wiki-id=&quot;wiki:install:upgrade&quot;&gt;Обновление «Докувики»&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Еще проще — установить &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:upgrade&quot; class=&quot;wikilink2&quot; title=&quot;plugin:upgrade&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:upgrade&quot;&gt;плагин обновления&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2431-2945&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;также_по_теме&quot;&gt;Также по теме&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://www.splitbrain.org/blog/2011-01/16-dokuwiki_on_a_stick_in_dropbox&quot; class=&quot;urlextern&quot; title=&quot;http://www.splitbrain.org/blog/2011-01/16-dokuwiki_on_a_stick_in_dropbox&quot; rel=&quot;ugc nofollow&quot;&gt;Использование «„Докувики“ на флешке» в DropBox&lt;/a&gt; (англ.)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0430\u043a\u0436\u0435 \u043f\u043e \u0442\u0435\u043c\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0430\u043a\u0436\u0435_\u043f\u043e_\u0442\u0435\u043c\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2946-3160&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;предыдущие_версии&quot;&gt;Предыдущие версии&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эти версии не рекомендуется использовать, размещены на всякий случай.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://brezn.muc.ccc.de/~str/dokuwiki/dokuwikistick-2010-11-07b.zip&quot; class=&quot;urlextern&quot; title=&quot;https://brezn.muc.ccc.de/~str/dokuwiki/dokuwikistick-2010-11-07b.zip&quot; rel=&quot;ugc nofollow&quot;&gt;«Докувики» на флешке 2010-11-07a «Муравьед»&lt;/a&gt; (включает в себя с последними MicroApache 2.0.63, PHP 5.2.9, GD2 и  базу данных SQLite)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://brezn.muc.ccc.de/~str/dokuwiki/dokuwikistick-2010-11-07.zip&quot; class=&quot;urlextern&quot; title=&quot;https://brezn.muc.ccc.de/~str/dokuwiki/dokuwikistick-2010-11-07.zip&quot; rel=&quot;ugc nofollow&quot;&gt;«Докувики» на флешке 2010-11-07 «Муравьед»&lt;/a&gt; (включает в себя с последними MicroApache 2.0.63, PHP  5.2.9, GD2 и  базу данных SQLite)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435_\u0432\u0435\u0440\u0441\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3161-3880&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;дополнения_и_файлы&quot;&gt;Дополнения и Файлы&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-791aee2721d69f4368ba97afd46ee051.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-791aee2721d69f4368ba97afd46ee051.tgz (30.1 MB)&quot;&gt;DokuWikiStick 2025-01-18 &amp;quot;snapshot&amp;quot;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-03cdd5898546c49d58c279e5e90010cc_1_.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-03cdd5898546c49d58c279e5e90010cc_1_.tgz (29.3 MB)&quot;&gt;DokuWikiStick 2024-02-06b &amp;quot;Kaos&amp;quot;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-33eb2f81a07b3489a89a76c41d213ba8_1_.tgz&quot; class=&quot;media mediafile mf_tgz&quot; title=&quot;wiki:dokuwiki-33eb2f81a07b3489a89a76c41d213ba8_1_.tgz (29.1 MB)&quot;&gt;DokuWikiStick 2023-04-04b &amp;quot;Jack Jackrum&amp;quot;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.dokuwiki.org/ru:install:dokuwiki_on_a_stick&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/ru:install:dokuwiki_on_a_stick&quot; rel=&quot;ugc nofollow&quot;&gt;Ссылка на оригинальную статью&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://github.com/splitbrain/dokuwiki-stickbuilder&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/splitbrain/dokuwiki-stickbuilder&quot; rel=&quot;ugc nofollow&quot;&gt;Внешняя ссылка для загрузки на github&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u0424\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f_\u0438_\u0444\u0430\u0439\u043b\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3881-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 08 Feb 2025 13:54:00 +0000</pubDate>
        </item>
        <item>
            <title>permissions</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:permissions&amp;rev=1723675983</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;настройка_прав_доступа_к_файлам&quot;&gt;Настройка прав доступа к файлам&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; хранит данные о правах доступа в простых текстовых файлах, так что для этих файлов необходимо настроить права доступа. Если их настроить неправильно, это может стать угрозой безопасности.
&lt;/p&gt;

&lt;p&gt;
DokuWiki работает под управлением PHP, поэтому PHP должен иметь достаточно прав, чтобы перезаписывать эти файлы. Так как PHP обычно запускается под управлением веб-сервера, доступ к файлам на запись должен иметь веб-сервер.
&lt;/p&gt;

&lt;p&gt;
Как правило, DokuWiki хранит файлы, к которым нужен доступ на запись, в каталоге &lt;code&gt;data&lt;/code&gt;. Для работы &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:installer&quot; class=&quot;wikilink1&quot; title=&quot;wiki:installer&quot; data-wiki-id=&quot;wiki:installer&quot;&gt;инсталлятора&lt;/a&gt;, а также для последующей конфигурации, права на запись также должны быть установлены для каталога &lt;code&gt;conf&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043f\u0440\u0430\u0432_\u0434\u043e\u0441\u0442\u0443\u043f\u0430_\u043a_\u0444\u0430\u0439\u043b\u0430\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1242&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;microsoft_iis_internet_information_services&quot;&gt;Microsoft IIS (Internet Information Services)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=4d5a04&amp;amp;media=http%3A%2F%2Fimg299.imageshack.us%2Fimg299%2F9718%2Ftranslmerucr5.gif&quot; class=&quot;media&quot; title=&quot;http://img299.imageshack.us/img299/9718/translmerucr5.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=80&amp;amp;tok=2fedb6&amp;amp;media=http%3A%2F%2Fimg299.imageshack.us%2Fimg299%2F9718%2Ftranslmerucr5.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;80&quot; /&gt;&lt;/a&gt;&lt;br/&gt;

Смотри &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=install:iis&quot; class=&quot;wikilink2&quot; title=&quot;install:iis&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;install:iis&quot;&gt;инструкцию по установке IIS&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; When installing Dokuwiki under Windows XP and the XAMPP-distribution of Apache (in a directory separate from root) I get error messages like «U:\Projekte\DokuWiki\dokuwiki-rc2007-05-24/data/attic is not writable by DokuWiki. You need to fix the permission settings of this directory!» when calling install.php. To fix this I only needed to create the directories mentioned by hand. ferdinand
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Microsoft IIS (Internet Information Services)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;microsoft_iis_internet_information_services&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1243-1848&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;unix&quot;&gt;Unix&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эта статья поможет вам разобраться с правами доступа, если вы устанавливаете DokuWiki на Linux, MacOS X или другую юниксоподобную систему. Арендуемый веб-сервер с большой вероятностью является юниксоподобным.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Unix&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;unix&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1849-2236&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;ключевые_моменты_системы_прав_доступа&quot;&gt;Ключевые моменты системы прав доступа&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Статья не ставит себе цель подробно описать систему прав доступа UNIX&amp;#039;ов - информацию об этом можно найти, например, в &lt;a href=&quot;https://en.wikipedia.org/wiki/File_system_permissions&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/File_system_permissions&quot;&gt;Википедии&lt;/a&gt;. Вот ключевые моменты:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Права доступа к файлу зависят от пользователя, который создал файл, и его группы, а также от того, кто пытается получить доступ.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Отдельно задаются права для чтения, записи и выполнения файла.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Каждый процесс в системе обладает правами доступа определённого пользователя.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Веб-сервер - это процесс, так что предыдущий пункт к нему применим.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PHP обычно выполняется как часть веб-сервера.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki запускается с правами доступа PHP.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki необходимы права на чтение, запись и выполнение для каталогов, в которых нужно создавать файлы.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki необходимы права на чтение и запись для файлов, которые нужно перезаписывать во время работы.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki необходимы права на чтение для файлов, которые перезаписывать не нужно.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Чтобы узнать пользователя и группу, с правами которого выполняется PHP, можно выполнить следующий скрипт:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/function_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;function_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;posix_geteuid&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// use posix to get current uid and gid&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$uid&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/posix_geteuid&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;posix_geteuid&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$usr&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/posix_getpwuid&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;posix_getpwuid&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$uid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$usr&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$gid&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/posix_getegid&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;posix_getegid&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$grp&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/posix_getgrgid&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;posix_getgrgid&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$gid&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$group&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$grp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// try to create a file and read it&#039;s ids&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/tempnam&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;tempnam&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/tmp&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;check&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$uid&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/fileowner&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;fileowner&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$gid&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/filegroup&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;filegroup&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;// try to run ls on it&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$out&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; `ls &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;l &lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt;`&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$lst&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/explode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;explode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039; &#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$out&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$user&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$group&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$lst&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://www.php.net/unlink&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;unlink&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$tmp&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;Your PHP process seems to run with the UID &lt;span class=&quot;es4&quot;&gt;$uid&lt;/span&gt; (&lt;span class=&quot;es4&quot;&gt;$user&lt;/span&gt;) and the GID &lt;span class=&quot;es4&quot;&gt;$gid&lt;/span&gt; (&lt;span class=&quot;es4&quot;&gt;$group&lt;/span&gt;)&lt;span class=&quot;es1&quot;&gt;\n&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435_\u043c\u043e\u043c\u0435\u043d\u0442\u044b_\u0441\u0438\u0441\u0442\u0435\u043c\u044b_\u043f\u0440\u0430\u0432_\u0434\u043e\u0441\u0442\u0443\u043f\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2237-4808&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;какие_выставлять_права_доступа&quot;&gt;Какие выставлять права доступа?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Итак, какие же для упомянутых выше каталогов нужны права доступа? Общий совет состоит в том, чтобы они были как можно более ограниченными, но общего правила, какими они должны быть в вашей системе, не существует.
&lt;/p&gt;

&lt;p&gt;
Обладая правами root&amp;#039;а (суперпользователя), вы можете менять владельцев файлов и каталогов. Это значит, что вы можете сменить владельца файлов DokuWiki на пользователя, с правами которого запускается веб-сервер (например, &lt;code&gt;web-server&lt;/code&gt;, &lt;code&gt;www-data&lt;/code&gt; или &lt;code&gt;nobody&lt;/code&gt;) и установить права доступа только для владельца. Например, &lt;code&gt;0600&lt;/code&gt; для файлов и &lt;code&gt;0700&lt;/code&gt; для каталогов.
&lt;/p&gt;

&lt;p&gt;
Если вы обычный пользователь, но состоите в группе веб-сервера, то вы можете сделать эту группу основной для файлов DokuWiki, и после этого установить для этой группы права на запись этих файлов. Например, &lt;code&gt;0660&lt;/code&gt; для файлов и &lt;code&gt;0770&lt;/code&gt; каталогов.
&lt;/p&gt;

&lt;p&gt;
Если вы абсолютно доверяете всем, кто имеет доступ к файловой системе сервера, вы можете дать доступ на запись всем пользователям. Например, &lt;code&gt;0666&lt;/code&gt; для файлов и &lt;code&gt;0777&lt;/code&gt; для каталогов.
&lt;/p&gt;

&lt;p&gt;
Если вы используете общий сервер, настоятельно рекомендуется связаться с администратором или тех-поддержкой и спросить совета. Отправьте им эту статью, и вам помогут принять правильное решение.
&lt;/p&gt;

&lt;p&gt;
Обратите внимание: когда вы выберете параметры прав доступа, не забудьте сменить настройки &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:fmode&quot; class=&quot;wikilink2&quot; title=&quot;config:fmode&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:fmode&quot;&gt;fmode&lt;/a&gt; и &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:dmode&quot; class=&quot;wikilink2&quot; title=&quot;config:dmode&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:dmode&quot;&gt;dmode&lt;/a&gt;, чтобы новые файлы создавались с корректными параметрами.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a\u0438\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a\u0438\u0435_\u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c_\u043f\u0440\u0430\u0432\u0430_\u0434\u043e\u0441\u0442\u0443\u043f\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4809-7310&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;как_менять_права_доступа&quot;&gt;Как менять права доступа?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Чтобы изменить права доступа, в командной строке сервера используйте &lt;a href=&quot;http://man.cx/chmod&quot; class=&quot;interwiki iw_man&quot; title=&quot;http://man.cx/chmod&quot;&gt;chmod&lt;/a&gt;. Чтобы изменить владельца файлов и каталогов, используйте &lt;a href=&quot;http://man.cx/chown&quot; class=&quot;interwiki iw_man&quot; title=&quot;http://man.cx/chown&quot;&gt;chown&lt;/a&gt;. Чтобы изменить основную группу файлов и каталогов, используйте &lt;a href=&quot;http://man.cx/chgrp&quot; class=&quot;interwiki iw_man&quot; title=&quot;http://man.cx/chgrp&quot;&gt;chgrp&lt;/a&gt;. (Имейте в виду, что chown и chgrp могут быть запрещены или работать не так, как ожидается, если вы используете общий сервер.)
&lt;/p&gt;

&lt;p&gt;
Если вы используете &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;, обратитесь к документации своей программы для работы с &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;. Большинство &lt;abbr title=&quot;File Transfer Protocol&quot;&gt;FTP&lt;/abbr&gt;-клиентов, которые поддерживают графический интерфейс, имеют панель управления правами доступа (чаще всего в неё можно попасть из меню по клику на файле правой кнопкой мышки).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u043c\u0435\u043d\u044f\u0442\u044c_\u043f\u0440\u0430\u0432\u0430_\u0434\u043e\u0441\u0442\u0443\u043f\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7311-8479&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;мнение_одного_пользователя_dokuwiki&quot;&gt;Мнение одного пользователя Dokuwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; add simple explanation here&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
OK I&amp;#039;ll fix this for you. :)
I &lt;em&gt;should&lt;/em&gt; preface this by stating that although I have not installed docuwiki yet.
I &lt;em&gt;have&lt;/em&gt; evaluated some 300+ &lt;abbr title=&quot;Content Management System&quot;&gt;CMS&lt;/abbr&gt;/Fourm/Wiki&amp;#039;s, and have been administering some 50+ servers
since 1975.
That said; in an effort to help prevent individuals from compromising your system. You
&lt;em&gt;&lt;strong&gt;should not&lt;/strong&gt;&lt;/em&gt; provide any more permissions/abilities than is absolutely necessary
to your web space file system. What does this mean/require? Quite simply; only provide
enough permissions on the directory/file space to enable your web application(s) to work.
EXAMPLE:
&lt;/p&gt;

&lt;p&gt;
On a ««NIX»» system this is simply accomplished by setting Ownership/Read/Write permissions
to the Directories/Files as so:
&lt;/p&gt;

&lt;p&gt;
cd /path/to/docuwiki
&lt;/p&gt;

&lt;p&gt;
chown -R www:www .
&lt;/p&gt;

&lt;p&gt;
DONE! :) see that was pretty easy, wasn&amp;#039;t it?
More details please.
OK We just gave ownership of the docuwiki system to the Owner and Group the web server belongs to:
&lt;/p&gt;

&lt;p&gt;
User: www, Group: www
&lt;/p&gt;

&lt;p&gt;
This is the Owner/Group that many NIX based &lt;abbr title=&quot;Operating System&quot;&gt;OS&lt;/abbr&gt;&amp;#039;s run their web servers as (Apache).
This Owner/Group can also be
nobody/nobody, or apache/apache. You&amp;#039;ll need to find this information out for yourself.
Next we need to set what TYPE of permissions the web server has over the docuwiki file system.
This can be of: Read, Write, Execute (4, 6, 7 respectively). The last bit (execute) is the one
that you should &lt;strong&gt;NEVER&lt;/strong&gt; provide unless &lt;strong&gt;ABSOLUTELY&lt;/strong&gt; necessary. For directories, the «X» bit
is almost always required &lt;em&gt;HOWEVER&lt;/em&gt; the files that live in those directories &lt;strong&gt;ALMOST NEVER&lt;/strong&gt;
require the Executable bit (7) to be enabled. That said, let&amp;#039;s move on.
As a rule changing into a directory and setting the file permissions goes as follows:
&lt;/p&gt;

&lt;p&gt;
cd /complete/path/to/docuwiki
&lt;/p&gt;

&lt;p&gt;
chmod 0444 ./*
&lt;/p&gt;

&lt;p&gt;
DONE! :) We just gave ReadOnly permissions to All the files in the docuwiki folder. That was
easy, wasn&amp;#039;t it. You will need to determine &lt;strong&gt;IN ADVANCE&lt;/strong&gt; what directories need which perms
and which files need what perms. But to summarize:
&lt;/p&gt;

&lt;p&gt;
chown = Change Owner/Group
&lt;/p&gt;

&lt;p&gt;
chmod = Change/Modify permissions
&lt;/p&gt;

&lt;p&gt;
always lead off with a 0 (zero) when chmodding
&lt;/p&gt;

&lt;p&gt;
4 = read
&lt;/p&gt;

&lt;p&gt;
2 = write
&lt;/p&gt;

&lt;p&gt;
1 = execute
&lt;/p&gt;

&lt;p&gt;
The other numbers have different meanings. But in most cases when setting up web space, those
numbers will not be used/needed. What I&amp;#039;ve written here should get anyone &lt;strong&gt;well&lt;/strong&gt; on their way
to setting up/understanding how to set up a reasonably secure web space/site.
&lt;/p&gt;

&lt;p&gt;
Best wishes and safe admining. :)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Dokuwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043d\u0435\u043d\u0438\u0435_\u043e\u0434\u043d\u043e\u0433\u043e_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f_dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;8480-11009&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;если_что-то_пошло_не_так&quot;&gt;Если что-то пошло не так&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В определённых ситуациях Вы можете обнаружить, что не можете удалять или редактировать файлы, созданные DokuWiki. Посмотрите &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:fixperms.php&quot; class=&quot;wikilink2&quot; title=&quot;tips:fixperms.php&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:fixperms.php&quot;&gt;fixperms.php&lt;/a&gt; для возможного решения проблемы.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0415\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0435\u0441\u043b\u0438_\u0447\u0442\u043e-\u0442\u043e_\u043f\u043e\u0448\u043b\u043e_\u043d\u0435_\u0442\u0430\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;11010-11370&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;как_запретить_редактирование_определённых_страниц&quot;&gt;Как запретить редактирование определённых страниц?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:faq:pageprotect&quot; class=&quot;wikilink1&quot; title=&quot;wiki:faq:pageprotect&quot; data-wiki-id=&quot;wiki:faq:pageprotect&quot;&gt;Ответ в разделе FAQ&lt;/a&gt;&lt;br/&gt;

Есть два способа:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Использовать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:acl&quot; class=&quot;wikilink1&quot; title=&quot;wiki:acl&quot; data-wiki-id=&quot;wiki:acl&quot;&gt;списки контроля доступа&lt;/a&gt; (рекомендуется)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Запретить веб-серверу изменять определенный файл, например &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;&lt;pre class=&quot;code&quot;&gt;chmod 644 file.txt&lt;/pre&gt;

&lt;p&gt;
 Убедитетесь, что вы понимаете? что такое &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:permissions&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:permissions&quot; data-wiki-id=&quot;wiki:install:permissions&quot;&gt;настройка прав доступа к файлам&lt;/a&gt; и их важность (см. статью &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:security&quot; class=&quot;wikilink1&quot; title=&quot;wiki:security&quot; data-wiki-id=&quot;wiki:security&quot;&gt;Безопасность&lt;/a&gt;)
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u0430\u043a_\u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c_\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445_\u0441\u0442\u0440\u0430\u043d\u0438\u0446&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;11371-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;применимо только в *nix-системах, предполагается, что вебсервер не является владельцем файла&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 14 Aug 2024 22:53:03 +0000</pubDate>
        </item>
        <item>
            <title>include</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include&amp;rev=1724651388</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;include_plugin&quot;&gt;Include Plugin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;pluginrepo_entry&quot;&gt;&lt;div class=&quot;usageInfo&quot;&gt;&lt;div class=&quot;compatibility&quot;&gt;&lt;p class=&quot;label&quot;&gt;Совместим с «Докувики»&lt;/p&gt;&lt;div class=&quot;versions&quot;&gt;&lt;ul&gt;&lt;li class=&quot;yes&quot;&gt;2024-02-06 &quot;Kaos&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2023-04-04 &quot;Jack Jackrum&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2022-07-31 &quot;Igor&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2020-07-29 &quot;Hogfather&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul class=&quot;actions&quot;&gt;&lt;li&gt;&lt;a class=&quot;download&quot; href=&quot;https://github.com/dokufreaks/plugin-include/tarball/master&quot;&gt;Скачать&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;bugs&quot; href=&quot;https://github.com/dokufreaks/plugin-include/issues&quot;&gt;Баг-трекер&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;clearer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;mainInfo&quot;&gt;&lt;p class=&quot;description&quot;&gt;&lt;a class=&quot;media&quot; href=&quot;/doku.php?id=plugins&quot;&gt;&lt;img alt=&quot;plugin&quot; class=&quot;medialeft&quot; align=&quot;left&quot; src=&quot;/lib/plugins/pluginrepo/images/dwplugin.png&quot; width=&quot;60&quot; height=&quot;60&quot; /&gt;&lt;/a&gt; Include another wiki page into the current one&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;metaInfo&quot;&gt;&lt;dl&gt;&lt;dt&gt;Последнее обновление:&lt;/dt&gt;&lt;dd&gt;2023-09-22&lt;/dd&gt;&lt;dt&gt;Предоставляет&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=1#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Syntax plugins&quot;&gt;Syntax&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=16#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Helper plugins&quot;&gt;Helper&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Репозиторий&lt;/dt&gt;&lt;dd&gt;&lt;a class=&quot;urlextern&quot; href=&quot;https://github.com/dokufreaks/plugin-include/&quot;&gt;исходный код&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Конфликтует с&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:mediasyntax&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:mediasyntax&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:mediasyntax&quot;&gt;mediasyntax&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:photogallery&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:photogallery&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:photogallery&quot;&gt;photogallery&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div class=&quot;moreInfo&quot;&gt;&lt;p class=&quot;similar&quot;&gt;Похож на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:wst&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:wst&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:wst&quot;&gt;wst&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;tags&quot;&gt;Теги: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=embed#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;embed&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=include#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;include&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;needed&quot;&gt;Нужен для &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:blog&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:blog&quot; data-wiki-id=&quot;wiki:plugin:blog&quot;&gt;blog&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;authorInfo&quot;&gt;&lt;strong&gt;- &lt;a href=&quot;mailto:&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Dokufreaks (previous authors: Michael Hamann, Gina Häußge, Michael Klier, Esther Brunner)&lt;/a&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:blog&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:blog&quot; data-wiki-id=&quot;wiki:plugin:blog&quot;&gt;blog&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:tag&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:tag&quot; data-wiki-id=&quot;wiki:plugin:tag&quot;&gt;tag&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:feed&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:feed&quot; data-wiki-id=&quot;wiki:plugin:feed&quot;&gt;feed&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:meta&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:meta&quot; data-wiki-id=&quot;wiki:plugin:meta&quot;&gt;meta&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:pagelist&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:pagelist&quot; data-wiki-id=&quot;wiki:plugin:pagelist&quot;&gt;pagelist&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; The 2018-11-29 release fixes a security issue where ACLs were ignored for pages in namespace includes with DokuWiki version Greebo. If you rely on &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; checks in namespace includes or allow edits from users who must not see all pages, please upgrade &lt;abbr title=&quot;As soon as possible&quot;&gt;ASAP&lt;/abbr&gt;! &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
This is a handy plugin with which you can include another wiki page into the current one. Just including certain sections of a page or even whole namespaces is supported, too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Include Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;include_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1131&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Search and install the plugin using the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:extension&quot; class=&quot;wikilink2&quot; title=&quot;plugin:extension&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:extension&quot;&gt;Extension Manager&lt;/a&gt;. Refer to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugins&quot; class=&quot;wikilink2&quot; title=&quot;plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugins&quot;&gt;Plugins&lt;/a&gt; on how to install plugins manually.
&lt;/p&gt;

&lt;p&gt;
If you need support for older version of DokuWiki you can try the &lt;a href=&quot;https://github.com/downloads/dokufreaks/plugin-include/plugin-include-2009-11-27.tgz&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/downloads/dokufreaks/plugin-include/plugin-include-2009-11-27.tgz&quot; rel=&quot;ugc nofollow&quot;&gt;2009-11-27&lt;/a&gt; version of the include plugin, but please note that this old version has known bugs. If you need support for older versions of DokuWiki in the current include plugin version please open a feature request in the &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; rel=&quot;ugc nofollow&quot;&gt;issue tracker&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1132-1745&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;examples&quot;&gt;Examples&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;code&gt;{{page&amp;gt;wiki:syntax#Tables}}&lt;/code&gt; will include the section about tables of the syntax page.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;{{namespace&amp;gt;project_foo}}&lt;/code&gt; will include all pages in the &lt;code&gt;project_foo&lt;/code&gt; namespace.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;{{page&amp;gt;blog:mypage&amp;amp;tags&amp;amp;comments}}&lt;/code&gt; will include the page &lt;code&gt;blog:mypage&lt;/code&gt; and show the tags from the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:tag&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:tag&quot; data-wiki-id=&quot;wiki:plugin:tag&quot;&gt;tag&lt;/a&gt; plugin and the number of comments from the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:discussion&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:discussion&quot; data-wiki-id=&quot;wiki:plugin:discussion&quot;&gt;discussion&lt;/a&gt; plugin. Both plugins need to be installed for this example.
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;{{tagtopic&amp;gt;testtag}}&lt;/code&gt; will include all pages with the tag &lt;code&gt;testtag&lt;/code&gt;, the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:tag&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:tag&quot; data-wiki-id=&quot;wiki:plugin:tag&quot;&gt;tag&lt;/a&gt; plugin needs to be installed for this example.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Examples&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;examples&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1746-2327&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;syntax&quot;&gt;Syntax&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The plugin offers four syntaxes, &lt;code&gt;{{page&amp;gt;...}}&lt;/code&gt; , &lt;code&gt;{{section&amp;gt;...}}&lt;/code&gt; , &lt;code&gt;{{namespace&amp;gt;...}}&lt;/code&gt; and &lt;code&gt;{{tagtopic&amp;gt;...}}&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
Section is aimed more at including sections, page at including whole pages and namespace at including whole namespaces. Tagtopic includes all pages with a &lt;code&gt;tagtopic&lt;/code&gt; &lt;code&gt;tag&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;[id]&amp;amp;[flags]}}
{{section&amp;gt;[id]#[section]&amp;amp;[flags]}}
{{namespace&amp;gt;[namespace]#[section]&amp;amp;[flags]}}
{{tagtopic&amp;gt;[tag]&amp;amp;[flags]}}&lt;/pre&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [id] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; page ID of the page to include; some &lt;a href=&quot;#macros&quot; title=&quot;wiki:plugin:include ↵&quot; class=&quot;wikilink1&quot;&gt;macros&lt;/a&gt; are possible; shortcuts are resolved (&lt;code&gt;:&lt;/code&gt;, &lt;code&gt;.&lt;/code&gt;, &lt;code&gt;..&lt;/code&gt;) &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; required &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [section] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; limits the included page to a specific section and its subsections &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional; default is the whole page , this can be used with namespace (if matches)&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [tag]&lt;/th&gt;&lt;td class=&quot;col1&quot;&gt;include pages with tag topic tag, requires &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:tag&quot; class=&quot;wikilink2&quot; title=&quot;plugin:tag&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:tag&quot;&gt;tag&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt;required &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [flags] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; flags delimited by &lt;code&gt;&amp;amp;&lt;/code&gt;, see &lt;a href=&quot;#configuration_and_flags&quot; title=&quot;wiki:plugin:include ↵&quot; class=&quot;wikilink1&quot;&gt;flags&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2802-3267&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2328-3269&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;configuration_and_flags&quot;&gt;Configuration and Flags&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The plugin can be configured in the DokuWiki configuration manager available in the admin menu. These settings also affect the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:blog&quot; class=&quot;wikilink2&quot; title=&quot;plugin:blog&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:blog&quot;&gt;blog&lt;/a&gt; plugin which uses the include plugin to generate the blog page. For most settings there are flags that allow to override the setting. Some features are only available as flag.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Configuration option  &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Flags                                                            &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Description                                                                                                                                                                                                                                                                                                                                                                      &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;noheader&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;noheader&lt;/code&gt;/ (&lt;code&gt;show&lt;/code&gt;)&lt;code&gt;header&lt;/code&gt;                               &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Don&amp;#039;t display the header of the inserted section                                                                                                                                                                                                                                                                                                                                 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;firstseconly&lt;/code&gt;      &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;firstsec&lt;/code&gt;(&lt;code&gt;tion&lt;/code&gt;)&lt;code&gt;only&lt;/code&gt;/ &lt;code&gt;fullpage&lt;/code&gt;                     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Display only the first section of the included page                                                                                                                                                                                                                                                                                                                              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;readmore&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;readmore&lt;/code&gt;/&lt;code&gt;noreadmore&lt;/code&gt;                                      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show «read more» link in case of firstsection only                                                                                                                                                                                                                                                                                                                               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showtaglogos&lt;/code&gt;      &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; -                                                                &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide an image for the first tag (if the page has tags)                                                                                                                                                                                                                                                                                                                      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showfooter&lt;/code&gt;        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;footer&lt;/code&gt;/&lt;code&gt;nofooter&lt;/code&gt;                                          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide page footer below the included page                                                                                                                                                                                                                                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showlink&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;link&lt;/code&gt;/&lt;code&gt;nolink&lt;/code&gt;                                              &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Makes the first headline of a included page/section a link to the included page/section                                                                                                                                                                                                                                                                                          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showpermalink&lt;/code&gt;     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;permalink&lt;/code&gt;/ &lt;code&gt;nopermalink&lt;/code&gt;                                   &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide a permalink to the included page in the page footer                                                                                                                                                                                                                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showdate&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;date&lt;/code&gt;/&lt;code&gt;nodate&lt;/code&gt;                                              &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide creation date of the page in the page footer                                                                                                                                                                                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showmdate&lt;/code&gt;         &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;mdate&lt;/code&gt;/&lt;code&gt;nomdate&lt;/code&gt;                                            &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide modification date of the page in the page footer                                                                                                                                                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showuser&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;user&lt;/code&gt;/&lt;code&gt;nouser&lt;/code&gt;                                              &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide user name of the page creator in the page footer                                                                                                                                                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row11&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showcomments&lt;/code&gt;      &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;comments&lt;/code&gt;/&lt;code&gt;nocomments&lt;/code&gt;                                      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide number of comments in the page footer (requires the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:discussion&quot; class=&quot;wikilink2&quot; title=&quot;plugin:discussion&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:discussion&quot;&gt;discussion&lt;/a&gt; plugin)                                                                                                                                                                                                                                                                                      &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row12&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showlinkbacks&lt;/code&gt;     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;linkbacks&lt;/code&gt;/&lt;code&gt;nolinkbacks&lt;/code&gt;                                    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide number of linkbacks in the page footer (requires the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:linkback&quot; class=&quot;wikilink2&quot; title=&quot;plugin:linkback&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:linkback&quot;&gt;linkback&lt;/a&gt; or &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:backlinks&quot; class=&quot;wikilink2&quot; title=&quot;plugin:backlinks&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:backlinks&quot;&gt;backlinks&lt;/a&gt; plugin)                                                                                                                                                                                                                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row13&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showtags&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;tags&lt;/code&gt;/&lt;code&gt;notags&lt;/code&gt;                                              &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide tags in the page footer (requires the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:tag&quot; class=&quot;wikilink2&quot; title=&quot;plugin:tag&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:tag&quot;&gt;tag&lt;/a&gt; plugin)                                                                                                                                                                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row14&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showeditbtn&lt;/code&gt;       &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;editbtn&lt;/code&gt; or &lt;code&gt;editbutton&lt;/code&gt;/&lt;code&gt;noeditbtn&lt;/code&gt; or &lt;code&gt;noeditbutton&lt;/code&gt;  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show/hide edit buttons (section edit buttons, edit button below the included page)                                                                                                                                                                                                                                                                                               &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row15&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;doredirect&lt;/code&gt;        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;redirect&lt;/code&gt;/&lt;code&gt;noredirect&lt;/code&gt;                                      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Redirect back to original page after an edit                                                                                                                                                                                                                                                                                                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row16&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;usernamespace&lt;/code&gt;     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; -                                                                &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Namespace for user pages (see &lt;code&gt;showuser&lt;/code&gt; configuration) (default &lt;code&gt;user&lt;/code&gt;)                                                                                                                                                                                                                                                                                                     &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row17&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;doindent&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;indent&lt;/code&gt;/&lt;code&gt;noindent&lt;/code&gt;                                          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Indent included pages relative to the section of the page they get included in                                                                                                                                                                                                                                                                                                   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row18&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;linkonly&lt;/code&gt;          &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;linkonly&lt;/code&gt;/&lt;code&gt;nolinkonly&lt;/code&gt; or &lt;code&gt;include_content&lt;/code&gt;               &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Display only a link instead of the whole page content                                                                                                                                                                                                                                                                                                                            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row19&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt; title&lt;/code&gt;            &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;title&lt;/code&gt;/&lt;code&gt;notitle&lt;/code&gt;                                            &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Show the title instead of the page id                                                                                                                                                                                                                                                                                                                                            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row20&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;pageexists&lt;/code&gt;        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;pageexists&lt;/code&gt;/ &lt;code&gt;nopageexists&lt;/code&gt;                                 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Only list page ids of existing pages (see &lt;code&gt;existlink&lt;/code&gt;)                                                                                                                                                                                                                                                                                                                         &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row21&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; -                     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;existlink&lt;/code&gt;                                                    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Display a link and do so only if page page-id exists (combination of &lt;code&gt;linkonly&lt;/code&gt; and &lt;code&gt;pageexists&lt;/code&gt;)                                                                                                                                                                                                                                                                            &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row22&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;parlink&lt;/code&gt;           &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;parlink&lt;/code&gt;/&lt;code&gt;noparlink&lt;/code&gt;                                        &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; (Don&amp;#039;t) put the link into a paragraph environment (for inline lists)                                                                                                                                                                                                                                                                                                             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row23&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;order&lt;/code&gt;             &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;order=OPTION&lt;/code&gt;                                                 &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Ordering criteria for namespace includes, possible options: page ID (&lt;code&gt;id&lt;/code&gt;), title (&lt;code&gt;title&lt;/code&gt;), date created (&lt;code&gt;created&lt;/code&gt;), date modified (&lt;code&gt;modified&lt;/code&gt;), &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:indexmenu#metadata_tag_syntax&quot; class=&quot;wikilink2&quot; title=&quot;plugin:indexmenu&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:indexmenu&quot;&gt;indexmenu sort order&lt;/a&gt; (&lt;code&gt;indexmenu&lt;/code&gt;), custom sort order using the &lt;code&gt;{{include_n&amp;gt;[number]}}&lt;/code&gt; on the pages that are included similar to the indexmenu tags (&lt;code&gt;custom&lt;/code&gt;).  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row24&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;rsort&lt;/code&gt;             &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;rsort&lt;/code&gt;/&lt;code&gt;sort&lt;/code&gt;                                               &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Reverse the sort order in namespace includes.                                                                                                                                                                                                                                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row25&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;depth&lt;/code&gt;             &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;depth=DEPTH&lt;/code&gt;                                                  &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; The maximum depth of subnamespaces of which pages are included in namespace includes, default is &lt;code&gt;1&lt;/code&gt; for only the specified namespace, &lt;code&gt;0&lt;/code&gt; is for unlimited depth.                                                                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row26&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; -                     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;inline&lt;/code&gt;                                                       &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Don&amp;#039;t close/open sections when including a page. This flag should be used when the include syntax is used inside other syntax elements like lists or tables or inside other plugin syntax.                                                                                                                                                                                       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row27&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; -                     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;beforeeach=ENTITY&lt;/code&gt;/ &lt;code&gt;aftereach=ENTITY&lt;/code&gt;                      &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Display an &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=entities&quot; class=&quot;wikilink2&quot; title=&quot;entities&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;entities&quot;&gt;entity&lt;/a&gt; before/after each included page. The entity is printed outside the section/include environment, this is mainly for adding custom &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; code (when the text isn&amp;#039;t recognized as entity it is directly displayed but escaped so you can&amp;#039;t directly use &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; code here).                                                                             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row28&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;safeindex&lt;/code&gt;         &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; -                                                                &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Don&amp;#039;t index metadata of included pages that are non-public. This can cause problems with other plugins that use the metadata index and can be safely disabled in wikis where the permissions of the included pages match the permissions of the parent pages.                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row29&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; -                     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;exclude=/REGEX/&lt;/code&gt;                                              &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Regular expression to exclude certain pages, will match on full page ID. E.g. to exclude &lt;code&gt;ns:page_name&lt;/code&gt; use &lt;code&gt;/ns:page_name/&lt;/code&gt; as value. Use a &lt;a href=&quot;https://regex101.com/&quot; class=&quot;urlextern&quot; title=&quot;https://regex101.com/&quot; rel=&quot;ugc nofollow&quot;&gt;regex tester&lt;/a&gt; to debug complicated patterns.                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3627-17545&amp;quot;} --&gt;
&lt;p&gt;
Examples:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;concept&amp;amp;firstseconly&amp;amp;footer}}
{{page&amp;gt;mypage&amp;amp;noindent}}
{{namespace&amp;gt;myns&amp;amp;order=modified}}
{{namespace&amp;gt;myns&amp;amp;exclude=/myns:subns:.+|myns:page/}}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration and Flags&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_and_flags&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3270-17717&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;macros&quot;&gt;Macros&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Simple macros are possible to serve a page on a per user or per date base. These are:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit9&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; @USER@  &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; username &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; @NAME@  &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; full name of user &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; @GROUP@ &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; first group the user belongs to &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; @YEAR@  &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; 4-digit year &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; @MONTH@ &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; 2-digit month &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt;@WEEK@ &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt;2-digit ISO week number &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; @DAY@   &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; 2-digit day &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; @DATE&amp;lt;expr&amp;gt;@ &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; use a calculated date instead of today in date macros &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;17825-18114&amp;quot;} --&gt;
&lt;p&gt;
&amp;lt;expr&amp;gt; in &lt;strong&gt;&lt;code&gt;@DATE&amp;lt;expr&amp;gt;@&lt;/code&gt;&lt;/strong&gt; can be one of:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; PYEAR &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; previous year &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; NYEAR &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; next year &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; PMONTH &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; previous month &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; NMONTH &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; next month &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; PWEEK &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; previous week &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; NWEEK &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; next week &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; YESTERDAY &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; yesterday&amp;#039;s date &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; TOMORROW &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; tomorrow&amp;#039;s date &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;18163-18374&amp;quot;} --&gt;
&lt;p&gt;
Examples:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;@MONTH@:@DAY@:birthdays}}&lt;/pre&gt;

&lt;p&gt;
includes the page &lt;code&gt;birthdays&lt;/code&gt; in namespace &amp;lt;month&amp;gt;:&amp;lt;day&amp;gt;: eg. &lt;code&gt;10:15: birthdays&lt;/code&gt; for the 15th of october.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;@USER@:message}}&lt;/pre&gt;

&lt;p&gt;
includes the page &lt;code&gt;message&lt;/code&gt; from the namespace &amp;lt;user&amp;gt; of the logged in user
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;foo@DATENWEEK@@YEAR@:@WEEK@}}&lt;/pre&gt;

&lt;p&gt;
includes the page &amp;lt;weekno&amp;gt; from the namespace &lt;code&gt;foo&amp;lt;year&amp;gt;&lt;/code&gt; with next week&amp;#039;s date  e.g.  foo2012:01 for the 27th of december 2011
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Macros&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;macros&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;17718-18807&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;demo&quot;&gt;Demo&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; There is currently no demo site available.
&lt;/p&gt;

&lt;p&gt;
Use of the plugin is shown in this video here: &lt;a href=&quot;https://www.youtube.com/watch?v=6RO8TSZBedU&amp;amp;t=8m47s&quot; class=&quot;urlextern&quot; title=&quot;https://www.youtube.com/watch?v=6RO8TSZBedU&amp;amp;t=8m47s&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.youtube.com/watch?v=6RO8TSZBedU&amp;amp;t=8m47s&lt;/a&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Video not available (2021-03-20)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Demo&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;demo&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;18808-19013&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;development&quot;&gt;Development&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;change_log&quot;&gt;Change Log&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/7cc855fb1857a1214d8e5ba22439c2e87b3cdd35&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/7cc855fb1857a1214d8e5ba22439c2e87b3cdd35&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #413 from dokuwiki-translate/lang_update_1335_1780…&lt;/a&gt; (2026/06/03 22:33)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/6c226f745043b0dafcb53f865ff6e402108a0b1f&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/6c226f745043b0dafcb53f865ff6e402108a0b1f&quot; rel=&quot;ugc nofollow&quot;&gt;Translation update (sk)&lt;/a&gt; (2026/06/03 19:35)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/af0799c0415a994f663dbf88ad98bdaf6582ca31&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/af0799c0415a994f663dbf88ad98bdaf6582ca31&quot; rel=&quot;ugc nofollow&quot;&gt;Version upped&lt;/a&gt; (2025/07/23 02:04)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/3ebb32e6f5a1f6ca08730bbfdedff669ae372a07&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/3ebb32e6f5a1f6ca08730bbfdedff669ae372a07&quot; rel=&quot;ugc nofollow&quot;&gt;fix tag for minimum php version&lt;/a&gt; (2025/07/22 22:38)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/d4e3f2d9a2e8878650472c766a682d54ee9ba070&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/d4e3f2d9a2e8878650472c766a682d54ee9ba070&quot; rel=&quot;ugc nofollow&quot;&gt;Version upped&lt;/a&gt; (2025/07/05 02:04)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/c13b19687d0deeba01df7243d5b99ac975c41ddb&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/c13b19687d0deeba01df7243d5b99ac975c41ddb&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #363 from dokufreaks/tests&lt;/a&gt; (2025/07/04 20:49)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/34bf25238ac065bc91fac0fc937d1e410c6b4fe2&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/34bf25238ac065bc91fac0fc937d1e410c6b4fe2&quot; rel=&quot;ugc nofollow&quot;&gt;replace strftime use with dformat&lt;/a&gt; (2025/07/04 18:20)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-include/commit/6553f23b20fc5ffee8579ce71c6f91d0f649d095&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/commit/6553f23b20fc5ffee8579ce71c6f91d0f649d095&quot; rel=&quot;ugc nofollow&quot;&gt;use newer DokuWiki test workflow&lt;/a&gt; (2025/07/04 18:15)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;

&lt;h4 id=&quot;bugs_feature_requests&quot;&gt;Bugs / Feature Requests&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Please report bugs or feature requests at the &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; rel=&quot;ugc nofollow&quot;&gt;Bug tracker&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;known_bugs_and_issues&quot;&gt;Known Bugs and Issues&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
There are currently no known bugs and issues for which no workarounds exist (see &lt;a href=&quot;#faq&quot; title=&quot;wiki:plugin:include ↵&quot; class=&quot;wikilink1&quot;&gt;FAQ&lt;/a&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Development&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;development&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;19014-19413&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FAQ&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;faq&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;19414-19430&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit14&quot; id=&quot;the_include_plugin_breaks_the_wrap_and_folded_and_similar_plugins_when_used_inside_them&quot;&gt;The include plugin breaks the wrap and folded (and similar) plugins when used inside them&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This can be solved by using the &lt;code&gt;inline&lt;/code&gt; flag of the include plugin. This mode strips all section from the included page and should solve issues with invalid &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; and thus no longer working wrap and folded plugins. This also solves problems with invalid &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; code when the include plugin is used inside tables or other syntax environments. When the page contains headers this might look strange depending on the template.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;addendum&quot;&gt;Addendum&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
If you are using the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:wrap&quot; class=&quot;wikilink2&quot; title=&quot;plugin:wrap&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:wrap&quot;&gt;Wrap Plugin&lt;/a&gt; on both the page you are using the &lt;code&gt;{{section&amp;gt;target&amp;amp;inline}}&lt;/code&gt; from and the page &lt;em&gt;target&lt;/em&gt;, you need to make sure any pair of WRAP tags on &lt;em&gt;target&lt;/em&gt; are either entirely within the included section or entirely outside of the section.  For instance, including the FOO section into another page might break the other page:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;WRAP right 35%&amp;gt;
==== FOO ====

Content goes here

&amp;lt;/WRAP&amp;gt;

==== BAR ====&lt;/pre&gt;

&lt;p&gt;
FOO contains the &lt;code&gt;&amp;lt;/WRAP&amp;gt;&lt;/code&gt; end-tag, but not a corresponding start-tag.  Thus, if the use of &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:include&quot; class=&quot;wikilink2&quot; title=&quot;plugin:include&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:include&quot;&gt;include&lt;/a&gt; is within a WRAPed block, that WRAP block will be ended early.
&lt;/p&gt;

&lt;p&gt;
The simplest solution is to never use WRAP on both pages, only on included pages or only on pages that include others – however, that&amp;#039;s not very realistic or useful.  The other (somewhat brittle) solution is to make the section on &lt;em&gt;target&lt;/em&gt; end before the WRAP close tag.  You can do this by inserting a dokuwiki section header (at the same level) before the close tag, but after the section&amp;#039;s content.  However, I&amp;#039;ve not been able to determine if this is an intended behavior of dokuwiki, or if this is undocumented behavior and therefore subject to change at any time.  
&lt;/p&gt;

&lt;p&gt;
So, to make the above example work correctly, it should look like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;WRAP right 35%&amp;gt;
==== BAZ ====

Content goes here

==== ====
&amp;lt;/WRAP&amp;gt;

==== QUX ====&lt;/pre&gt;

&lt;p&gt;
Now &lt;code&gt;{{section&amp;gt;whatever#BAZ}}&lt;/code&gt; will work fine.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;The include plugin breaks the wrap and folded (and similar) plugins when used inside them&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;the_include_plugin_breaks_the_wrap_and_folded_and_similar_plugins_when_used_inside_them&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;19431-21427&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;is_it_possible_to_include_the_same_page_twice&quot;&gt;Is it possible to include the same page twice?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Yes, this is possible since the 2011-01-01 version and hasn&amp;#039;t been possible before. But you can&amp;#039;t include the same page again inside a page in order to avoid endless recursion (and things like page1 &amp;gt; page2 &amp;gt; page1 doesn&amp;#039;t work, too).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Is it possible to include the same page twice?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;is_it_possible_to_include_the_same_page_twice&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;21428-21721&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;does_the_include_plugin_respect_acls_of_the_included_pages&quot;&gt;Does the include plugin respect ACLs of the included pages?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The include plugin tries its best to respect ACLs and it should work under normal circumstances. Whenever the view permissions of included pages change the cache is purged and the included pages are adapted according to the current permissions. Due to limitations in the caching system this might fail if a page is accessed very frequently with changing permissions. If this is an issue for you you can disable caching of the affected pages using the &lt;code&gt;~~NOCACHE~~&lt;/code&gt; syntax. As always there is no guarantee that everything works as expected, please test if everything works and report a bug if you should notice anything unexpected.
&lt;/p&gt;

&lt;p&gt;
As of version 2012-11-24, there is a new security feature called &lt;code&gt;safeindex&lt;/code&gt; that is turned on by default, it&amp;#039;s purpose is to prevent the indexer from indexing metadata of included pages that aren&amp;#039;t public. That way links that are in protected pages won&amp;#039;t be visible as link of a public page in the backlinks list.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Does the include plugin respect ACLs of the included pages?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;does_the_include_plugin_respect_acls_of_the_included_pages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;21722-22748&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit17&quot; id=&quot;why_does_the_include_plugin_first_close_the_previous_section_and_opens_it_again_afterwards&quot;&gt;Why does the include plugin first close the previous section and opens it again afterwards?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
This is done because if there are headers in the included page they will close the current section. As the include plugin has its own container div this would produce strange results and possibly invalid &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. You can use the &lt;code&gt;inline&lt;/code&gt; flag in order to avoid this (but then also all sections of the included page are removed).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Why does the include plugin first close the previous section and opens it again afterwards?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;why_does_the_include_plugin_first_close_the_previous_section_and_opens_it_again_afterwards&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;22749-23180&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;has_the_include_plugin_feature_xyz_when_will_you_implement_xyz&quot;&gt;Has the include plugin feature XYZ/when will you implement XYZ?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
The include plugin has many feature and is very flexible and I&amp;#039;m willing to add more features if they fit in the general purpose of the include plugin. However there is no guarantee that I will implement a certain feature at a certain time, this depends completely on my available time and my mood. You can add your wishes to the issue tracker.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Has the include plugin feature XYZ\/when will you implement XYZ?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;has_the_include_plugin_feature_xyz_when_will_you_implement_xyz&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;23181-23601&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;how_to_avoid_including_of_whole_page_content_if_section_does_not_exist&quot;&gt;How to avoid including of whole page content if section does not exist?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
If using the flag &lt;code&gt;firstsectiononly&lt;/code&gt; in addition, could be one solve. At least in regard of avoiding very large content to be displayed. If adding a header at the source page and using tools like the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:hiddenheader&quot; class=&quot;wikilink2&quot; title=&quot;plugin:hiddenheader&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:hiddenheader&quot;&gt;hiddenheader&lt;/a&gt; it might solve things at the source page, but in it&amp;#039;s case seems to conflict and break certain include flag-tasks.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;How to avoid including of whole page content if section does not exist?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;how_to_avoid_including_of_whole_page_content_if_section_does_not_exist&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;23602-24025&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;discussion&quot;&gt;Discussion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Please don&amp;#039;t report any bugs or feature requests here but instead use the &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; rel=&quot;ugc nofollow&quot;&gt;bug tracker&lt;/a&gt;!  &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
If you miss a comment you&amp;#039;ve created please have a look at the &lt;a href=&quot;#faq&quot; title=&quot;wiki:plugin:include ↵&quot; class=&quot;wikilink1&quot;&gt;FAQ&lt;/a&gt; section and the &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/issues&quot; rel=&quot;ugc nofollow&quot;&gt;issue tracker&lt;/a&gt;, I might have moved them there, if you can&amp;#039;t find a bug report anymore that bug should be solved, please try the current version and report it again if it still doesn&amp;#039;t work.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Discussion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;discussion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;24026-24536&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit21&quot; id=&quot;discussions_in_dw-forum&quot;&gt;Discussions in DW-forum&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://forum.dokuwiki.org/thread/16154&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org/thread/16154&quot; rel=&quot;ugc nofollow&quot;&gt;plugin:include / Hide current page contents once user logs in&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://forum.dokuwiki.org/thread/16235&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org/thread/16235&quot; rel=&quot;ugc nofollow&quot;&gt;include plugin: development in direction to use it as a kind database tool&lt;/a&gt;, feature inspirations.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Discussions in DW-forum&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;discussions_in_dw-forum&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;24537-24830&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit22&quot; id=&quot;user_comments&quot;&gt;User comments&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;footer.php&lt;/strong&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// author&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$flags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$meta&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;creator&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getConf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usernamespace&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;:&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
replaced to include the real user name in the link:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// author&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$flags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$meta&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;creator&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$meta&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;last_change&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getConf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usernamespace&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;:&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;user_namespace&quot;&gt;User Namespace&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Hi, I&amp;#039;m using &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:userpagecreate&quot; class=&quot;wikilink2&quot; title=&quot;plugin:userpagecreate&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:userpagecreate&quot;&gt;userpagecreate&lt;/a&gt; plugin&amp;#039;s to create user&amp;#039;s namespace instead of user&amp;#039;s page. Then, to link correctly the include&amp;#039;s page with his last member who edit it, i rewrite the previous lines like this :
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$flags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$meta&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;last_change&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;user&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$auth&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getUserData&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/strstr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;strstr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getConf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usernamespace&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;@USER@&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                    &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;@USER@&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getConf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usernamespace&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
                    &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; cleanID&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getConf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usernamespace&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;:&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$login&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
                resolve_pageid&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;getNS&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$ID&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$exists&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$exists&lt;/span&gt; ? &lt;span class=&quot;st_h&quot;&gt;&#039;wikilink1&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;wikilink2&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;url&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; wl&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;title&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$userpage&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;name&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; hsc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$author&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;target&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;wiki&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;class&#039;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039; url fn&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;pre&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;span class=&amp;quot;vcard author&amp;quot;&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;st_h&quot;&gt;&#039;suf&#039;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/span&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;re0&quot;&gt;$xhtml&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;_formatLink&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
       &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
and change my conf into :
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$conf[&amp;#039;plugin&amp;#039;][&amp;#039;include&amp;#039;][&amp;#039;usernamespace&amp;#039;] = &amp;#039;user:@USER@:start&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
standard configuration still works.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$conf[&amp;#039;plugin&amp;#039;][&amp;#039;include&amp;#039;][&amp;#039;usernamespace&amp;#039;] = &amp;#039;user:&amp;#039;;&lt;/pre&gt;

&lt;p&gt;
If the &lt;strong&gt;@USER@&lt;/strong&gt; wildcard is using, replace it by the login name, otherwise, use the standard include&amp;#039;s plugin rule.
&lt;/p&gt;

&lt;p&gt;
— &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:garlik&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:garlik&quot; rel=&quot;nofollow&quot;&gt;garlik&lt;/a&gt; &lt;em&gt;2011/10/24 14:10&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
— &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:garlik&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:garlik&quot; rel=&quot;nofollow&quot;&gt;garlik&lt;/a&gt; &lt;em&gt;2011/11/07 11:32&lt;/em&gt; - Summmary : Update the code. will display the right modif author.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User comments&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user_comments&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;24831-27235&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit23&quot; id=&quot;showlink_vs_link_flag&quot;&gt;showlink vs link flag&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When including a page, the flag to make the first heading a link is &lt;code&gt;link&lt;/code&gt;, not &lt;code&gt;showlink&lt;/code&gt;. This confused me at first because I assumed the flags would have the same names as the configuration options. Example (displays the first section of a product page, with the page heading as a link):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;products:sample&amp;amp;firstseconly&amp;amp;link}}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;showlink vs link flag&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;showlink_vs_link_flag&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;27236-27621&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit24&quot; id=&quot;controlling_header_size_in_included_pages&quot;&gt;Controlling header size in included pages&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
By default, the headers in included pages start one level lower than the last header in the current page. For example, if the section before the include is a level-three header, then a level-6 header in the included page will become a wimply little level-2.
&lt;/p&gt;

&lt;p&gt;
If you want higher-level headers, you can trick the plugin by putting an empty header above the include. In the following example, a level-6 header in the included page will show up as level-5:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;=== Some Section ===
Stuff

====== ======
{{page&amp;gt;somepage}}&lt;/pre&gt;

&lt;p&gt;
- &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:zioth&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:zioth&quot; rel=&quot;nofollow&quot;&gt;Zioth&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Controlling header size in included pages&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;controlling_header_size_in_included_pages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;27622-28227&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit25&quot; id=&quot;including_a_paragraph_or_excerpt_from_a_page&quot;&gt;Including a paragraph or excerpt from a page&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
See the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:hiddenheader&quot; class=&quot;wikilink2&quot; title=&quot;plugin:hiddenheader&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:hiddenheader&quot;&gt;Hidden Header plugin&lt;/a&gt;. -&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:zioth&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:zioth&quot; rel=&quot;nofollow&quot;&gt;Zioth&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Including a paragraph or excerpt from a page&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;including_a_paragraph_or_excerpt_from_a_page&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;28228-28360&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit26&quot; id=&quot;angua&quot;&gt;2012-01-25 &amp;quot;Angua&amp;quot;&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Just tested with the current version and it works for me.
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:renux&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:renux&quot; rel=&quot;nofollow&quot;&gt;renux&lt;/a&gt; &lt;em&gt;2012/02/10 12:44&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;2012-01-25 \&amp;quot;Angua\&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;angua&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;28361-28495&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit27&quot; id=&quot;include_from_same_page&quot;&gt;Include from same page?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Using it on my knowledge wiki and it works well. However, I&amp;#039;d like to be able to include a section from the current page - for use with the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:itemtable&quot; class=&quot;wikilink2&quot; title=&quot;plugin:itemtable&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:itemtable&quot;&gt;ItemTable Plugin&lt;/a&gt; (along with something to hide the inline text of course.
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:totallyinformation&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:totallyinformation&quot; rel=&quot;nofollow&quot;&gt;Julian Knight&lt;/a&gt; &lt;em&gt;2012-03-23&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Does it still work? Can&amp;#039;t make it on my wiki page.
&lt;/p&gt;

&lt;p&gt;
 — &lt;em&gt;Piotr&lt;/em&gt; &lt;em&gt;2017-10-04&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Include from same page?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;include_from_same_page&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;28496-28909&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;align_feature&quot;&gt;Align Feature&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
It&amp;#039;ll be great to be able to align included pages. Because a lot of people are using this feature for infobox purposes and some would love to be able to control the alignment of the 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;people:obama}}&lt;/pre&gt;

&lt;p&gt;
 using the core syntax by adding spaces before of after the syntax. 
&lt;/p&gt;

&lt;p&gt;
 — James &lt;em&gt; 2014-05-13 20:38&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Align Feature&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;align_feature&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;28910-29253&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;exclude_feature&quot;&gt;Exclude Feature&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
It would be nice, if there would be an «exclude» option. When we use the &lt;code&gt;namespace&lt;/code&gt; feature, we don&amp;#039;t want certain pages in the included in the resulting page: for example exclude «sidebar» or «start».
&lt;/p&gt;

&lt;p&gt;
 — Manuel &lt;em&gt; 2014-10-30 02:42&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
I would appreciate that feature too.
&lt;/p&gt;

&lt;p&gt;
 — Florian &lt;em&gt; 2015-07-18 18:43&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Same here, the possibility of the exclusion of listed namespaces would be much appreciated.
&lt;/p&gt;

&lt;p&gt;
 — Tommy &lt;em&gt; 2016-2-19 21:18&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
I totally agree.
&lt;/p&gt;

&lt;p&gt;
—- Chris &lt;em&gt; 2016-2-21 09:12&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:blog&quot; class=&quot;wikilink2&quot; title=&quot;plugin:blog&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:blog&quot;&gt;blog plugin&lt;/a&gt; supports &lt;strong&gt;Exclude Feature &lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
 — HsinTang &lt;em&gt; 2016-07-26 &lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
I created &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/pull/243&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/pull/243&quot; rel=&quot;ugc nofollow&quot;&gt;a PR&lt;/a&gt; for an exclude option! Testing or adding tests would be appreciated.
&lt;/p&gt;

&lt;p&gt;
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:sleeping&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:sleeping&quot; rel=&quot;nofollow&quot;&gt;sleeping&lt;/a&gt; &lt;em&gt;2020-04-11 07:57&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
The &lt;code&gt;exclude&lt;/code&gt; flag has been merged! &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:sleeping&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:sleeping&quot; rel=&quot;nofollow&quot;&gt;sleeping&lt;/a&gt; &lt;em&gt;2020-04-16 19:28&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Exclude Feature&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;exclude_feature&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;29254-30166&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit30&quot; id=&quot;empty_section&quot;&gt;Empty Section&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
We are using the plugin a lot for technical documentation. If we include a named section (#title), and that section doesn&amp;#039;t exist, the plugin includes the whole page. This really annoying. Would it be possible to change the behavior so that if a section doesn&amp;#039;t exist it doesn&amp;#039;t include anything (the same as when a page doesn&amp;#039;t exist), please?
&lt;/p&gt;

&lt;p&gt;
 — Simon &lt;em&gt; 2015-02-02 14:50 &lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
Just thought of asking about this issue. Is there any possibility to avoid that?  — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:samana_johann&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:samana_johann&quot; rel=&quot;nofollow&quot;&gt;Samana Johann&lt;/a&gt; &lt;em&gt;2018-08-20 19:45&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Empty Section&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;empty_section&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;30167-30720&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit31&quot; id=&quot;no_other_data&quot;&gt;No Other data&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I love this plugin but I have a question. How do I completely remove all other data included, such as user, mdate, etc.? If I do them as individual flags I still see the grey bar under the included content. There must be a flag that just excludes all the content, right? Am I just missing it somehow?
&lt;/p&gt;

&lt;p&gt;
Thanks!
&lt;/p&gt;

&lt;p&gt;
— Max &lt;em&gt;2017.03.21&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Hi there, I think you are looking for 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{page&amp;gt;ID&amp;amp;nouser&amp;amp;nodate&amp;amp;nofooter}}&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No Other data&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_other_data&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;30721-31167&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit32&quot; id=&quot;namespace_lists_using_linkonly_and_beforeeach_aftereach&quot;&gt;Namespace lists using &amp;amp;linkonly and &amp;amp;beforeeach/&amp;amp;aftereach&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I&amp;#039;ve been trying to format a list of pages generated using namespace&amp;gt; with &amp;amp;linkonly - ideally as a simple unordered list. I&amp;#039;m adding this paragraph to help others searching for help because it took me several hours to find out that it is not possible and this is a known issue logged as a &lt;a href=&quot;https://github.com/dokufreaks/plugin-include/issues/130&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-include/issues/130&quot; rel=&quot;ugc nofollow&quot;&gt;feature request&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
— vt306 &lt;em&gt;2017.03.29&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
Thanks to Michael Hamann for the advice. The &lt;a href=&quot;https://www.dokuwiki.org/plugin:pagequery&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugin:pagequery&quot;&gt;pagequery&lt;/a&gt; plugin is the solution for this.
&lt;/p&gt;

&lt;p&gt;
— vt306 &lt;em&gt;2017.04.06&lt;/em&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Namespace lists using &amp;amp;linkonly and &amp;amp;beforeeach\/&amp;amp;aftereach&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;namespace_lists_using_linkonly_and_beforeeach_aftereach&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;31168-31772&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit33&quot; id=&quot;option_to_pass_revision_of_main_page_to_includes_pages&quot;&gt;Option to pass revision of main page to includes pages&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
We are currently using DokuWiki for technical documentation. Within DokuWiki we use the &amp;#039;date_at&amp;#039; function (&lt;a href=&quot;https://www.dokuwiki.org/date_at&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/date_at&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/date_at&lt;/a&gt;) to go back to an old revision to see which version of the page a customer recieved. It would be very usefull if the included pages would honour the revision of the main page. To clarify: if the main page is shown at a specific revision, the included pages should also be shown at the last revision before the date of the main page. Would something like that be possible to incorporate?
&lt;/p&gt;

&lt;p&gt;
Thanks in advance!
Ruud 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Option to pass revision of main page to includes pages&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;option_to_pass_revision_of_main_page_to_includes_pages&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;31773-32393&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit34&quot; id=&quot;translations&quot;&gt;Translations&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
If it is of use, a paticular Translation of the Plugin&amp;#039;s info page into German can be taken from &lt;a href=&quot;http://accesstoinsight.eu/doku.php?id=external:index#include_plugin&quot; class=&quot;urlextern&quot; title=&quot;http://accesstoinsight.eu/doku.php?id=external:index#include_plugin&quot; rel=&quot;ugc nofollow&quot;&gt;here&lt;/a&gt;. — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:samana_johann&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:samana_johann&quot; rel=&quot;nofollow&quot;&gt;Samana Johann&lt;/a&gt; &lt;em&gt;2018-08-20 12:11&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Translations&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;translations&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;32394-32656&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit35&quot; id=&quot;display_search_results_on_a_page&quot;&gt;Display search results on a page?&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Hi, I was wondering if it is possible to display the search result of a term or phrase on a page?
&lt;/p&gt;

&lt;p&gt;
- OYMYO
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Display search results on a page?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;display_search_results_on_a_page&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:35,&amp;quot;range&amp;quot;:&amp;quot;32657-32808&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit36&quot; id=&quot;options_arguments&quot;&gt;Options/arguments&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
I think it would be cool if this plugin supported &lt;a href=&quot;https://www.mediawiki.org/wiki/Help:Templates#Parameters&quot; class=&quot;urlextern&quot; title=&quot;https://www.mediawiki.org/wiki/Help:Templates#Parameters&quot; rel=&quot;ugc nofollow&quot;&gt;options/arguments like in MediaWiki&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Something like this:
&lt;/p&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:plugin:include&amp;amp;codeblock=9&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;page1.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;Test by {{{1}}}&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:plugin:include&amp;amp;codeblock=10&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_txt&quot;&gt;page2.txt&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;file&quot;&gt;{{page&amp;gt;:page1|Me}}&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
And &lt;code&gt;page2&lt;/code&gt; would be parsed into:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Test by Me&lt;/pre&gt;

&lt;p&gt;
 — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:hasha2982&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:hasha2982&quot; rel=&quot;nofollow&quot;&gt;hasha2982&lt;/a&gt; &lt;em&gt;2020-08-19 17:12&lt;/em&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Sorry, didn&amp;#039;t know about the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:templater&quot; class=&quot;wikilink2&quot; title=&quot;plugin:templater&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:templater&quot;&gt;Templater Plugin&lt;/a&gt; — &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=user:hasha2982&quot; class=&quot;interwiki iw_user wikilink2&quot; title=&quot;/doku.php?id=user:hasha2982&quot; rel=&quot;nofollow&quot;&gt;hasha2982&lt;/a&gt; &lt;em&gt;2020-08-19 17:25&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;p&gt;
  * &lt;a href=&quot;https://www.dokuwiki.org/plugin:include?do=&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:include?do=&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/plugin:include?do=&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:plugin:dokufreaks-plugin-include-2023-09-22-3-ga6cfd52.tar.gz&quot; class=&quot;media mediafile mf_gz&quot; title=&quot;wiki:plugin:dokufreaks-plugin-include-2023-09-22-3-ga6cfd52.tar.gz (48.2 KB)&quot;&gt;dokufreaks-plugin-include-2023-09-22-3-ga6cfd52.tar.gz&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Options\/arguments&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;options_arguments&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:36,&amp;quot;range&amp;quot;:&amp;quot;32809-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 26 Aug 2024 05:49:48 +0000</pubDate>
        </item>
        <item>
            <title>getting_involved</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:teams:getting_involved&amp;rev=1692398629</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;getting_involved&quot;&gt;Getting Involved&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Welcome to the DokuWiki community. 
&lt;/p&gt;

&lt;p&gt;
This page is intended to help you find places where you can contribute to DokuWiki and get a warm fuzzy feeling for doing something wonderful. Some things you can do on your own, while others are better suited to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=teams&quot; class=&quot;wikilink2&quot; title=&quot;teams&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;teams&quot;&gt;team work&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
The &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=mailinglist&quot; class=&quot;wikilink2&quot; title=&quot;mailinglist&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;mailinglist&quot;&gt;mailing list&lt;/a&gt; is a good place to get assistance and find other people doing things you would like to contribute to. DokuWiki developers can also be found in the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=irc&quot; class=&quot;wikilink2&quot; title=&quot;irc&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;irc&quot;&gt;IRC channel&lt;/a&gt;. 
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Getting Involved&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;getting_involved&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-511&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;kun_yong&quot;&gt;Kun Yong&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
this dokuwiki is best
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Kun Yong&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kun_yong&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;512-556&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;documentation&quot;&gt;Documentation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=manual&quot; class=&quot;wikilink1&quot; title=&quot;manual&quot; data-wiki-id=&quot;manual&quot;&gt;user manual&lt;/a&gt; is always in need of &lt;a href=&quot;https://en.wikipedia.org/wiki/gardening&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/gardening&quot;&gt;wiki gardening&lt;/a&gt;. Even if you only have used DokuWiki for a short time there is much to do.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Correct spelling mistakes&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Translate pages to your local language &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make and add screenshots of features or plugins where appropriate&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; There are some documentation pages which mention that certain features are &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:develonly&quot; class=&quot;wikilink2&quot; title=&quot;devel:develonly&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:develonly&quot;&gt;develonly&lt;/a&gt; (use the backlinks feature to find them). If these remarks are less recent than the most recent release, they are most probably no longer relevant. Check that and remove them and rewrite the affected paragraphs.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; On some pages (especially plugins) there are comments. Most of them should be removed and merged into the documentation part of the pages.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Make sure recent development changes are documented and if not, document them or remind the developers who did the changes to document them.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Search for &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:teams:getting_involved&amp;amp;do=search&amp;amp;q=FIXME&quot; class=&quot;wikilink1&quot; title=&quot;wiki:teams:getting_involved&quot; data-wiki-id=&quot;wiki:teams:getting_involved&quot;&gt;FIXME&lt;/a&gt;, try to fix them&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Documentation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;documentation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;557-1546&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;plugins_templates&quot;&gt;Plugins &amp;amp; Templates&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; There are a lot of plugins which aren&amp;#039;t marked as compatible with the current release of DokuWiki. Some are working perfectly, some are simply broken. Test the plugins and check if they work and if there are users complaining about problems. If the plugin works with the current release, mark it is compatible, otherwise open a bug report in the plugin&amp;#039;s issue tracker or send the author an email when there is no issue tracker. If there is no response within some weeks, contact the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=mailinglist&quot; class=&quot;wikilink2&quot; title=&quot;mailinglist&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;mailinglist&quot;&gt;mailing list&lt;/a&gt; or consider &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:adoption&quot; class=&quot;wikilink2&quot; title=&quot;devel:adoption&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:adoption&quot;&gt;adopting&lt;/a&gt; the plugin.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; There are a lot of plugins on the &lt;a href=&quot;https://github.com/dokufreaks/&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/&quot; rel=&quot;ugc nofollow&quot;&gt;dokufreaks&lt;/a&gt; GitHub account which were originally developed by Esther Brunner, Michael Klier and Gina Häußge who are no longer actively developing these plugins. Some of them are very simple and just work, others could need a lot more love than those who are currently looking after them can give. If you like any of them, feel free to join the effort of maintaining and improving them.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; There are some very old plugins that are no longer actively developed. Some of them are very simple and just work, others could need more love. You can contact the author for more information about the state of the plugin and then contribute to it or &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:adoption&quot; class=&quot;wikilink2&quot; title=&quot;devel:adoption&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:adoption&quot;&gt;adopt&lt;/a&gt; it.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Plugins &amp;amp; Templates&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;plugins_templates&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1547-2895&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;spread_the_word&quot;&gt;Spread The Word&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Help building the community. Promote DokuWiki and invite other people to get involved.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Give away the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=leaflet&quot; class=&quot;wikilink2&quot; title=&quot;leaflet&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;leaflet&quot;&gt;DokuWiki Leaflet&lt;/a&gt; to interested people in your neighborhood&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Add items to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=blogroll&quot; class=&quot;wikilink2&quot; title=&quot;blogroll&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;blogroll&quot;&gt;blogroll&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=press&quot; class=&quot;wikilink2&quot; title=&quot;press&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;press&quot;&gt;press reviews&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Write about your own site on &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=dokuinstall&quot; class=&quot;wikilink2&quot; title=&quot;dokuinstall&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;dokuinstall&quot;&gt;DokuWiki installations&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Blog about DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Answer questions on the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=forum&quot; class=&quot;wikilink2&quot; title=&quot;forum&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;forum&quot;&gt;forum&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Share your experience on &lt;a href=&quot;https://www.openhub.net/p/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;https://www.openhub.net/p/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;Open Hub&lt;/a&gt;, &lt;a href=&quot;https://alternativeto.net/software/dokuwiki/&quot; class=&quot;urlextern&quot; title=&quot;https://alternativeto.net/software/dokuwiki/&quot; rel=&quot;ugc nofollow&quot;&gt;AlternativeTo&lt;/a&gt;, &lt;a href=&quot;https://siftery.com/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;https://siftery.com/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;Siftery&lt;/a&gt; or &lt;a href=&quot;https://twitter.com/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;https://twitter.com/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;Twitter&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Spread The Word&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;spread_the_word&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2896-3535&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;development&quot;&gt;Development&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
We are always looking for more developers who help to fix bugs, clean up the code or implement new features. A large part of the development discussion happens in &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/issues/&quot; class=&quot;interwiki iw_issue&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/issues/&quot;&gt;Github Issues&lt;/a&gt;, but also don&amp;#039;t forget to subscribe to the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=mailinglist&quot; class=&quot;wikilink2&quot; title=&quot;mailinglist&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;mailinglist&quot;&gt;mailing list&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Start with reading the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=development&quot; class=&quot;wikilink2&quot; title=&quot;development&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;development&quot;&gt;getting started&lt;/a&gt; chapter of the development manual&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Watch out for occasional &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:bughunting&quot; class=&quot;wikilink2&quot; title=&quot;devel:bughunting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:bughunting&quot;&gt;bug hunting weekends&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Look at the currently open &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/pulls&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/pulls&quot; rel=&quot;ugc nofollow&quot;&gt;pull requests&lt;/a&gt; on GitHub — this is where the next changes are discussed and developed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Try to work on one of the tasks with the &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/labels/good%20first%20issue&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/labels/good%20first%20issue&quot; rel=&quot;ugc nofollow&quot;&gt;good first issue&lt;/a&gt; label in the bug tracker. Feel free to ask for further information or help.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Work on one of the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:ideas&quot; class=&quot;wikilink2&quot; title=&quot;devel:ideas&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:ideas&quot;&gt;ideas&lt;/a&gt; for new features&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Don&amp;#039;t be shy, talk to us—we don&amp;#039;t bite&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Development&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;development&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3536-4468&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;graphic_designers&quot;&gt;Graphic Designers&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Our goal is not only to create great software but also to have it look nice. For that we need Photoshop/Gimp/Inkscape wizards with a keen eye for design. We often have requirements for custom icons or need help with making an interface work visually and usability wise. Larger tasks like completely redesigning a template are rare, but happen once in a while.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Introduce yourself to the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=mailinglist&quot; class=&quot;wikilink2&quot; title=&quot;mailinglist&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;mailinglist&quot;&gt;mailinglist&lt;/a&gt; so we are aware that we can rely on your help&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Check the &lt;a href=&quot;https://github.com/dokuwiki/dokuwiki/labels/Category:%20Design&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokuwiki/dokuwiki/labels/Category:%20Design&quot; rel=&quot;ugc nofollow&quot;&gt;Design category&lt;/a&gt; in our bug tracker&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Graphic Designers&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;graphic_designers&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;4469-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 18 Aug 2023 22:43:49 +0000</pubDate>
        </item>
        <item>
            <title>syntax</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:syntax&amp;rev=1684170792</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;formatting_syntax&quot;&gt;Formatting Syntax&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/DokuWiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/DokuWiki&quot;&gt;DokuWiki&lt;/a&gt; supports some simple markup language, which tries to make the datafiles to be as readable as possible. This page contains all possible syntax you may use when editing the pages. Simply have a look at the source of this page by pressing «Edit this page». If you want to try something, just use the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=playground:playground&quot; class=&quot;wikilink2&quot; title=&quot;playground:playground&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;playground:playground&quot;&gt;playground&lt;/a&gt; page. The simpler markup is easily accessible via &lt;a href=&quot;https://www.dokuwiki.org/toolbar&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/toolbar&quot;&gt;quickbuttons&lt;/a&gt;, too.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Formatting Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;formatting_syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;basic_text_formatting&quot;&gt;Basic Text Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, &lt;em class=&quot;u&quot;&gt;underlined&lt;/em&gt; and &lt;code&gt;monospaced&lt;/code&gt; texts. Of course you can &lt;strong&gt;&lt;em class=&quot;u&quot;&gt;&lt;em&gt;&lt;code&gt;combine&lt;/code&gt;&lt;/em&gt;&lt;/em&gt;&lt;/strong&gt; all these.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports **bold**, //italic//, __underlined__ and &amp;#039;&amp;#039;monospaced&amp;#039;&amp;#039; texts.
Of course you can **__//&amp;#039;&amp;#039;combine&amp;#039;&amp;#039;//__** all these.&lt;/pre&gt;

&lt;p&gt;
You can use &lt;sub&gt;subscript&lt;/sub&gt; and &lt;sup&gt;superscript&lt;/sup&gt;, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use &amp;lt;sub&amp;gt;subscript&amp;lt;/sub&amp;gt; and &amp;lt;sup&amp;gt;superscript&amp;lt;/sup&amp;gt;, too.&lt;/pre&gt;

&lt;p&gt;
You can mark something as &lt;del&gt;deleted&lt;/del&gt; as well.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can mark something as &amp;lt;del&amp;gt;deleted&amp;lt;/del&amp;gt; as well.&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Paragraphs&lt;/strong&gt; are created from blank lines. If you want to &lt;strong&gt;force a newline&lt;/strong&gt; without a paragraph, you can use two backslashes followed by a whitespace or the end of line.
&lt;/p&gt;

&lt;p&gt;
This is some text with some linebreaks&lt;br/&gt;
Note that the
two backslashes are only recognized at the end of a line&lt;br/&gt;

or followed by&lt;br/&gt;
a whitespace \\this happens without it.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is some text with some linebreaks\\ Note that the
two backslashes are only recognized at the end of a line\\
or followed by\\ a whitespace \\this happens without it.&lt;/pre&gt;

&lt;p&gt;
You should use forced newlines only if really needed.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Basic Text Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;basic_text_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;473-1609&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;links&quot;&gt;Links&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports multiple ways of creating links.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1610-1680&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;external&quot;&gt;External&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
External links are recognized automagically: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.google.com&lt;/a&gt; or simply &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;www.google.com&lt;/a&gt; - You can set the link text as well: &lt;a href=&quot;http://www.google.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.google.com&quot; rel=&quot;ugc nofollow&quot;&gt;This Link points to google&lt;/a&gt;. Email addresses like this one: &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&lt;/a&gt; are recognized, too.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports multiple ways of creating links. External links are recognized
automagically: http://www.google.com or simply www.google.com - You can set
link text as well: [[http://www.google.com|This Link points to google]]. Email
addresses like this one: &amp;lt;andi@splitbrain.org&amp;gt; are recognized, too.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;External&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;external&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1681-2271&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;internal&quot;&gt;Internal&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Internal links are created by using square brackets. You can either just give a &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:pagename&quot;&gt;pagename&lt;/a&gt; or use an additional &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:pagename&quot; class=&quot;wikilink2&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:pagename&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:pagename&quot;&gt;link text&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Internal links are created by using square brackets. You can either just give
a [[pagename]] or use an additional [[pagename|link text]].&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/pagename&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/pagename&quot;&gt;Wiki pagenames&lt;/a&gt; are converted to lowercase automatically, special characters are not allowed.
&lt;/p&gt;

&lt;p&gt;
You can use &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=some:namespaces&quot; class=&quot;wikilink2&quot; title=&quot;some:namespaces&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;some:namespaces&quot;&gt;namespaces&lt;/a&gt; by using a colon in the pagename.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can use [[some:namespaces]] by using a colon in the pagename.&lt;/pre&gt;

&lt;p&gt;
For details about namespaces see &lt;a href=&quot;https://www.dokuwiki.org/namespaces&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/namespaces&quot;&gt;namespaces&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Linking to a specific section is possible, too. Just add the section name behind a hash character as known from &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;. This links to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:syntax#internal&quot; class=&quot;wikilink1&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax&quot;&gt;this Section&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This links to [[syntax#internal|this Section]].&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Links to &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:syntax&quot; class=&quot;wikilink1&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax&quot;&gt;existing pages&lt;/a&gt; are shown in a different style from &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:nonexisting&quot; class=&quot;wikilink2&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:nonexisting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:nonexisting&quot;&gt;nonexisting&lt;/a&gt; ones.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki does not use &lt;a href=&quot;https://en.wikipedia.org/wiki/CamelCase&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/CamelCase&quot;&gt;CamelCase&lt;/a&gt; to automatically create links by default, but this behavior can be enabled in the &lt;a href=&quot;https://www.dokuwiki.org/config&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config&quot;&gt;config&lt;/a&gt; file. Hint: If DokuWiki is a link, then it&amp;#039;s enabled.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; When a section&amp;#039;s heading is changed, its bookmark changes, too. So don&amp;#039;t rely on section linking too much.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Internal&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;internal&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2272-3506&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;interwiki&quot;&gt;Interwiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki supports &lt;a href=&quot;https://www.dokuwiki.org/Interwiki&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Interwiki&quot;&gt;Interwiki&lt;/a&gt; links. These are quick links to other Wikis. For example this is a link to Wikipedia&amp;#039;s page about Wikis: &lt;a href=&quot;https://en.wikipedia.org/wiki/Wiki&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Wiki&quot;&gt;Wiki&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;DokuWiki supports [[doku&amp;gt;Interwiki]] links. These are quick links to other Wikis.
For example this is a link to Wikipedia&amp;#039;s page about Wikis: [[wp&amp;gt;Wiki]].&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Interwiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;interwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3507-3843&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;windows_shares&quot;&gt;Windows Shares&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Windows shares like &lt;a href=&quot;file://///server/share&quot; class=&quot;windows&quot; title=&quot;\\server\share&quot;&gt;this&lt;/a&gt; are recognized, too. Please note that these only make sense in a homogeneous user group like a corporate &lt;a href=&quot;https://en.wikipedia.org/wiki/Intranet&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Intranet&quot;&gt;Intranet&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Windows Shares like [[\\server\share|this]] are recognized, too.&lt;/pre&gt;

&lt;p&gt;
Notes:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For security reasons direct browsing of windows shares only works in Microsoft Internet Explorer per default (and only in the «local zone»).&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; For Mozilla and Firefox it can be enabled through different workaround mentioned in the &lt;a href=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; class=&quot;urlextern&quot; title=&quot;http://kb.mozillazine.org/Links_to_local_pages_do_not_work&quot; rel=&quot;ugc nofollow&quot;&gt;Mozilla Knowledge Base&lt;/a&gt;. However, there will still be a JavaScript warning about trying to open a Windows Share. To remove this warning (for all users), put the following line in &lt;code&gt;conf/lang/en/lang.php&lt;/code&gt; (more details at &lt;a href=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/localization#changing_some_localized_texts_and_strings_in_your_installation&quot;&gt;localization&lt;/a&gt;): &lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:xref:dokuwiki:data:pages:wiki:syntax&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;conf/lang/en/lang.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code&quot;&gt;&amp;lt;?php
/**
 * Customization of the english language file
 * Copy only the strings that needs to be modified
 */
$lang[&amp;#039;js&amp;#039;][&amp;#039;nosmblinks&amp;#039;] = &amp;#039;&amp;#039;;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Windows Shares&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;windows_shares&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3844-4916&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;image_links&quot;&gt;Image Links&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
You can also use an image to link to another internal or external page by combining the syntax for links and &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;images&lt;/a&gt; (see below) like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;[[http://php.net|{{wiki:dokuwiki-128.png}}]]&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;http://php.net&quot; class=&quot;media&quot; title=&quot;http://php.net&quot; rel=&quot;ugc nofollow&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Please note: The image formatting is the only formatting syntax accepted in link names.
&lt;/p&gt;

&lt;p&gt;
The whole &lt;a href=&quot;#images_and_other_files&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;image&lt;/a&gt; and &lt;a href=&quot;#links&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;link&lt;/a&gt; syntax is supported (including image resizing, internal and external images and URLs and interwiki links).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Image Links&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;image_links&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;4917-5462&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;footnotes&quot;&gt;Footnotes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can add footnotes &lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; by using double parentheses.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;You can add footnotes ((This is a footnote)) by using double parentheses.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Footnotes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;footnotes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5463-5637&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;sectioning&quot;&gt;Sectioning&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can use up to five different levels of headlines to structure your content. If you have more than three headlines, a table of contents is generated automatically – this can be disabled by including the string &lt;code&gt;~~NOTOC~~&lt;/code&gt; in the document.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Sectioning&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sectioning&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;5638-5924&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit11&quot; id=&quot;headline_level_3&quot;&gt;Headline Level 3&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;headline_level_4&quot;&gt;Headline Level 4&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;/div&gt;

&lt;h5 id=&quot;headline_level_5&quot;&gt;Headline Level 5&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;==== Headline Level 3 ====
=== Headline Level 4 ===
== Headline Level 5 ==&lt;/pre&gt;

&lt;p&gt;
By using four or more dashes, you can make a horizontal line:
&lt;/p&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Headline Level 3&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;headline_level_3&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;5925-6151&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;media_files&quot;&gt;Media Files&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include external and internal &lt;a href=&quot;https://www.dokuwiki.org/images&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/images&quot;&gt;images, videos and audio files&lt;/a&gt; with curly brackets. Optionally you can specify the size of them.
&lt;/p&gt;

&lt;p&gt;
Real size:                        &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width:            &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=50&amp;amp;tok=3bbf81&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resize to given width and height&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt;: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=2c482f&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Resized external image:           &lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?tok=147ce0&amp;amp;media=https%3A%2F%2Fsecure.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; title=&quot;https://secure.php.net/images/php.gif&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=200&amp;amp;h=50&amp;amp;tok=480810&amp;amp;media=https%3A%2F%2Fsecure.php.net%2Fimages%2Fphp.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;50&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;Real size:                        {{wiki:dokuwiki-128.png}}
Resize to given width:            {{wiki:dokuwiki-128.png?50}}
Resize to given width and height: {{wiki:dokuwiki-128.png?200x50}}
Resized external image:           {{https://secure.php.net/images/php.gif?200x50}}&lt;/pre&gt;

&lt;p&gt;
By using left or right whitespaces you can choose the alignment.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediaright&quot; align=&quot;right&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;medialeft&quot; align=&quot;left&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png}}
{{wiki:dokuwiki-128.png }}
{{ wiki:dokuwiki-128.png }}&lt;/pre&gt;

&lt;p&gt;
Of course, you can add a title (displayed as a tooltip by most browsers), too.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/detail.php?id=wiki%3Axref%3Adokuwiki%3Adata%3Apages%3Awiki%3Asyntax&amp;amp;media=wiki:dokuwiki-128.png&quot; class=&quot;media&quot; title=&quot;wiki:dokuwiki-128.png&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;mediacenter&quot; loading=&quot;lazy&quot; title=&quot;This is the caption&quot; alt=&quot;This is the caption&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{ wiki:dokuwiki-128.png |This is the caption}}&lt;/pre&gt;

&lt;p&gt;
For linking an image to another page see &lt;a href=&quot;#image_links&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:syntax ↵&quot; class=&quot;wikilink1&quot;&gt;Image Links&lt;/a&gt; above.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Media Files&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;media_files&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6152-7524&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;supported_media_formats&quot;&gt;Supported Media Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki can embed the following media formats directly.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit14&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Image &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;gif&lt;/code&gt;, &lt;code&gt;jpg&lt;/code&gt;, &lt;code&gt;png&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Video &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; &lt;code&gt;webm&lt;/code&gt;, &lt;code&gt;ogv&lt;/code&gt;, &lt;code&gt;mp4&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Audio &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;ogg&lt;/code&gt;, &lt;code&gt;mp3&lt;/code&gt;, &lt;code&gt;wav&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Flash &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;code&gt;swf&lt;/code&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7618-7773&amp;quot;} --&gt;
&lt;p&gt;
If you specify a filename that is not a supported media format, then it will be displayed as a link instead.
&lt;/p&gt;

&lt;p&gt;
By adding &lt;code&gt;?linkonly&lt;/code&gt; you provide a link to the media without displaying it inline
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{wiki:dokuwiki-128.png?linkonly}}&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:dokuwiki-128.png&quot; class=&quot;media mediafile mf_png&quot; title=&quot;wiki:dokuwiki-128.png (27.2 KB)&quot;&gt;dokuwiki-128.png&lt;/a&gt; This is just a link to the image.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Supported Media Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;supported_media_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7525-8078&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit15&quot; id=&quot;fallback_formats&quot;&gt;Fallback Formats&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Unfortunately not all browsers understand all video and audio formats. To mitigate the problem, you can upload your file in different formats for maximum browser compatibility.
&lt;/p&gt;

&lt;p&gt;
For example consider this embedded mp4 video:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{video.mp4|A funny video}}&lt;/pre&gt;

&lt;p&gt;
When you upload a &lt;code&gt;video.webm&lt;/code&gt; and &lt;code&gt;video.ogv&lt;/code&gt; next to the referenced &lt;code&gt;video.mp4&lt;/code&gt;, DokuWiki will automatically add them as alternatives so that one of the three files is understood by your browser.
&lt;/p&gt;

&lt;p&gt;
Additionally DokuWiki supports a «poster» image which will be shown before the video has started. That image needs to have the same filename as the video and be either a jpg or png file. In the example above a &lt;code&gt;video.jpg&lt;/code&gt; file would work.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Fallback Formats&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fallback_formats&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;8079-8809&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;lists&quot;&gt;Lists&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Dokuwiki supports ordered and unordered lists. To create a list item, indent your text by two spaces and use a &lt;code&gt;*&lt;/code&gt; for unordered lists or a &lt;code&gt;-&lt;/code&gt; for ordered ones.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; This is a list&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; The second item&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; You may have different levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; The same list but ordered&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Another item&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Just use indention for deeper levels&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; That&amp;#039;s it&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;code&quot;&gt;  * This is a list
  * The second item
    * You may have different levels
  * Another item

  - The same list but ordered
  - Another item
    - Just use indention for deeper levels
  - That&amp;#039;s it&lt;/pre&gt;

&lt;p&gt;
Also take a look at the &lt;a href=&quot;https://www.dokuwiki.org/faq:lists&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/faq:lists&quot;&gt;FAQ on list items&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Lists&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;lists&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8810-9469&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;text_conversions&quot;&gt;Text Conversions&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki can convert certain pre-defined characters or strings into images or other text or &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
The text to image conversion is mainly done for smileys. And the text to &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; conversion is used for typography replacements, but can be configured to use other &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; as well.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;9470-9774&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit18&quot; id=&quot;text_to_image_conversions&quot;&gt;Text to Image Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
DokuWiki converts commonly used &lt;a href=&quot;https://en.wikipedia.org/wiki/emoticon&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/emoticon&quot;&gt;emoticon&lt;/a&gt;s to their graphical equivalents. Those &lt;a href=&quot;https://www.dokuwiki.org/Smileys&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/Smileys&quot;&gt;Smileys&lt;/a&gt; and other images can be configured and extended. Here is an overview of Smileys included in DokuWiki:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm.png&quot; class=&quot;icon smiley&quot; alt=&quot;8-)&quot; /&gt;   8-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/eek.svg&quot; class=&quot;icon smiley&quot; alt=&quot;8-O&quot; /&gt;   8-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_1.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-(&quot; /&gt;   :-(  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_2.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-)&quot; /&gt;   :-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_3.png&quot; class=&quot;icon smiley&quot; alt=&quot;=)&quot; /&gt;    =)   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_4.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-/&quot; /&gt;   :-/  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_5.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-\&quot; /&gt;   :-\  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_6.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-?&quot; /&gt;   :-?  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_7.png&quot; class=&quot;icon smiley&quot; alt=&quot;:-D&quot; /&gt;   :-D  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-P   :-P  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-O   :-O  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-X   :-X  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; :-|   :-|  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ;-)   ;-)  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ^_^   ^_^  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; m(    m(   &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/question.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:?:&quot; /&gt;   :?:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt;   :!:  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/sm_8.png&quot; class=&quot;icon smiley&quot; alt=&quot;LOL&quot; /&gt;   LOL  &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;   FIXME &lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/deleteme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;DELETEME&quot; /&gt;  DELETEME &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to Image Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_image_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9775-10450&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit19&quot; id=&quot;text_to_html_conversions&quot;&gt;Text to HTML Conversions&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Typography: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can convert simple text characters to their typographically correct entities. Here is an example of recognized characters.
&lt;/p&gt;

&lt;p&gt;
→ ← ↔ ⇒ ⇐ ⇔ » « – — 640&amp;times;480 © ™ ®
«He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;…»
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;-&amp;gt; &amp;lt;- &amp;lt;-&amp;gt; =&amp;gt; &amp;lt;= &amp;lt;=&amp;gt; &amp;gt;&amp;gt; &amp;lt;&amp;lt; -- --- 640x480 (c) (tm) (r)
&amp;quot;He thought &amp;#039;It&amp;#039;s a man&amp;#039;s world&amp;#039;...&amp;quot;&lt;/pre&gt;

&lt;p&gt;
The same can be done to produce any kind of &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;, it just needs to be added to the &lt;a href=&quot;https://www.dokuwiki.org/entities&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/entities&quot;&gt;pattern file&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
There are three exceptions which do not come from that pattern file: multiplication entity (640&amp;times;480), &amp;#039;single&amp;#039; and «double quotes». They can be turned off through a &lt;a href=&quot;https://www.dokuwiki.org/config:typography&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/config:typography&quot;&gt;config option&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Text to HTML Conversions&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;text_to_html_conversions&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10451-11158&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;quoting&quot;&gt;Quoting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some times you want to mark some text to show it&amp;#039;s a reply or comment. You can use the following syntax:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;I think we should do it

&amp;gt; No we shouldn&amp;#039;t

&amp;gt;&amp;gt; Well, I say we should

&amp;gt; Really?

&amp;gt;&amp;gt; Yes!

&amp;gt;&amp;gt;&amp;gt; Then lets do it!&lt;/pre&gt;

&lt;p&gt;
I think we should do it
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 No we shouldn&amp;#039;t&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Well, I say we should&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Really?&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Yes!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 Then lets do it!&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Quoting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;quoting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;11159-11524&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;tables&quot;&gt;Tables&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki supports a simple syntax to create tables.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit22&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2       &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; colspan=&quot;2&quot;&gt; some colspan (note the double pipe) &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 3 Col 2     &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 3 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;11598-11829&amp;quot;} --&gt;
&lt;p&gt;
Table rows have to start and end with a &lt;code&gt;|&lt;/code&gt; for normal rows or a &lt;code&gt;^&lt;/code&gt; for headers.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2       ^ Heading 3          ^
| Row 1 Col 1    | Row 1 Col 2     | Row 1 Col 3        |
| Row 2 Col 1    | some colspan (note the double pipe) ||
| Row 3 Col 1    | Row 3 Col 2     | Row 3 Col 3        |&lt;/pre&gt;

&lt;p&gt;
To connect cells horizontally, just make the next cell completely empty as shown above. Be sure to have always the same amount of cell separators!
&lt;/p&gt;

&lt;p&gt;
Vertical tableheaders are possible, too.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit23&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;              &lt;/td&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 1            &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 2          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 3    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 1 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 4    &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; no colspan this time &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 5    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 2          &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:23,&amp;quot;range&amp;quot;:&amp;quot;12349-12592&amp;quot;} --&gt;
&lt;p&gt;
As you can see, it&amp;#039;s the cell separator before a cell which decides about the formatting:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;|              ^ Heading 1            ^ Heading 2          ^
^ Heading 3    | Row 1 Col 2          | Row 1 Col 3        |
^ Heading 4    | no colspan this time |                    |
^ Heading 5    | Row 2 Col 2          | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can have rowspans (vertically connected cells) by adding &lt;code&gt;:::&lt;/code&gt; into the cells below the one to which they should connect.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit24&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Heading 1      &lt;/th&gt;&lt;th class=&quot;col1 leftalign&quot;&gt; Heading 2                  &lt;/th&gt;&lt;th class=&quot;col2 leftalign&quot;&gt; Heading 3          &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 1 Col 1    &lt;/td&gt;&lt;td class=&quot;col1&quot; rowspan=&quot;3&quot;&gt; this cell spans vertically &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt; Row 1 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 2 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; Row 3 Col 1    &lt;/td&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Row 2 Col 3        &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:24,&amp;quot;range&amp;quot;:&amp;quot;13071-13346&amp;quot;} --&gt;
&lt;p&gt;
Apart from the rowspan syntax those cells should not contain anything else.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^ Heading 1      ^ Heading 2                  ^ Heading 3          ^
| Row 1 Col 1    | this cell spans vertically | Row 1 Col 3        |
| Row 2 Col 1    | :::                        | Row 2 Col 3        |
| Row 3 Col 1    | :::                        | Row 2 Col 3        |&lt;/pre&gt;

&lt;p&gt;
You can align the table contents, too. Just add at least two whitespaces at the opposite end of your text: Add two spaces on the left to align right, two spaces on the right to align left and two spaces at least at both ends for centered text.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit25&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot; colspan=&quot;3&quot;&gt;           Table with alignment           &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot;&gt;    center    &lt;/td&gt;&lt;td class=&quot;col2 leftalign&quot;&gt;left          &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;left          &lt;/td&gt;&lt;td class=&quot;col1 rightalign&quot;&gt;         right&lt;/td&gt;&lt;td class=&quot;col2 centeralign&quot;&gt;    center    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; xxxxxxxxxxxx &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table4&amp;quot;,&amp;quot;secid&amp;quot;:25,&amp;quot;range&amp;quot;:&amp;quot;13955-14142&amp;quot;} --&gt;
&lt;p&gt;
This is how it looks in the source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;^           Table with alignment           ^^^
|         right|    center    |left          |
|left          |         right|    center    |
| xxxxxxxxxxxx | xxxxxxxxxxxx | xxxxxxxxxxxx |&lt;/pre&gt;

&lt;p&gt;
Note: Vertical alignment is not supported.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Tables&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;tables&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;11525-14421&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit26&quot; id=&quot;no_formatting&quot;&gt;No Formatting&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
If you need to display text exactly like it is typed (without any formatting), enclose the area either with &lt;code&gt;&amp;lt;nowiki&amp;gt;&lt;/code&gt; tags or even simpler, with double percent signs &lt;code&gt;%%&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;

This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.

The same is true for //__this__ text// with a smiley ;-).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;nowiki&amp;gt;
This is some text which contains addresses like this: http://www.splitbrain.org and **formatting**, but nothing is done with it.
&amp;lt;/nowiki&amp;gt;
The same is true for %%//__this__ text// with a smiley ;-)%%.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;No Formatting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;no_formatting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:26,&amp;quot;range&amp;quot;:&amp;quot;14422-15077&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit27&quot; id=&quot;code_blocks&quot;&gt;Code Blocks&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
You can include code blocks into your documents by either indenting them by at least two spaces (like used for the previous examples) or by using the tags &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;This is preformatted code all spaces are preserved: like              &amp;lt;-this&lt;/pre&gt;
&lt;pre class=&quot;file&quot;&gt;This is pretty much the same, but you could use it to show that you quoted a file.&lt;/pre&gt;

&lt;p&gt;
Those blocks were created by this source:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  This is text is indented by two spaces.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;code&amp;gt;
This is preformatted code all spaces are preserved: like              &amp;lt;-this
&amp;lt;/code&amp;gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file&amp;gt;
This is pretty much the same, but you could use it to show that you quoted a file.
&amp;lt;/file&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:27,&amp;quot;range&amp;quot;:&amp;quot;15078-15819&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit28&quot; id=&quot;syntax_highlighting&quot;&gt;Syntax Highlighting&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can highlight sourcecode, which makes it easier to read. It uses the &lt;a href=&quot;http://qbnz.com/highlighter/&quot; class=&quot;urlextern&quot; title=&quot;http://qbnz.com/highlighter/&quot; rel=&quot;ugc nofollow&quot;&gt;GeSHi&lt;/a&gt; Generic Syntax Highlighter – so any language supported by GeSHi is supported. The syntax uses the same code and file blocks described in the previous section, but this time the name of the language syntax to be highlighted is included inside the tag, e.g. &lt;code&gt;&amp;lt;code java&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file java&amp;gt;&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code java&quot;&gt;&lt;span class=&quot;co3&quot;&gt;/**
 * The HelloWorldApp class implements an application that
 * simply displays &amp;quot;Hello World!&amp;quot; to the standard output.
 */&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;class&lt;/span&gt; HelloWorldApp &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;void&lt;/span&gt; main&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;String&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; args&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+system&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;System&lt;/span&gt;&lt;/a&gt;.&lt;span class=&quot;me1&quot;&gt;out&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Hello World!&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//Display the string.&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
The following language strings are currently recognized: &lt;em&gt;4cs 6502acme 6502kickass 6502tasm 68000devpac abap actionscript3 actionscript ada aimms algol68 apache applescript apt_sources arm asm asp asymptote autoconf autohotkey autoit avisynth awk bascomavr bash basic4gl batch bf biblatex bibtex blitzbasic bnf boo caddcl cadlisp ceylon cfdg cfm chaiscript chapel cil c_loadrunner clojure c_mac cmake cobol coffeescript c cpp cpp-qt cpp-winapi csharp css cuesheet c_winapi dart dcl dcpu16 dcs delphi diff div dos dot d ecmascript eiffel email epc e erlang euphoria ezt f1 falcon fo fortran freebasic freeswitch fsharp gambas gdb genero genie gettext glsl gml gnuplot go groovy gwbasic haskell haxe hicest hq9plus html html4strict html5 icon idl ini inno intercal io ispfpanel java5 java javascript jcl j jquery julia kixtart klonec klonecpp kotlin latex lb ldif lisp llvm locobasic logtalk lolcode lotusformulas lotusscript lscript lsl2 lua m68k magiksf make mapbasic mathematica matlab mercury metapost mirc mk-61 mmix modula2 modula3 mpasm mxml mysql nagios netrexx newlisp nginx nimrod nsis oberon2 objc objeck ocaml-brief ocaml octave oobas oorexx oracle11 oracle8 oxygene oz parasail parigp pascal pcre perl6 perl per pf phix php-brief php pic16 pike pixelbender pli plsql postgresql postscript povray powerbuilder powershell proftpd progress prolog properties providex purebasic pycon pys60 python qbasic qml q racket rails rbs rebol reg rexx robots roff rpmspec rsplus ruby rust sas sass scala scheme scilab scl sdlbasic smalltalk smarty spark sparql sql sshconfig standardml stonescript swift systemverilog tclegg tcl teraterm texgraph text thinbasic tsql twig typoscript unicon upc urbi uscript vala vbnet vb vbscript vedit verilog vhdl vim visualfoxpro visualprolog whitespace whois winbatch wolfram xbasic xml xojo xorg_conf xpp yaml z80 zxbasic&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
There are additional &lt;a href=&quot;https://www.dokuwiki.org/syntax_highlighting&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/syntax_highlighting&quot;&gt;advanced options&lt;/a&gt; available for syntax highlighting, such as highlighting lines or adding line numbers.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Highlighting&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_highlighting&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:28,&amp;quot;range&amp;quot;:&amp;quot;15820-18605&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit29&quot; id=&quot;downloadable_code_blocks&quot;&gt;Downloadable Code Blocks&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
When you use the &lt;code&gt;&amp;lt;code&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; syntax as above, you might want to make the shown code available for download as well. You can do this by specifying a file name after language code like this:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;file php myexample.php&amp;gt;
&amp;lt;?php echo &amp;quot;hello world!&amp;quot;; ?&amp;gt;
&amp;lt;/file&amp;gt;&lt;/pre&gt;
&lt;dl class=&quot;file&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:xref:dokuwiki:data:pages:wiki:syntax&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;myexample.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
If you don&amp;#039;t want any highlighting but want a downloadable file, specify a dash (&lt;code&gt;-&lt;/code&gt;) as the language code: &lt;code&gt;&amp;lt;code - myfile.foo&amp;gt;&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Downloadable Code Blocks&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;downloadable_code_blocks&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:7,&amp;quot;secid&amp;quot;:29,&amp;quot;range&amp;quot;:&amp;quot;18606-19135&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit30&quot; id=&quot;rss_atom_feed_aggregation&quot;&gt;RSS/ATOM Feed Aggregation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:xref:dokuwiki:data:pages:wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; can integrate data from external XML feeds. For parsing the XML feeds, &lt;a href=&quot;http://simplepie.org/&quot; class=&quot;urlextern&quot; title=&quot;http://simplepie.org/&quot; rel=&quot;ugc nofollow&quot;&gt;SimplePie&lt;/a&gt; is used. All formats understood by SimplePie can be used in DokuWiki as well. You can influence the rendering by multiple additional space separated parameters:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit31&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Parameter  &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; any number &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; will be used as maximum number items to show, defaults to 8 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; reverse    &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; display the last items in the feed first &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; author     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item authors names &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; date       &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show item dates &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; description&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; show the item description. All &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; tags will be stripped &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; nosort     &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; do not sort the items in the feed &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; &lt;em&gt;n&lt;/em&gt;[dhm] &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; refresh period, where d=days, h=hours, m=minutes. (e.g. 12h = 12 hours). &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table5&amp;quot;,&amp;quot;secid&amp;quot;:31,&amp;quot;range&amp;quot;:&amp;quot;19456-19909&amp;quot;} --&gt;
&lt;p&gt;
The refresh period defaults to 4 hours. Any value below 10 minutes will be treated as 10 minutes. &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; will generally try to supply a cached version of a page, obviously this is inappropriate when the page contains dynamic external content. The parameter tells &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:dokuwiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:dokuwiki&quot; data-wiki-id=&quot;wiki:dokuwiki&quot;&gt;DokuWiki&lt;/a&gt; to re-render the page if it is more than &lt;em&gt;refresh period&lt;/em&gt; since the page was last rendered.
&lt;/p&gt;

&lt;p&gt;
By default the feed will be sorted by date, newest items first. You can sort it by oldest first using the &lt;code&gt;reverse&lt;/code&gt; parameter, or display the feed as is with &lt;code&gt;nosort&lt;/code&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Example:&lt;/strong&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{rss&amp;gt;http://slashdot.org/index.rss 5 author date 1h }}&lt;/pre&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://tech.slashdot.org/story/26/06/05/211249/the-us-military-quietly-turned-gps-into-a-global-numbers-station-evidence-suggests?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://tech.slashdot.org/story/26/06/05/211249/the-us-military-quietly-turned-gps-into-a-global-numbers-station-evidence-suggests?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;The US Military Quietly Turned GPS Into a Global &amp;#039;Numbers Station,&amp;#039; Evidence Suggests&lt;/a&gt;  — BeauHD (2026/06/06 02:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://hardware.slashdot.org/story/26/06/05/2017239/google-will-pay-spacex-920-million-per-month-for-compute?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://hardware.slashdot.org/story/26/06/05/2017239/google-will-pay-spacex-920-million-per-month-for-compute?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;Google Will Pay SpaceX $920 Million Per Month For Compute&lt;/a&gt;  — BeauHD (2026/06/06 01:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://it.slashdot.org/story/26/06/05/202230/bitcoin-falls-to-60000-as-zcash-bug-rocks-crypto?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://it.slashdot.org/story/26/06/05/202230/bitcoin-falls-to-60000-as-zcash-bug-rocks-crypto?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;Bitcoin Falls To $60,000 As Zcash Bug Rocks Crypto&lt;/a&gt;  — BeauHD (2026/06/06 00:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://news.slashdot.org/story/26/06/05/1910242/340-local-news-outlets-now-blocking-the-internet-archive?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://news.slashdot.org/story/26/06/05/1910242/340-local-news-outlets-now-blocking-the-internet-archive?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;340 Local News Outlets Now Blocking the Internet Archive&lt;/a&gt;  — BeauHD (2026/06/05 23:00)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://news.slashdot.org/story/26/06/05/1839258/govuk-goes-dutch-on-payments-as-it-dumps-stripe?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; class=&quot;urlextern&quot; title=&quot;https://news.slashdot.org/story/26/06/05/1839258/govuk-goes-dutch-on-payments-as-it-dumps-stripe?utm_source=rss1.0mainlinkanon&amp;amp;utm_medium=feed&quot; rel=&quot;ugc nofollow&quot;&gt;GOV.UK Goes Dutch On Payments As It Dumps Stripe&lt;/a&gt;  — BeauHD (2026/06/05 22:00)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;RSS\/ATOM Feed Aggregation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rss_atom_feed_aggregation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:30,&amp;quot;range&amp;quot;:&amp;quot;19136-20601&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit32&quot; id=&quot;control_macros&quot;&gt;Control Macros&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Some syntax influences how DokuWiki renders a page without creating any output it self. The following control macros are availble:
&lt;/p&gt;
&lt;div class=&quot;table sectionedit33&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; Macro           &lt;/th&gt;&lt;th class=&quot;col1&quot;&gt; Description &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt; ~~NOTOC~~   &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; If this macro is found on the page, no table of contents will be created &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; ~~NOCACHE~~ &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; DokuWiki caches all output by default. Sometimes this might not be wanted (eg. when the &amp;lt;php&amp;gt; syntax above is used), adding this macro will force DokuWiki to rerender a page on every call &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table6&amp;quot;,&amp;quot;secid&amp;quot;:33,&amp;quot;range&amp;quot;:&amp;quot;20762-21104&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Control Macros&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;control_macros&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:32,&amp;quot;range&amp;quot;:&amp;quot;20602-21105&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit34&quot; id=&quot;syntax_plugins&quot;&gt;Syntax Plugins&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
DokuWiki&amp;#039;s syntax can be extended by &lt;a href=&quot;https://www.dokuwiki.org/plugins&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/plugins&quot;&gt;Plugins&lt;/a&gt;. How the installed plugins are used is described on their appropriate description pages. The following syntax plugins are available in this particular DokuWiki installation:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:autotooltip&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:autotooltip&quot; rel=&quot;ugc nofollow&quot;&gt;Auto-Tooltip&lt;/a&gt; &lt;em&gt;2026-01-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#64;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#46;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&quot; class=&quot;mail&quot; title=&quot;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#64;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&amp;#46;&amp;#117;&amp;#110;&amp;#100;&amp;#105;&amp;#115;&amp;#99;&amp;#108;&amp;#111;&amp;#115;&amp;#101;&amp;#100;&quot;&gt;Eli Fenton&lt;/a&gt;&lt;br/&gt;
Syntax and helper plugins for tooltips, including automatically generated tips based on page abstract.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:cellbg&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:cellbg&quot; rel=&quot;ugc nofollow&quot;&gt;Cells background color plugin&lt;/a&gt; &lt;em&gt;2013-10-09&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#64;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#64;&amp;#100;&amp;#114;&amp;#52;&amp;#107;&amp;#101;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;dr4Ke&lt;/a&gt;&lt;br/&gt;
Sets background of a cell with a specific color&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:codeprettify&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:codeprettify&quot; rel=&quot;ugc nofollow&quot;&gt;Code Prettifier&lt;/a&gt; &lt;em&gt;2023-09-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot; class=&quot;mail&quot; title=&quot;&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
syntax highlighting of source code snippets in wiki page using Javascript code prettifier&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:dbquery&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:dbquery&quot; rel=&quot;ugc nofollow&quot;&gt;dbquery plugin&lt;/a&gt; &lt;em&gt;2025-07-24&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Display query results from a database&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:description&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:description&quot; rel=&quot;ugc nofollow&quot;&gt;description plugin&lt;/a&gt; &lt;em&gt;2025-05-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#112;&amp;#114;&amp;#105;&amp;#110;&amp;#115;&amp;#64;&amp;#117;&amp;#115;&amp;#101;&amp;#114;&amp;#115;&amp;#46;&amp;#115;&amp;#102;&amp;#46;&amp;#110;&amp;#101;&amp;#116;&quot;&gt;Mark C. Prins, Ikuo Obataya, Matthias Schulte&lt;/a&gt;&lt;br/&gt;
Add a specified string to a description meta header&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:diagrams&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:diagrams&quot; rel=&quot;ugc nofollow&quot;&gt;Diagrams plugin&lt;/a&gt; &lt;em&gt;2025-10-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Innovakom + CosmoCode&lt;/a&gt;&lt;br/&gt;
Embed diagrams.net editor (formerly draw.io)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://nikita.melnichenko.name/projects/dokuwiki-diagram/index.php&quot; class=&quot;urlextern&quot; title=&quot;http://nikita.melnichenko.name/projects/dokuwiki-diagram/index.php&quot; rel=&quot;ugc nofollow&quot;&gt;Diagram plugin&lt;/a&gt; &lt;em&gt;2021-02-21&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#117;&amp;#112;&amp;#112;&amp;#111;&amp;#114;&amp;#116;&amp;#64;&amp;#109;&amp;#101;&amp;#108;&amp;#110;&amp;#105;&amp;#99;&amp;#104;&amp;#101;&amp;#110;&amp;#107;&amp;#111;&amp;#46;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#117;&amp;#112;&amp;#112;&amp;#111;&amp;#114;&amp;#116;&amp;#64;&amp;#109;&amp;#101;&amp;#108;&amp;#110;&amp;#105;&amp;#99;&amp;#104;&amp;#101;&amp;#110;&amp;#107;&amp;#111;&amp;#46;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&quot;&gt;Nikita Melnichenko&lt;/a&gt;&lt;br/&gt;
Constructs diagrams&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:discussion&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/plugin:discussion&quot; rel=&quot;ugc nofollow&quot;&gt;discussion plugin&lt;/a&gt; &lt;em&gt;2021-12-31&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gerrit Uitslag, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner, Matthias Schulte&lt;/a&gt;&lt;br/&gt;
Provides discussion funtionality for wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;DokuTeaser Plugin&lt;/a&gt; &lt;em&gt;2016-01-16&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
A plugin for internal use on dokuwiki.org only&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://github.com/mmedvede/dokuwiki-plugin-fontawesome&quot; class=&quot;urlextern&quot; title=&quot;http://github.com/mmedvede/dokuwiki-plugin-fontawesome&quot; rel=&quot;ugc nofollow&quot;&gt;fontawesome plugin&lt;/a&gt; &lt;em&gt;2013-10-10&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#109;&amp;#101;&amp;#100;&amp;#118;&amp;#101;&amp;#100;&amp;#101;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#117;&amp;#109;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#109;&amp;#101;&amp;#100;&amp;#118;&amp;#101;&amp;#100;&amp;#101;&amp;#64;&amp;#99;&amp;#115;&amp;#46;&amp;#117;&amp;#109;&amp;#108;&amp;#46;&amp;#101;&amp;#100;&amp;#117;&quot;&gt;Mikhail Medvedev&lt;/a&gt;&lt;br/&gt;
Embed Font Awesome icons&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:gallery&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:gallery&quot; rel=&quot;ugc nofollow&quot;&gt;Gallery Plugin&lt;/a&gt; &lt;em&gt;2024-04-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Creates a gallery of images from a namespace or RSS/ATOM feed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/Sideboard/dokuwiki-plugin-htmldetailstag&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/Sideboard/dokuwiki-plugin-htmldetailstag&quot; rel=&quot;ugc nofollow&quot;&gt;HTML Details Tag Plugin&lt;/a&gt; &lt;em&gt;2021-03-18&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#114;&amp;#101;&amp;#118;&amp;#111;&amp;#108;&amp;#117;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#97;&amp;#114;&amp;#116;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#114;&amp;#101;&amp;#118;&amp;#111;&amp;#108;&amp;#117;&amp;#116;&amp;#105;&amp;#111;&amp;#110;&amp;#97;&amp;#114;&amp;#116;&amp;#115;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Sascha Klawohn&lt;/a&gt;&lt;br/&gt;
Use the HTML &amp;lt;details&amp;gt; and &amp;lt;summary&amp;gt; tag for toggling information&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:htmlmetatags&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:htmlmetatags&quot; rel=&quot;ugc nofollow&quot;&gt;htmlmetatags plugin&lt;/a&gt; &lt;em&gt;2024-03-04&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#104;&amp;#101;&amp;#105;&amp;#107;&amp;#111;&amp;#46;&amp;#104;&amp;#101;&amp;#105;&amp;#110;&amp;#122;&amp;#64;&amp;#115;&amp;#111;&amp;#102;&amp;#116;&amp;#50;&amp;#99;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#104;&amp;#101;&amp;#105;&amp;#107;&amp;#111;&amp;#46;&amp;#104;&amp;#101;&amp;#105;&amp;#110;&amp;#122;&amp;#64;&amp;#115;&amp;#111;&amp;#102;&amp;#116;&amp;#50;&amp;#99;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Heiko Heinz&lt;/a&gt;&lt;br/&gt;
Set html and open graph meta tags.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:htmlok&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:htmlok&quot; rel=&quot;ugc nofollow&quot;&gt;htmlok plugin&lt;/a&gt; &lt;em&gt;2023-05-10&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;saggi, glen&lt;/a&gt;&lt;br/&gt;
Allows embed HTML and PHP&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:icons&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:icons&quot; rel=&quot;ugc nofollow&quot;&gt;Icons Plugin&lt;/a&gt; &lt;em&gt;2024-10-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#103;&amp;#105;&amp;#117;&amp;#115;&amp;#101;&amp;#112;&amp;#112;&amp;#101;&amp;#46;&amp;#100;&amp;#105;&amp;#116;&amp;#101;&amp;#114;&amp;#108;&amp;#105;&amp;#122;&amp;#122;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#105;&amp;#117;&amp;#115;&amp;#101;&amp;#112;&amp;#112;&amp;#101;&amp;#46;&amp;#100;&amp;#105;&amp;#116;&amp;#101;&amp;#114;&amp;#108;&amp;#105;&amp;#122;&amp;#122;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Giuseppe Di Terlizzi&lt;/a&gt;&lt;br/&gt;
Embed icons in Dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:info&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:info&quot; rel=&quot;ugc nofollow&quot;&gt;Info Plugin&lt;/a&gt; &lt;em&gt;2020-06-04&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays information about various DokuWiki internals&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:meta&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:meta&quot; rel=&quot;ugc nofollow&quot;&gt;Meta plugin&lt;/a&gt; &lt;em&gt;2024-08-07&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann&lt;/a&gt;&lt;br/&gt;
Set Metadata for the current page. (previous authors: Esther Brunner, Gina Häußge, Michael Klier)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:note&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:note&quot; rel=&quot;ugc nofollow&quot;&gt;Note Plugin&lt;/a&gt; &lt;em&gt;2024-04-15&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot; class=&quot;mail&quot; title=&quot;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#114;&amp;#105;&amp;#98;&amp;#64;&amp;#97;&amp;#110;&amp;#97;&amp;#101;&amp;#108;&amp;#46;&amp;#101;&amp;#117;&quot;&gt;Anael Mobilia&lt;/a&gt;&lt;br/&gt;
Add Note/Important/Tip/Warning Capability (DIV+CSS box)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:pagelist&quot; rel=&quot;ugc nofollow&quot;&gt;Pagelist Plugin&lt;/a&gt; &lt;em&gt;2023-08-27&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Matthias Schulte, Michael Hamann, Michael Klier, Gina Haeussge&lt;/a&gt;&lt;br/&gt;
Lists pages in a nice formatted way&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:phpwikify&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:phpwikify&quot; rel=&quot;ugc nofollow&quot;&gt;PHP Wikify&lt;/a&gt; &lt;em&gt;2020-06-05&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#116;&amp;#114;&amp;#97;&amp;#105;&amp;#108;&amp;#106;&amp;#101;&amp;#101;&amp;#112;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#116;&amp;#114;&amp;#97;&amp;#105;&amp;#108;&amp;#106;&amp;#101;&amp;#101;&amp;#112;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Trailjeep&lt;/a&gt;&lt;br/&gt;
Allows one the possibility of having output of PHP scripts parsed&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:repository&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:repository&quot; rel=&quot;ugc nofollow&quot;&gt;Repository plugin&lt;/a&gt; &lt;em&gt;2024-02-09&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#110;&amp;#100;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#104;&amp;#97;&amp;#107;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#110;&amp;#100;&amp;#101;&amp;#108;&amp;#108;&amp;#46;&amp;#104;&amp;#97;&amp;#107;&amp;#97;&amp;#110;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Andreas Gohr/Håkan Sandell&lt;/a&gt;&lt;br/&gt;
Helps organizing the plugin and template repository&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:rating&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:rating&quot; rel=&quot;ugc nofollow&quot;&gt;rating plugin&lt;/a&gt; &lt;em&gt;2016-01-13&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#103;&amp;#111;&amp;#104;&amp;#114;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#103;&amp;#111;&amp;#104;&amp;#114;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Allows rating a page&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/tschinz/dokuwiki_stars_plugin&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/tschinz/dokuwiki_stars_plugin&quot; rel=&quot;ugc nofollow&quot;&gt;Stars2 Plugin&lt;/a&gt; &lt;em&gt;2025-02-07&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#122;&amp;#97;&amp;#115;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot; class=&quot;mail&quot; title=&quot;&amp;#122;&amp;#97;&amp;#115;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&quot;&gt;Zahno Silvan&lt;/a&gt;&lt;br/&gt;
Embedding Rating Stars&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;http://www.dokuwiki.org/plugin:statdisplay&quot; class=&quot;urlextern&quot; title=&quot;http://www.dokuwiki.org/plugin:statdisplay&quot; rel=&quot;ugc nofollow&quot;&gt;DokuWiki statdisplay plugin&lt;/a&gt; &lt;em&gt;2022-12-12&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Displays log statistics about your DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:stepbystep&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:stepbystep&quot; rel=&quot;ugc nofollow&quot;&gt;StepByStep plugin&lt;/a&gt; &lt;em&gt;2023-09-25&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#115;&amp;#97;&amp;#103;&amp;#103;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#120;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;saggi&lt;/a&gt;&lt;br/&gt;
Displays step-by-step tutorials, spoilers, or more information about a topic&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://dokuwiki.org/plugin:tablelayout&quot; class=&quot;urlextern&quot; title=&quot;https://dokuwiki.org/plugin:tablelayout&quot; rel=&quot;ugc nofollow&quot;&gt;tablelayout plugin&lt;/a&gt; &lt;em&gt;2022-03-28&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#64;&amp;#99;&amp;#111;&amp;#115;&amp;#109;&amp;#111;&amp;#99;&amp;#111;&amp;#100;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Große&lt;/a&gt;&lt;br/&gt;
Set the width of table columns and set which lines to fix&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:tag&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:tag&quot; rel=&quot;ugc nofollow&quot;&gt;Tag Plugin&lt;/a&gt; &lt;em&gt;2023-10-17&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot; class=&quot;mail&quot; title=&quot;&amp;#109;&amp;#105;&amp;#99;&amp;#104;&amp;#97;&amp;#101;&amp;#108;&amp;#64;&amp;#99;&amp;#111;&amp;#110;&amp;#116;&amp;#101;&amp;#110;&amp;#116;&amp;#45;&amp;#115;&amp;#112;&amp;#97;&amp;#99;&amp;#101;&amp;#46;&amp;#100;&amp;#101;&quot;&gt;Michael Hamann, Gina Häussge, Christopher Smith, Michael Klier, Esther Brunner&lt;/a&gt;&lt;br/&gt;
tag wiki pages&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:translation&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:translation&quot; rel=&quot;ugc nofollow&quot;&gt;Translation Plugin&lt;/a&gt; &lt;em&gt;2025-05-20&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Supports the easy setup of a multi-language wiki.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:typography&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:typography&quot; rel=&quot;ugc nofollow&quot;&gt;Typography plugin&lt;/a&gt; &lt;em&gt;2020-07-31&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot; class=&quot;mail&quot; title=&quot;&amp;#38;&amp;#108;&amp;#116;&amp;#59;&amp;#115;&amp;#97;&amp;#104;&amp;#97;&amp;#114;&amp;#97;&amp;#46;&amp;#115;&amp;#97;&amp;#116;&amp;#111;&amp;#115;&amp;#104;&amp;#105;&amp;#64;&amp;#103;&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#46;&amp;#99;&amp;#111;&amp;#109;&amp;#38;&amp;#103;&amp;#116;&amp;#59;&quot;&gt;Satoshi Sahara&lt;/a&gt;&lt;br/&gt;
Enable typesetting capabilities with CSS font properties such as font face, size, weight, and color of text&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:wrap&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:wrap&quot; rel=&quot;ugc nofollow&quot;&gt;Wrap Plugin&lt;/a&gt; &lt;em&gt;2023-08-13&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#105;&amp;#107;&amp;#97;&amp;#64;&amp;#115;&amp;#101;&amp;#108;&amp;#102;&amp;#116;&amp;#104;&amp;#105;&amp;#110;&amp;#107;&amp;#101;&amp;#114;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Anika Henke&lt;/a&gt;&lt;br/&gt;
Universal plugin which combines functionalities of many other plugins. Wrap wiki text inside containers (divs or spans) and give them a class (choose from a variety of preset classes), a width and/or a language with its associated text direction.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://www.dokuwiki.org/plugin:xref&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:xref&quot; rel=&quot;ugc nofollow&quot;&gt;PHPXref Plugin&lt;/a&gt; &lt;em&gt;2024-04-30&lt;/em&gt;  — &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andreas Gohr&lt;/a&gt;&lt;br/&gt;
Makes linking to a PHPXref generated API doc easy.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax Plugins&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax_plugins&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:34,&amp;quot;range&amp;quot;:&amp;quot;21106-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;This is a footnote&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;when the aspect ratio of the given width and height doesn&amp;#039;t match that of the image, it will be cropped to the new ratio before resizing&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Mon, 15 May 2023 17:13:12 +0000</pubDate>
        </item>
        <item>
            <title>administration</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:administration&amp;rev=1723675981</link>
            <description>
&lt;h2 class=&quot;sectionedit1&quot; id=&quot;настройка_прав_доступа_к_папкам_и_файлам&quot;&gt;Настройка прав доступа к папкам и файлам&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_sh&quot;&gt;dokuwiki_permissions.sh&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code sh&quot;&gt;#!/bin/bash
&amp;nbsp;
root_path=/opt/dokuwiki/
&amp;nbsp;
chown -R www-data:www-data $root_path
find $root_path -type d -exec chmod -v 770 {} \;
find $root_path -type f -exec chmod -v 660 {} \;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0430\u043f\u043a\u0430\u043c \u0438 \u0444\u0430\u0439\u043b\u0430\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_\u043f\u0440\u0430\u0432_\u0434\u043e\u0441\u0442\u0443\u043f\u0430_\u043a_\u043f\u0430\u043f\u043a\u0430\u043c_\u0438_\u0444\u0430\u0439\u043b\u0430\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-307&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;настройка_http_сервера&quot;&gt;Настройка HTTP сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
1. Нужно создать файл:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=1&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf&quot;&gt;/opt/dokuwiki/conf/apache.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code conf&quot;&gt;AliasMatch ^/dokuwiki/sites/[^/]+$      /opt/dokuwiki/
AliasMatch ^/dokuwiki/sites/[^/]+/(.*)$ /opt/dokuwiki/$1
Alias	/dokuwiki	/opt/dokuwiki/
&amp;nbsp;
&amp;lt;Directory /opt/dokuwiki/&amp;gt;
	Options +FollowSymLinks
	AllowOverride All
	order allow,deny
	Allow from all
	&amp;lt;IfModule mod_rewrite.c&amp;gt;
		# Uncomment to implement server-side URL rewriting
		# (cf. &amp;lt;http://www.dokuwiki.org/config:userewrite&amp;gt;).
		# Do *not* mix that with multisite!
		#RewriteEngine on
		#RewriteBase /dokuwiki
		#RewriteRule ^lib                      - [L]
		#RewriteRule ^doku.php                 - [L]
		#RewriteRule ^feed.php                 - [L]
		#RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
		#RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1 [QSA,L]
		#RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&amp;amp;id=$2 [QSA,L]
		#RewriteRule ^$                        doku.php  [L]
		#RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
	&amp;lt;/IfModule&amp;gt;
&amp;lt;/Directory&amp;gt;
&amp;nbsp;
&amp;lt;Directory /opt/dokuwiki/bin&amp;gt;
	Deny from all
&amp;lt;/Directory&amp;gt;
&amp;nbsp;
&amp;lt;Directory /opt/dokuwiki/data&amp;gt;
	Deny from all
&amp;lt;/Directory&amp;gt;
&amp;nbsp;
&amp;lt;VirtualHost *:80&amp;gt;
	DocumentRoot /opt/dokuwiki/
	ServerName wiki.domain.ru
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
2. Выполнить следующие действия:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=2&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_sh&quot;&gt;dokuwiki_install.sh&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code sh&quot;&gt;#!/bin/bash
&amp;nbsp;
# Создаем символическую ссылку
ln -s /opt/dokuwiki/conf/apache.conf /etc/apache2/sites-available/dokuwiki.conf
# Разрешаем сайт
a2ensite dokuwiki
# Перезапуск 
service apache2 reload&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 HTTP \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430_http_\u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;308-1993&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;настройка&quot;&gt;Настройка&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Начальная настройка: &lt;a href=&quot;http://wiki/dokuwiki/install.php?l=ru&quot; class=&quot;urlextern&quot; title=&quot;http://wiki/dokuwiki/install.php?l=ru&quot; rel=&quot;ugc nofollow&quot;&gt;http://wiki/dokuwiki/install.php?l=ru&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1994-2102&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;назначение_папок_и_файлов&quot;&gt;Назначение папок и файлов&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/wiki:devel:dirlayout&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/wiki:devel:dirlayout&quot; rel=&quot;ugc nofollow&quot;&gt;Назначение папок&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&#039;plugin_tablelayout_placeholder&#039; data-tablelayout=&quot;{&amp;quot;rowsHeaderSource&amp;quot;:&amp;quot;Auto&amp;quot;}&quot;&gt;&lt;/div&gt;&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Папка с настройками	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;conf/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Основные настройки	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;conf/local.php&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Папка с данными	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Старые версии страниц	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/attic/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Страницы	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/pages/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Кэш (html)	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/cache/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Индексы	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/index/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Блокировки	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/locks/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Файлы	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/media/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Старые версии файлов	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/media_attic/&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row10&quot;&gt;
		&lt;td class=&quot;col0 leftalign&quot;&gt;Временные файлы	&lt;/td&gt;&lt;td class=&quot;col1&quot;&gt;data/tmp/&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2290-2739&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043e\u043a \u0438 \u0444\u0430\u0439\u043b\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435_\u043f\u0430\u043f\u043e\u043a_\u0438_\u0444\u0430\u0439\u043b\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2103-2739&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;ldap&quot;&gt;LDAP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Авторизация через LDAP
&lt;/p&gt;

&lt;p&gt;
Установка:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt-get install php5-ldap
&lt;/pre&gt;

&lt;p&gt;
Пример для сервера OpenLDAP:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;local.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co2&quot;&gt;# Имя группы администраторов
&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;superuser&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;@dokuwiki-admin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co2&quot;&gt;# LDAP
&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;openregister&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;authtype&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;    &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;version&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;server&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Сервер_LDAP&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;port&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;     &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;389&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;binddn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;cn=admin,dc=domain&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;bindpw&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ПАРОЛЬ&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;usertree&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;cn=%{user},ou=users,dc=domain&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;userfilter&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;  &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(&amp;amp;(cn=%{user})(objectClass=posixAccount))&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;grouptree&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;ou=groups,dc=domain&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;auth&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;ldap&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;groupfilter&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(|(memberUid=%{user})(gidNumber=%{gid}))&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co2&quot;&gt;# $conf[&#039;auth&#039;][&#039;ldap&#039;][&#039;debug&#039;]      = 1;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/wiki:auth:ldap&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/wiki:auth:ldap&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/wiki:auth:ldap&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;LDAP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ldap&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;2740-3722&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;php&quot;&gt;PHP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Настройка PHPsoftware:development:ps_pycharm:php:php_setting
&lt;/p&gt;

&lt;p&gt;
Преобразование &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; средствами веб-сервера
Для того, чтобы привести &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; к «красивому» виду можно включить Преобразование &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; средствами веб-сервера, более подробно описано по адресу: &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-преобразование
&lt;/p&gt;

&lt;p&gt;
Добавить модуль в &lt;a href=&quot;https://sysadminmosaic.ru/apache/apache&quot; class=&quot;urlextern&quot; title=&quot;https://sysadminmosaic.ru/apache/apache&quot; rel=&quot;ugc nofollow&quot;&gt;Apache&lt;/a&gt;
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;a2enmod rewrite
service apache2 restart&lt;/pre&gt;

&lt;p&gt;
Разрешить преобразование:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=6&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;dokuwiki/local.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;userewrite&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;1&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Включить правила:
&lt;/p&gt;

&lt;p&gt;
В файле dokuwiki/htaccess нужно убрать символ комментария с следующих строк:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_&quot;&gt;dokuwiki/htaccess&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code htaccess&quot;&gt;RewriteEngine on
&amp;nbsp;
# Путь dokuwiki на веб сервере
RewriteBase /dokuwiki
&amp;nbsp;
RewriteCond %{HTTPS} !=on
RewriteRule ^lib/exe/xmlrpc.php$      https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&amp;amp;id=$2  [QSA,L]
RewriteRule ^$                        doku.php  [L]
RewriteCond %{REQUEST_FILENAME}       !-f
RewriteCond %{REQUEST_FILENAME}       !-d
RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
RewriteRule ^index.php$               doku.php&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
После этого &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; будут выглядеть примерно так:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://dokuwiki/start:1&lt;/pre&gt;

&lt;p&gt;
При этом старые &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;, например:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://dokuwiki/doku.php?id=start:1&lt;/pre&gt;

&lt;p&gt;
тоже будут работать.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;PHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3723-5559&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;резервное_копирование&quot;&gt;Резервное копирование&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Список папок:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/dokuwiki/dokuwiki&lt;/pre&gt;

&lt;p&gt;
Исключение:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;/opt/dokuwiki/data/cache
/opt/dokuwiki/data/locks
/opt/dokuwiki/data/tmp&lt;/pre&gt;

&lt;p&gt;
Дополнительно можно использовать расширение &lt;a href=&quot;https://www.dokuwiki.org/plugin:backup&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:backup&quot; rel=&quot;ugc nofollow&quot;&gt;BackupTool for DokuWiki&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435_\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:10,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5560-5938&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;восстановление&quot;&gt;Восстановление&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
При восстановлении данных из резервной копии необходимо создать папки:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;mkdir /opt/dokuwiki/data/locks
mkdir /opt/dokuwiki/data/tmp&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;5939-6185&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;шаблоны&quot;&gt;Шаблоны&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/template:default&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/template:default&quot; rel=&quot;ugc nofollow&quot;&gt;Внешняя ссылка&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0428\u0430\u0431\u043b\u043e\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0448\u0430\u0431\u043b\u043e\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6186-6287&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;расширения&quot;&gt;Расширения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://sysadminmosaic.ru/dokuwiki/plugins&quot; class=&quot;urlextern&quot; title=&quot;https://sysadminmosaic.ru/dokuwiki/plugins&quot; rel=&quot;ugc nofollow&quot;&gt;Расширения&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;6288-6389&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit12&quot; id=&quot;writer2dokuwiki&quot;&gt;Writer2DokuWiki&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Преобразование синтаксиса форматирования LibreOffice в формат DocuWiki: Расширение Writer2DokuWiki
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Установка&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
В меню Сервис\Управление расширениями…\Добавить, открыть Writer2DokuWiki.oxt, перезапустить LibreOffice
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Выполнение&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
Выбрать меню Сервис\Дополнения\Writer2DokuWiki
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Writer2DokuWiki&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;writer2dokuwiki&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;6390-6864&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;проблема_в_версии_0020140505a_dfsg-4_deb8u1&quot;&gt;Проблема в версии 0.0.20140505.a+dfsg-4+deb8u1&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Проблема возникает при попытке загрузить файл.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Пакет: dokuwiki_0.0.20140505.a+dfsg-4+deb8u1_all.deb&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki: 2014-05-05a «Ponder Stibbons»&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Решение проблемы: нужно применить заплатку: &lt;a href=&quot;https://sysadminmosaic.ru/_media/dokuwiki/ajax.diff&quot; class=&quot;urlextern&quot; title=&quot;https://sysadminmosaic.ru/_media/dokuwiki/ajax.diff&quot; rel=&quot;ugc nofollow&quot;&gt;ajax.diff&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
cd /usr/share/dokuwiki/lib/exe
patch ajax.php&amp;lt;ajax.diff
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 0.0.20140505.a+dfsg-4+deb8u1&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430_\u0432_\u0432\u0435\u0440\u0441\u0438\u0438_0020140505a_dfsg-4_deb8u1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;6865-7338&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;ошибки_расширений_после_перехода_на_php7&quot;&gt;Ошибки расширений после перехода на PHP7&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В общем случае нужна замена аргументов функций.
&lt;/p&gt;

&lt;p&gt;
Образец:
&lt;/p&gt;

&lt;p&gt;
Заменяем
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;function register(&amp;amp;$c)&lt;/pre&gt;

&lt;p&gt;
на
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;function register(Doku_Event_Handler $c)&lt;/pre&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.patreon.com/posts/declaration-be-20638123&quot; class=&quot;urlextern&quot; title=&quot;https://www.patreon.com/posts/declaration-be-20638123&quot; rel=&quot;ugc nofollow&quot;&gt;Declaration should be compatible with... | Andreas Gohr on Patreon&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://forum.dokuwiki.org/thread/15046&quot; class=&quot;urlextern&quot; title=&quot;https://forum.dokuwiki.org/thread/15046&quot; rel=&quot;ugc nofollow&quot;&gt;Error Messages for plugins after update to PHP7 - DokuWiki User Forum&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0448\u0438\u0431\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 PHP7&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0448\u0438\u0431\u043a\u0438_\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439_\u043f\u043e\u0441\u043b\u0435_\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430_\u043d\u0430_php7&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;7339-7887&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;css&quot;&gt;CSS&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
В этом разделе описаны изменения таблиц стилей &lt;abbr title=&quot;Cascading Style Sheets&quot;&gt;CSS&lt;/abbr&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/devel:css&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/devel:css&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/devel:css&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CSS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;css&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;7888-8032&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit16&quot; id=&quot;userstylecss&quot;&gt;userstyle.css&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
В файл conf/userstyle.css для примера внесены следующие изменения:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Выравнивание по ширине и «красная строка» для основного текста&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Исправление после изменений «для основного текста» для расширения &lt;strong&gt;WRAP&lt;/strong&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Таблицы: вертикальное выравнивание по середине ячейки&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#039;plugin_tablelayout_placeholder&#039; data-tablelayout=&quot;{&amp;quot;rowsHeaderSource&amp;quot;:&amp;quot;Auto&amp;quot;}&quot;&gt;&lt;/div&gt;&lt;div class=&quot;table sectionedit17&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;thead&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot; rowspan=&quot;2&quot;&gt;  Заголовок &lt;br/&gt;
 1  &lt;/th&gt;&lt;th class=&quot;col1 centeralign&quot;&gt;  Заголовок &lt;br/&gt;
 2    &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot;&gt;  Заголовок &lt;br/&gt;
 2/2  &lt;/th&gt;
	&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;td class=&quot;col0 centeralign&quot;&gt;  Строка &lt;br/&gt;
1      &lt;/td&gt;&lt;td class=&quot;col1 centeralign&quot; rowspan=&quot;2&quot;&gt;  Строка &lt;br/&gt;
 2       &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0 centeralign&quot;&gt;  Строка 1/2       &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;8567-8880&amp;quot;} --&gt;
&lt;p&gt;
Отключение фона из блоков CODE
Расширение &lt;a href=&quot;https://sysadminmosaic.ru/dokuwiki/plugins#hidden-css&quot; class=&quot;urlextern&quot; title=&quot;https://sysadminmosaic.ru/dokuwiki/plugins#hidden-css&quot; rel=&quot;ugc nofollow&quot;&gt;Hidden&lt;/a&gt;
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:administration&amp;amp;codeblock=15&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_css&quot;&gt;conf/userstyle.css&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code css&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;/* Выравнивание текста */&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* Основной тест */&lt;/span&gt;
p &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;justify&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* text-indent: 1.5em; */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* Списки */&lt;/span&gt;
li &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;justify&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* text-indent: 0em; */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;coMULTI&quot;&gt;/* Содержание */&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;#dw__toc&lt;/span&gt; li&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Plugin WRAP */&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.wrap_leftalign&lt;/span&gt; p&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.wrap_centeralign&lt;/span&gt; p&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;center&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.wrap_rightalign&lt;/span&gt; p&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.wrap_justify&lt;/span&gt; p&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;justify&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Таблицы */&lt;/span&gt;
td&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; th &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;vertical-align&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;middle&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* CODE */&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; code&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; samp&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; kbd &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;15px&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;transparent&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;none&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Редактор */&lt;/span&gt;
&lt;span class=&quot;re1&quot;&gt;.dokuwiki&lt;/span&gt; textarea&lt;span class=&quot;re1&quot;&gt;.edit&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;monospace&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;150%&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;coMULTI&quot;&gt;/* Строка поиска */&lt;/span&gt;
form&lt;span class=&quot;re1&quot;&gt;.search&lt;/span&gt; input &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;re3&quot;&gt;0.5em&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;userstyle.css&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;userstylecss&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;8033-9879&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;логотип&quot;&gt;Логотип&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; lib/tpl/dokuwiki/images&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; apple-touch-icon.png&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; favicon.ico&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; logo.png&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; data/media&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; logo.png&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u043e\u0433\u043e\u0442\u0438\u043f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u043e\u0433\u043e\u0442\u0438\u043f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;9880-10025&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;ссылки&quot;&gt;Ссылки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://sysadminmosaic.ru/dokuwiki/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;https://sysadminmosaic.ru/dokuwiki/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;Ссылка на источник статьи&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u0441\u044b\u043b\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:16,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;10026-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 14 Aug 2024 22:53:01 +0000</pubDate>
        </item>
        <item>
            <title>development</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:development&amp;rev=1738392921</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;разработка_докувики&quot;&gt;Разработка «Докувики»&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Вы можете внести свой вклад в «Докувики» и присоединиться к её развитию. 
&lt;/p&gt;

&lt;p&gt;
Степень вашего вклада, конечно же, зависит только от вас (прежде всего вы должны потакать себе). Если вам нужны идеи, чего не хватает в «Докувики», прежде всего вам следует заглянуть на &lt;a href=&quot;https://www.dokuwiki.org/bugs&quot; class=&quot;interwiki iw_doku&quot; title=&quot;https://www.dokuwiki.org/bugs&quot;&gt;баг-трекер&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; или &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:ideas&quot; class=&quot;wikilink2&quot; title=&quot;devel:ideas&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:ideas&quot;&gt;страницы идей&lt;/a&gt;. Возможно вам захочется &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:adoption&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:adoption&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:adoption&quot;&gt;обновить плагин или шаблон&lt;/a&gt;. Начните с главы «&lt;a href=&quot;#с_чего_начать&quot; title=&quot;wiki:development ↵&quot; class=&quot;wikilink1&quot;&gt;С чего начать&lt;/a&gt;».
&lt;/p&gt;

&lt;p&gt;
Работать вместе - веселее. Сообщество DokuWiki организовано в команды и нуждается в специалистах с различными навыками. Вы свободно можете присоединиться к любой из них или просто поучаствовать в обсуждениях разработок на почтовых рассылках или irc-каналах. Также, регулярно проводятся &lt;abbr title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/abbr&gt;-встречи, викенды по отлову багов, на которых.. эх, исправляются ошибки, иногда разработчики собираются в &lt;abbr title=&quot;In real life&quot;&gt;IRL&lt;/abbr&gt;&lt;sup&gt;&lt;a href=&quot;#fn__2&quot; id=&quot;fnt__2&quot; class=&quot;fn_top&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; на DokuWiki хакфестах (сборы хацкеров).
&lt;/p&gt;

&lt;p&gt;
DokuWiki была наставнической организацией на событии «Google Summer of Code» в 2011. Если вы заинтересованы в участии развития DokuWiki посредством такого рода инициатив, пожалуйста, свяжитесь с нами.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u00ab\u0414\u043e\u043a\u0443\u0432\u0438\u043a\u0438\u00bb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430_\u0434\u043e\u043a\u0443\u0432\u0438\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2020&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;с_чего_начать&quot;&gt;С чего начать&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:git&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:git&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:git&quot;&gt;Гит&lt;/a&gt; — получение кода и работа с «Гитом»&lt;sup&gt;&lt;a href=&quot;#fn__3&quot; id=&quot;fnt__3&quot; class=&quot;fn_top&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:github&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:github&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:github&quot;&gt;Работа с Git-хабом. Pull запросы&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:coding_style&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:coding_style&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:coding_style&quot;&gt;Стиль написания кода&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установка редактора&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:vim&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:vim&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:vim&quot;&gt;VIM&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:intellij_idea&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:intellij_idea&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:intellij_idea&quot;&gt;IntelliJ Idea&lt;/a&gt; (или PHPStorm) &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?w=80&amp;amp;tok=d794e9&amp;amp;media=http%3A%2F%2Fwww.jetbrains.com%2Fimg%2Flogos%2Flogo_intellij_idea.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; width=&quot;80&quot; /&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:security&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:security&quot; data-wiki-id=&quot;wiki:devel:security&quot;&gt;Безопасность&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:unittesting&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:unittesting&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:unittesting&quot;&gt;Тестирование юнитов (частей кода)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:patches&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:patches&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:patches&quot;&gt;Патчи&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:debugging&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:debugging&quot; data-wiki-id=&quot;wiki:devel:debugging&quot;&gt;Отладка&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441_\u0447\u0435\u0433\u043e_\u043d\u0430\u0447\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2021-2848&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;техническая_документация&quot;&gt;Техническая документация&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:overview&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:overview&quot; data-wiki-id=&quot;wiki:devel:overview&quot;&gt;Обзор&lt;/a&gt;, рассказывается о том, как отрабатываются запросы страниц&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:communication&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:communication&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:communication&quot;&gt;Взаимодействие&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:dirlayout&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:dirlayout&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:dirlayout&quot;&gt;Структура каталогов (директорий)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:locking&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:locking&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:locking&quot;&gt;Блокировка статей&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:environment&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:environment&quot; data-wiki-id=&quot;wiki:devel:environment&quot;&gt;Окружение&lt;/a&gt; — глобальные переменные и константы&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:action_modes&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:action_modes&quot; data-wiki-id=&quot;wiki:devel:action_modes&quot;&gt;Режимы действий&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:parser&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:parser&quot; data-wiki-id=&quot;wiki:devel:parser&quot;&gt;Парсер&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:metadata&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:metadata&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:metadata&quot;&gt;Хранение метаданных&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:fulltextindex&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:fulltextindex&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:fulltextindex&quot;&gt;Полнотекстовый индекс&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugins&quot; data-wiki-id=&quot;wiki:devel:plugins&quot;&gt;Плагины&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_file_structure&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugin_file_structure&quot; data-wiki-id=&quot;wiki:devel:plugin_file_structure&quot;&gt;Структура файлов плагина&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:common_plugin_functions&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:common_plugin_functions&quot; data-wiki-id=&quot;wiki:devel:common_plugin_functions&quot;&gt;Основные функции плагинов&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:action_plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:action_plugins&quot; data-wiki-id=&quot;wiki:devel:action_plugins&quot;&gt;Плагины действий&lt;/a&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:events&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:events&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:events&quot;&gt;event system&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:event_handlers&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:event_handlers&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:event_handlers&quot;&gt;event handlers&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:events_list&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:events_list&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:events_list&quot;&gt;events overview&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:event_handlers_code&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:event_handlers_code&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:event_handlers_code&quot;&gt;Пример 1-й&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:event_objects&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:event_objects&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:event_objects&quot;&gt;Пример 2-й&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:syntax_plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:syntax_plugins&quot; data-wiki-id=&quot;wiki:devel:syntax_plugins&quot;&gt;Синтаксические плагины&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:helper_plugins&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:helper_plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:helper_plugins&quot;&gt;Helper Plugins&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:renderer_plugins&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:renderer_plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:renderer_plugins&quot;&gt;Renderer Plugins&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:admin_plugins&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:admin_plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:admin_plugins&quot;&gt;Плагины администрирования&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:remote_plugins&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:remote_plugins&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:remote_plugins&quot;&gt;Remote Plugins&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_unittests&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:plugin_unittests&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:plugin_unittests&quot;&gt;Plugin Unittests&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:toolbar&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:toolbar&quot; data-wiki-id=&quot;wiki:devel:toolbar&quot;&gt;Панель инструментов&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_cookbook&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:plugin_cookbook&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:plugin_cookbook&quot;&gt;Рецепты плагинов&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugin_programming_tips&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugin_programming_tips&quot; data-wiki-id=&quot;wiki:devel:plugin_programming_tips&quot;&gt;Советы по программированию плагинов&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:templates&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:templates&quot; data-wiki-id=&quot;wiki:devel:templates&quot;&gt;Шаблоны (темы)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:configuration&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:configuration&quot; data-wiki-id=&quot;wiki:devel:configuration&quot;&gt;Конфигурирование&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:localization&quot; class=&quot;wikilink1&quot; title=&quot;wiki:localization&quot; data-wiki-id=&quot;wiki:localization&quot;&gt;Локализация&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:css&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:css&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:css&quot;&gt;Каскадные таблицы стилей (CSS)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:javascript&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:javascript&quot; data-wiki-id=&quot;wiki:devel:javascript&quot;&gt;JavaScript&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:preload&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:preload&quot; data-wiki-id=&quot;wiki:devel:preload&quot;&gt;Предварительная загрузка&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Внутренние библиотеки&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:utf-8&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:utf-8&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:utf-8&quot;&gt;utf-8 string handling&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:mail&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:mail&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:mail&quot;&gt;Отправка электронных писем&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:compression&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:compression&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:compression&quot;&gt;Сжатие zip и tgz&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:httpclient&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:httpclient&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:httpclient&quot;&gt;http client library&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:simplepie&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:simplepie&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:simplepie&quot;&gt;RSS-парсер&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:json&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:json&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:json&quot;&gt;Разбор и чтение данных в формате JSON&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:geshi&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:geshi&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:geshi&quot;&gt;Подсветка синтаксиса GeSHi&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:xmlrpc&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:xmlrpc&quot; data-wiki-id=&quot;wiki:devel:xmlrpc&quot;&gt;XML-RPC&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:custom_webservices&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:custom_webservices&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:custom_webservices&quot;&gt;custom webservices&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:scalability&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:scalability&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:scalability&quot;&gt;Масштабируемость&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Дополнительные ресурсы&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/&quot; class=&quot;urlextern&quot; title=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/&quot; rel=&quot;ugc nofollow&quot;&gt;development api reference&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#fn__4&quot; id=&quot;fnt__4&quot; class=&quot;fn_top&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:snapshot&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:snapshot&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:snapshot&quot;&gt;Ежедневные сборки&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;http://github.com/dokuwiki/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;http://github.com/dokuwiki/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;«Докувики» на «Гитхабе»&lt;/a&gt; — интерфейс для просмотра исходного кода и патчей.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.ohloh.net/p/dokuwiki/contributors&quot; class=&quot;urlextern&quot; title=&quot;https://www.ohloh.net/p/dokuwiki/contributors&quot; rel=&quot;ugc nofollow&quot;&gt;Зал славы&lt;/a&gt; — все авторы «Докувики»&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:adoption&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:adoption&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:adoption&quot;&gt;Принятие разработки плагина или шаблона на себя&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f_\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2849-6420&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;организация_командной_разработки&quot;&gt;Организация командной разработки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:release_process&quot; class=&quot;wikilink2&quot; title=&quot;devel:release_process&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:release_process&quot;&gt;Процесс формирования релиза и описание его сборки&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f_\u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439_\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;6421-6620&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;идеи_и_предложения&quot;&gt;Идеи и предложения&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Планирование внешнего &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:security_audit&quot; class=&quot;wikilink2&quot; title=&quot;devel:security_audit&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:security_audit&quot;&gt;Аудита безопасности&lt;/a&gt; для DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:ideas&quot; class=&quot;wikilink2&quot; title=&quot;devel:ideas&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:ideas&quot;&gt;Идеи и концепты&lt;/a&gt; которые могут быть реализованы (новыми) DokuWiki разработчиками&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Планы радикальных &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:template_changes&quot; class=&quot;wikilink2&quot; title=&quot;devel:template_changes&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:template_changes&quot;&gt;изменений в шаблонах&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; DokuWiki &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:refactoring&quot; class=&quot;wikilink2&quot; title=&quot;devel:refactoring&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:refactoring&quot;&gt;оптимизация кода&lt;/a&gt;		&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:farm&quot; class=&quot;wikilink2&quot; title=&quot;devel:farm&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:farm&quot;&gt;Ферма&lt;/a&gt; - идеи для &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:farm&quot; class=&quot;wikilink2&quot; title=&quot;tips:farm&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:farm&quot;&gt;советы:ферма&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Некоторые заметки по &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:memory_footprint_reduction&quot; class=&quot;wikilink2&quot; title=&quot;devel:memory_footprint_reduction&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:memory_footprint_reduction&quot;&gt;уменьшению расхода памяти&lt;/a&gt;		&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разработка темы &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:scalability&quot; class=&quot;wikilink2&quot; title=&quot;devel:scalability&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:scalability&quot;&gt;масштабирования&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:scalability_proposal&quot; class=&quot;wikilink2&quot; title=&quot;devel:scalability_proposal&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:scalability_proposal&quot;&gt;предложения по масштабированию&lt;/a&gt;		&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разработка темы &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=devel:tagline&quot; class=&quot;wikilink2&quot; title=&quot;devel:tagline&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;devel:tagline&quot;&gt;таг-строки&lt;/a&gt; для dokuwiki.org&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span style=&quot;color:#00a2e8;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://www.dokuwiki.org/wiki:development&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/wiki:development&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/wiki:development&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span style=&quot;color:#00a2e8;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://codesearch.dokuwiki.org/&quot; class=&quot;urlextern&quot; title=&quot;https://codesearch.dokuwiki.org/&quot; rel=&quot;ugc nofollow&quot;&gt;https://codesearch.dokuwiki.org/&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;span style=&quot;color:#00a2e8;&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://xref.dokuwiki.org/reference/dokuwiki/nav.html?index.html&quot; class=&quot;urlextern&quot; title=&quot;https://xref.dokuwiki.org/reference/dokuwiki/nav.html?index.html&quot; rel=&quot;ugc nofollow&quot;&gt;https://xref.dokuwiki.org/reference/dokuwiki/nav.html?index.html&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0434\u0435\u0438 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0434\u0435\u0438_\u0438_\u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;6621-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;bugs &lt;em&gt;(англ.)&lt;/em&gt; — ошибки в коде&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__2&quot; id=&quot;fn__2&quot; class=&quot;fn_bot&quot;&gt;2)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;in real life (англ.) - в реальной жизни&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__3&quot; id=&quot;fn__3&quot; class=&quot;fn_bot&quot;&gt;3)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Система управления версиями (англ. VCS) для разработки «Докувики».&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__4&quot; id=&quot;fn__4&quot; class=&quot;fn_bot&quot;&gt;4)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;Ежедневные сборки.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 01 Feb 2025 06:55:21 +0000</pubDate>
        </item>
        <item>
            <title>security</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:security&amp;rev=1735915699</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;правила_безопасности_для_авторов_плагинов&quot;&gt;Правила безопасности для авторов плагинов&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Создание &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugins&quot; data-wiki-id=&quot;wiki:plugins&quot;&gt;плагинов&lt;/a&gt; для DokuWiki очень просто даже для начинающих  &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:plugins&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:plugins&quot; data-wiki-id=&quot;wiki:devel:plugins&quot;&gt;программистов&lt;/a&gt; PHP. Чтобы убедиться, что ваш плагин не ставит под угрозу безопасность всей вики, на которой он установлен, вам следует следовать рекомендациям, изложенным на этой странице.
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; Улучшение этой страницы всегда приветствуется. Она находится в очень сыром состоянии и должна быть расширена более подробной информацией, ссылками и примерами.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;краткое_содержание&quot;&gt;Краткое содержание&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Список наиболее распространенных проблем безопасности и способы их избежания можно найти на этой странице. Краткое резюме:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Межсайтовый скриптинг (XSS) — вставляет вредоносный код на веб-сайт для манипулирования сайтом в браузере пользователя.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Подделка межсайтовых запросов (CSRF) — уловки, позволяющие вам совершать неосознанные вредоносные действия на вашем сайте.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Удаленное включение кода – включает код на сервере, который там выполняется.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Утечка информации – отображается слишком много информации&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; SQL-инъекция – можно выполнить нежелательные запросы к вашим данным&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Также добавлено примечание о &lt;a href=&quot;#reporting_security_issues&quot; title=&quot;wiki:devel:security ↵&quot; class=&quot;wikilink1&quot;&gt;необходимости сообщать о проблемах безопасности &lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0430\u0432\u0438\u043b\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0430\u0432\u0438\u043b\u0430_\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438_\u0434\u043b\u044f_\u0430\u0432\u0442\u043e\u0440\u043e\u0432_\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-2181&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;межсайтовый_скриптинг_xss&quot;&gt;Межсайтовый скриптинг (XSS)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это, вероятно, самая распространенная уязвимость, встречающаяся в плагинах DokuWiki.
&lt;/p&gt;

&lt;p&gt;
Cross Site Scripting относится к атаке, при которой вредоносный код JavaScript внедряется на веб-сайт. Это может использоваться для перенаправления невинных пользователей на вредоносные веб-сайты или для кражи аутентификационных cookie-файлов.
&lt;/p&gt;

&lt;p&gt;
Механизм плагинов DokuWiki дает разработчикам плагинов большую гибкость. В случае с плагинами синтаксиса, в частности, фреймворк дает плагинам возможность работать с сырым необработанным выводом. Это означает, что данные страницы вики, которые достигают вашего плагина, вообще не были обработаны. И не будет никакой дальнейшей обработки вывода после того, как он покинет ваш плагин.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;выход_из_режима_экранирования&quot;&gt;Выход из режима экранирования&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Как минимум, плагин должен гарантировать, что все выходные необработанные данные будут содержать все специальные символы &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; , преобразованные в сущности &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; с помощью функции &lt;a href=&quot;https://secure.php.net/htmlspecialchars()&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/htmlspecialchars()&quot;&gt;htmlspecialchars()&lt;/a&gt;. DokuWiki предоставляет удобный ярлык &lt;a href=&quot;https://codesearch.dokuwiki.org/search?project=dokuwiki&amp;amp;defs=hsc&amp;amp;path=&quot; class=&quot;interwiki plugin_xref&quot; title=&quot;search definitions for hsc()&quot;&gt;hsc()&lt;/a&gt; для этой функции. Значения &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адресов следует экранировать с помощью &lt;a href=&quot;https://secure.php.net/rawurlencode()&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/rawurlencode()&quot;&gt;rawurlencode()&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Кроме того, следует с подозрением относиться к любым данным вики, извлеченным и используемым внутри компании (например, именам пользователей).
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;проверка_входных_данных&quot;&gt;Проверка входных данных&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Всегда проверяйте все ваши входные данные. Используйте белые списки, фильтры, преобразования в точный тип данных, который вы имеете в виду, например, из числа, введенного как смешанное значение php, в целое число и т. д., чтобы убедиться, что у вас есть &lt;em class=&quot;u&quot;&gt;только&lt;/em&gt; разрешенные вами данные.
&lt;/p&gt;

&lt;p&gt;
Также ознакомьтесь с нашей главой об обработке &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:request_vars&quot; class=&quot;wikilink1&quot; title=&quot;wiki:devel:request_vars&quot; data-wiki-id=&quot;wiki:devel:request_vars&quot;&gt;переменных запросов&lt;/a&gt;, таких как &lt;code&gt;_GET&lt;/code&gt;, &lt;code&gt;_POST&lt;/code&gt; или &lt;code&gt;_SERVER&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;смотрите_также&quot;&gt;Смотрите также:&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Cross-site scripting&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Cross-site scripting&quot;&gt;Межсайтовый скриптинг&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;&lt;a href=&quot;http://ha.ckers.org/xss.html&quot; class=&quot;urlextern&quot; title=&quot;http://ha.ckers.org/xss.html&quot; rel=&quot;ugc nofollow&quot;&gt;Шпаргалка по XSS&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0435\u0436\u0441\u0430\u0439\u0442\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433 (XSS)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0435\u0436\u0441\u0430\u0439\u0442\u043e\u0432\u044b\u0439_\u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043d\u0433_xss&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;2182-5376&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;типичные_примеры_уязвимостей&quot;&gt;Типичные примеры уязвимостей&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ниже показаны некоторые очень распространенные проблемы. Примеры очень просты, чтобы сделать общую проблему понятной. Ваш плагин, вероятно, сложнее, но вам нужно отслеживать те же уязвимости.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;синтаксис_тела&quot;&gt;Синтаксис Тела&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Многие простые плагины синтаксиса принимают часть введенных пользователем данных и форматируют их в виде пользовательского &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; .
&lt;/p&gt;

&lt;p&gt;
Пример: Вот плагин сокращенного синтаксиса, позволяющий выделить заданный ввод жирным шрифтом.
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; syntax_plugin_bold &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Syntax_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// общие функции плагина опущены&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;!!!.*?!!!&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;plugin_bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;substring&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; render&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Doku_Renderer &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;xhtml&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;b&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/b&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;// без экранирования&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Как вы можете видеть, необработанные входные данные, захваченные в шаблоне лексера, просто передаются в метод рендеринга, где экранирование вообще не выполняется. Злонамеренные пользователи могут вводить любой код JavaScript и &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt; , который они хотят.
&lt;/p&gt;

&lt;p&gt;
Решение простое: правильный побег.
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; syntax_plugin_bold &lt;span class=&quot;kw2&quot;&gt;extends&lt;/span&gt; DokuWiki_Syntax_Plugin &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;co1&quot;&gt;// общие функции плагина опущены&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; connectTo&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;Lexer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;addSpecialPattern&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;!!!.*?!!!&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$mode&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;plugin_bold&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; handle&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$state&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pos&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Doku_Handler &lt;span class=&quot;re0&quot;&gt;$handler&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;substring&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; render&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; Doku_Renderer &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$format&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;xhtml&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;b&amp;gt;&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/htmlspecialchars&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;htmlspecialchars&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/b&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;//экранирование &lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;формы&quot;&gt;Формы&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Когда ваш плагин предоставляет форму, очень часто требуется проверить вводимые данные и повторно отобразить форму с полученными данными пользователя в случае возникновения ошибки проверки.
&lt;/p&gt;

&lt;p&gt;
Пример: ниже показана форма, уязвимая для атаки XSS, поскольку она не экранирует правильно введенные пользователем данные:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&amp;lt;form action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;q&amp;quot; value=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_REQUEST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;q&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;quot; /&amp;gt; 
    &amp;lt;input type=&amp;quot;submit&amp;quot; /&amp;gt;                     //без экранирования
&amp;lt;/form&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Предоставление данных &lt;code&gt;&amp;quot;&amp;gt;&amp;lt;script&amp;gt;alert(&amp;#039;bang&amp;#039;)&amp;lt;/script&amp;gt;&lt;/code&gt; в качестве входных данных пользователя приведет к эксплуатации уязвимости.
&lt;/p&gt;

&lt;p&gt;
Для исправления формы используйте функцию &lt;a href=&quot;https://secure.php.net/htmlspecialchars&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/htmlspecialchars&quot;&gt;htmlspecialchars()&lt;/a&gt; или функцию DokuWiki shortcut &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:hsc&quot; class=&quot;wikilink2&quot; title=&quot;wiki:xref:hsc&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:xref:hsc&quot;&gt;hsc()&lt;/a&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&amp;lt;form action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;q&amp;quot; value=&amp;quot;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;echo&lt;/span&gt; hsc&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_REQUEST&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;q&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&amp;quot; /&amp;gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; /&amp;gt;                                      //экранирование
&amp;lt;/form&amp;gt;&lt;/pre&gt;

&lt;p&gt;
В целом рекомендуется не создавать формы вручную, а использовать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:form&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:form&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:form&quot;&gt;библиотеку форм&lt;/a&gt; DokuWiki .
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;классы_и_другие_атрибуты&quot;&gt;Классы и другие атрибуты&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Часто плагины принимают несколько параметров и опций, которые используются для изменения выходных данных плагина.
&lt;/p&gt;

&lt;p&gt;
Представьте себе плагин, принимающий следующие входные данные для отображения окна сообщения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;&amp;lt;msg warning&amp;gt;Do not believe anything!&amp;lt;/msg&amp;gt;&lt;/pre&gt;

&lt;p&gt;
В методе рендеринга этого синтаксиса может быть такой код:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;div class=&amp;quot;msg_&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&amp;gt;&#039;&lt;/span&gt;  &lt;span class=&quot;co1&quot;&gt;//$class может быть чем угодно &lt;/span&gt;
                       &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/htmlspecialchars&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;htmlspecialchars&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$message&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/div&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;&lt;/pre&gt;

&lt;p&gt;
Как вы видите, само сообщение правильно экранировано, но класс — нет. Вместо экранирования может быть разумнее использовать белый список разрешенных классов с резервным вариантом по умолчанию::
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$allowed&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;notice&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;info&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;warning&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;error&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;co1&quot;&gt;// белый список &lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/in_array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;in_array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$allowed&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;                         
    &lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;notice&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;co1&quot;&gt;// неизвестный ввод, вернуться к разумному значению по умолчанию&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$renderer&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;doc&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;div class=&amp;quot;msg_&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$class&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;quot;&amp;gt;&#039;&lt;/span&gt;
                       &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/htmlspecialchars&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;htmlspecialchars&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$message&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
                &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&amp;lt;/div&amp;gt;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4 id=&quot;входные_url-адреса&quot;&gt;входные URL-адреса&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Когда плагин принимает &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адреса в качестве входных данных, необходимо убедиться, что пользователи не смогут передать &lt;code&gt;javascript://&lt;/code&gt; псевдо-протокол.
&lt;/p&gt;

&lt;p&gt;
Вот пример того, как может выглядеть очень простая проверка, позволяющая убедиться, что используются только &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адреса http и https.
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;co1&quot;&gt;// пустой URL при несоответствии протокола &lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt;&lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/^https?:\/\//i&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$url&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span class=&quot;re0&quot;&gt;$url&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435_\u043f\u0440\u0438\u043c\u0435\u0440\u044b_\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5377-11958&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;подделка_межсайтовых_запросов_csrf&quot;&gt;Подделка межсайтовых запросов (CSRF)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эта уязвимость часто появляется в плагинах из-за отсутствия понимания этой проблемы, ее часто путают с XSS.
&lt;/p&gt;

&lt;p&gt;
Подделка межсайтовых запросов относится к атаке, при которой вредоносный сайт обманывает браузер жертвы, запрашивая страницу на уязвимом сайте для выполнения нежелательного действия. Атака предполагает, что браузер жертвы имеет учетные данные для изменения чего-либо на уязвимом сайте.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;добавление_токена_безопасности&quot;&gt;Добавление токена безопасности&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
DokuWiki предлагает функции, которые помогут вам бороться с атаками CSRF. &lt;a href=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=3231&amp;amp;fi=116#116&quot; class=&quot;urlextern&quot; title=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=3231&amp;amp;fi=116#116&quot; rel=&quot;ugc nofollow&quot;&gt;getSecurityToken()&lt;/a&gt; создаст токен, который следует использовать для защиты любого аутентифицированного действия. Он должен быть включен в ссылки или формы, запускающие это действие. Все формы, созданные с помощью &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:devel:form&quot; class=&quot;wikilink2&quot; title=&quot;wiki:devel:form&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:devel:form&quot;&gt;библиотеки форм&lt;/a&gt; будут иметь автоматически добавленные токены безопасности, для форм, созданных вручную, можно использовать функцию &lt;a href=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=4438&amp;amp;fi=157#157&quot; class=&quot;urlextern&quot; title=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=4438&amp;amp;fi=157#157&quot; rel=&quot;ugc nofollow&quot;&gt;formSecurityToken()&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Вы как автор плагина несете ответственность за фактическую проверку токена перед выполнением авторизованных действий с использованием функции &lt;a href=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=3783&amp;amp;fi=133#133&quot; class=&quot;urlextern&quot; title=&quot;https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&amp;amp;mo=3783&amp;amp;fi=133#133&quot; rel=&quot;ugc nofollow&quot;&gt;checkSecurityToken()&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;

&lt;h5 id=&quot;see_also&quot;&gt;See also&lt;/h5&gt;
&lt;div class=&quot;level5&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Cross Site Request Forgery&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/Cross Site Request Forgery&quot;&gt;Подделка межсайтовых запросов&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29&quot; class=&quot;urlextern&quot; title=&quot;https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29&quot; rel=&quot;ugc nofollow&quot;&gt;Объяснение OWASP&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u0434\u0434\u0435\u043b\u043a\u0430 \u043c\u0435\u0436\u0441\u0430\u0439\u0442\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (CSRF)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0430_\u043c\u0435\u0436\u0441\u0430\u0439\u0442\u043e\u0432\u044b\u0445_\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432_csrf&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;11959-14378&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;типичный_пример_уязвимости&quot;&gt;Типичный пример уязвимости&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Ниже приведен простейший пример для начала. У вас может быть более сложный плагин для защиты, вот простой пример на основе формы.
&lt;/p&gt;

&lt;p&gt;
Представьте, что вы хотите узнать что-то, на что можно ответить «Да» или «Нет», у вас получится форма такого типа:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;radio&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yn&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Yes&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;radio&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yn&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;No&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Answer&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Затем вы обрабатываете эту форму следующим образом:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;has&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;yn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    do_something_with_yn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;yn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Итак, пользователь подключен, чтобы ответить на этот вопрос, но он пока не знает ответа. Давайте уделим время размышлениям и просмотрим веб-страницы… Теперь пользователь посещает вредоносный веб-сайт, который знает или нет, что пользователь может быть подключен к вашему DokuWiki. На этом веб-сайте разработчик включил этот &lt;abbr title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/abbr&gt;- тег изображения:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/img.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;img&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;http://your.dokuwi.ki/formpage?yn=Yes&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Что тогда будет делать браузер пользователя?
&lt;/p&gt;

&lt;p&gt;
Браузер обработает это изображение как любое другое и отправит запрос на этот &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; . Ваш плагин увидит, что &lt;code&gt;$_GET[&amp;#039;yn&amp;#039;]&lt;/code&gt; установлено, и вызовет &lt;code&gt;do_something_with_yn()&lt;/code&gt; функцию.
&lt;/p&gt;

&lt;p&gt;
Это один из примеров CSRF. Теперь, как исправить эту дыру в безопасности?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0439_\u043f\u0440\u0438\u043c\u0435\u0440_\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;14379-16501&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;предотвращение_csrf-атак&quot;&gt;Предотвращение CSRF-атак&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Помните вашу форму выше? Давайте добавим в нее ввод:
&lt;/p&gt;
&lt;pre class=&quot;code html4strict&quot;&gt;&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;action&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;method&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;GET&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;sectok&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;lt;?php getSecurityToken(); ?&amp;gt;&lt;/span&gt;&lt;/span&gt;&amp;quot; /&amp;gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;radio&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yn&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Yes&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;radio&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;yn&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;No&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;a href=&quot;http://december.com/html/4/element/input.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;input&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;kw3&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span class=&quot;kw3&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Answer&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;sc2&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;a href=&quot;http://december.com/html/4/element/form.html&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;form&lt;/span&gt;&lt;/a&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Видите первый ввод? Да? Хорошо. Теперь вам нужно проверить токен безопасности при получении формы, перед ее обработкой:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;global&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;has&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;yn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; checkSecurityToken&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    do_something_with_yn&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$INPUT&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;str&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;yn&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Поскольку вредоносный веб-сайт никогда не найдет значение скрытого ввода «sectok», ваша форма больше не уязвима для CSRF.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Примечание&lt;/strong&gt;: Если токен безопасности недействителен, &lt;code&gt;checkSecurityToken()&lt;/code&gt; функция отображает сообщение, информирующее пользователя.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435 CSRF-\u0430\u0442\u0430\u043a&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u0435_csrf-\u0430\u0442\u0430\u043a&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:11,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;16502-17742&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;удаленное_включение_кода&quot;&gt;Удаленное включение кода&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эта атака позволяет злоумышленнику внедрить код (PHP) в ваше приложение. Это может произойти при включении файлов или использовании небезопасных функций операций, таких как &lt;a href=&quot;https://secure.php.net/eval()&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/eval()&quot;&gt;eval()&lt;/a&gt; или &lt;a href=&quot;https://secure.php.net/system()&quot; class=&quot;interwiki iw_phpfn&quot; title=&quot;https://secure.php.net/system()&quot;&gt;system()&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Всегда фильтруйте любые входные данные&lt;/strong&gt;, которые будут использоваться для загрузки файлов или которые передаются в качестве аргумента внешним командам.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0435_\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u043a\u043e\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;17743-18449&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;утечка_информации&quot;&gt;Утечка информации&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эта атака может привести к раскрытию файлов, которые обычно должны быть защищены &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; DokuWiki , или может раскрыть файлы на сервере (например, &lt;code&gt;/etc/passwd&lt;/code&gt;).
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Всегда фильтруйте любые входные данные,&lt;/strong&gt; которые будут использоваться для загрузки файлов или которые передаются в качестве аргумента внешним командам.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Всегда используйте функции проверки &lt;abbr title=&quot;Access Control List&quot;&gt;ACL&lt;/abbr&gt; DokuWiki при доступе к данным страницы.&lt;/strong&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0442\u0435\u0447\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0442\u0435\u0447\u043a\u0430_\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;18450-19192&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;sql-инъекция&quot;&gt;SQL-инъекция&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Эта атака редко актуальна в DokuWiki, поскольку база данных не используется. Однако, если ваш плагин обращается к базе данных, всегда экранируйте все значения перед их использованием в операторах SQL.
&lt;/p&gt;

&lt;p&gt;
Дополнительная информация:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/SQL injection&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/SQL injection&quot;&gt;SQL-инъекция&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sql-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;19193-19684&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;сообщение_о_проблемах_безопасности&quot;&gt;Сообщение о проблемах безопасности&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если у вас возникли проблемы с плагином, сообщите об этом автору плагина по электронной почте, при желании указав &lt;a href=&quot;mailto:&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#97;&amp;#110;&amp;#100;&amp;#105;&amp;#64;&amp;#115;&amp;#112;&amp;#108;&amp;#105;&amp;#116;&amp;#98;&amp;#114;&amp;#97;&amp;#105;&amp;#110;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Andi&lt;/a&gt; or the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:mailinglist&quot; class=&quot;wikilink1&quot; title=&quot;wiki:mailinglist&quot; data-wiki-id=&quot;wiki:mailinglist&quot;&gt;список рассылки&lt;/a&gt; on CC.
&lt;/p&gt;

&lt;p&gt;
Дополнительно к &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:lugin:repository&quot; class=&quot;wikilink2&quot; title=&quot;wiki:lugin:repository&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:lugin:repository&quot;&gt;данным&lt;/a&gt; на странице плагина &lt;code&gt;securityissue&lt;/code&gt; следует добавить поле с кратким описанием проблемы . Это создаст красное предупреждающее поле и исключит плагин из основного списка плагинов.
&lt;/p&gt;

&lt;p&gt;
После устранения проблемы и выпуска новой версии это поле следует снова удалить.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435_\u043e_\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445_\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:13,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;19685-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 03 Jan 2025 14:48:19 +0000</pubDate>
        </item>
        <item>
            <title>advanced</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms:advanced&amp;rev=1736967323</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;расширенные_настройки_фермы_и_советы&quot;&gt;Расширенные настройки фермы и советы&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Большую часть &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:farm&quot; class=&quot;wikilink2&quot; title=&quot;tips:farm&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:farm&quot;&gt;старой документации фермы&lt;/a&gt;, которая не охвачена &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms&quot; class=&quot;wikilink2&quot; title=&quot;wiki:farms&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:farms&quot;&gt;новой документацией фермы&lt;/a&gt;, следует добавить сюда.
&lt;/p&gt;

&lt;p&gt;
В следующих разделах предполагается установка, аналогичная той, что описана на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms&quot; class=&quot;wikilink2&quot; title=&quot;wiki:farms&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:farms&quot;&gt;фермах&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0444\u0435\u0440\u043c\u044b \u0438 \u0441\u043e\u0432\u0435\u0442\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438_\u0444\u0435\u0440\u043c\u044b_\u0438_\u0441\u043e\u0432\u0435\u0442\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-501&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;cli_tools&quot;&gt;CLI tools&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
CLI-инструменты &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:cli&quot; class=&quot;wikilink1&quot; title=&quot;wiki:cli&quot; data-wiki-id=&quot;wiki:cli&quot;&gt; инструменты командной строки&lt;/a&gt; вам нужно только задать имя животного в &lt;code&gt;animal&lt;/code&gt; переменной окружения. Например, если вы хотите выполнить &lt;code&gt;bin/indexer.php&lt;/code&gt; для животного «foo» вы можете использовать &lt;code&gt;animal=foo bin/indexer.php&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;CLI tools&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cli_tools&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;502-937&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;установка_значений_по_умолчанию_и_ограничение_опций&quot;&gt;Установка значений по умолчанию и ограничение опций&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вы можете добавить дополнительные файлы конфигурации для значений по умолчанию, которые должны использоваться в животных, и для ограничения определенных параметров конфигурации. Если вы добавите следующий код в конец &lt;code&gt;inc/preload.php&lt;/code&gt;, основной файл конфигурации фермера будет использоваться как файл по умолчанию для всех животных, а защищенный файл фермера будет использоваться как последний защищенный файл для всех животных, что означает, что животные не смогут изменять эти параметры. Это может быть использовано для отключения определенных параметров, таких как &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:config:phpok&quot; class=&quot;wikilink1&quot; title=&quot;wiki:config:phpok&quot; data-wiki-id=&quot;wiki:config:phpok&quot;&gt;phpok&lt;/a&gt; если вы не доверяете администратору животных.
&lt;/p&gt;
&lt;pre class=&quot;code file php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$config_cascade&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;main&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;default&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_INC&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;conf/local.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$config_cascade&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;main&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;protected&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_INC&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;conf/local.protected.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Обратите внимание, что эти изменения также влияют на фермера, если к нему есть доступ. Это сломает менеджер конфигурации в фермере, поскольку он предполагает, что все измененные значения являются значениями по умолчанию, и удалит их из конфигурации.
&lt;/p&gt;

&lt;p&gt;
Аналогичные изменения можно использовать для каскада плагинов, чтобы определить набор плагинов, которые включены по умолчанию, или набор плагинов, которые должны или не должны быть включены.
&lt;/p&gt;

&lt;p&gt;
Конечно, вы также можете полностью изменить каскад конфигурации, каскад конфигурации по умолчанию, который используется в фермах, вы можете найти в конце &lt;code&gt;inc/farm.php&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0446\u0438\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439_\u043f\u043e_\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e_\u0438_\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435_\u043e\u043f\u0446\u0438\u0439&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;938-3470&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;отключение_доступа_к_фермеру&quot;&gt;Отключение доступа к фермеру&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если вы хотите отключить доступ к фермеру, вы можете добавить что-то вроде
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;DOKU_FARM &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; nice_die&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;Access to the farmer denied&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
в конце &lt;code&gt;inc/preload.php&lt;/code&gt; (после включения &lt;code&gt;farm.php&lt;/code&gt;).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0435\u0440\u043c\u0435\u0440\u0443&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435_\u0434\u043e\u0441\u0442\u0443\u043f\u0430_\u043a_\u0444\u0435\u0440\u043c\u0435\u0440\u0443&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;3471-3844&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;централизованное_управление_пользователями&quot;&gt;Централизованное управление пользователями&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если некоторые или все ваши животные должны иметь общих пользователей, вы можете сделать это не только с помощью той же внешней аутентификации, но и с помощью управления пользователями DokuWiki по умолчанию, указав путь к списку пользователей в том же месте в конце &lt;code&gt;inc/preload.php&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;re0&quot;&gt;$config_cascade&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;plainauth.users&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;
    &lt;span class=&quot;st_h&quot;&gt;&#039;default&#039;&lt;/span&gt;   &lt;span class=&quot;sy0&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/your/path/to/conf/users.auth.php&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Если вы хотите сделать это только для некоторых животных, вы, конечно, можете просто добавить условие, основанное на значении &lt;code&gt;DOKU_CONF&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435_\u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435_\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;3845-4810&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;гибкие_настройки_на_основе_htaccess&quot;&gt;Гибкие настройки на основе .htaccess&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
На самом деле настройки на основе .htaccess могут быть намного более гибкими, чем настройки, описанные на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms&quot; class=&quot;wikilink2&quot; title=&quot;wiki:farms&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:farms&quot;&gt;фермах&lt;/a&gt;. Для этих расширенных настроек ваш каталог фермы может и даже должен быть вне корня документов (каталога, доступного из Интернета). Если ваш каталог фермы находится внутри корня документов, вам нужно убедиться, что вы должным образом защищаете каждый каталог данных (например, используя .htaccess, как это делается в обычной настройке DokuWiki), так как в этих расширенных настройках они могут не быть автоматически защищены (зависит от используемых вами условий перезаписи).
&lt;/p&gt;

&lt;p&gt;
Чтобы сделать животных доступными, как в стандартной настройке, вы можете создать второй каталог фермы внутри корня документа с файлом .htaccess и без каталогов животных. Вы также можете добавить &lt;code&gt;RewriteCond&lt;/code&gt; операторы, как в примере ниже, чтобы предотвратить циклы перенаправления. Тогда ваши животные могут быть в корневом каталоге домена, т. е. вы можете иметь &lt;code&gt;example.com/animal1/&lt;/code&gt; для животного &lt;code&gt;animal1&lt;/code&gt; и &lt;code&gt;example.com/dokuwiki/&lt;/code&gt; для фермера.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=3&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_htaccess&quot;&gt;.htaccess&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;On&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Prevent rewrite loops by making sure that the farmer directory won&#039;t be matched&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# If you need to enable access to other directories either add them here or try something like&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# RewriteCond %{REQUEST_FILENAME}       !-f&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# RewriteCond %{REQUEST_FILENAME}       !-d&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# but then also the files of your animals (if they should be in this directory) will be accessible&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# so make sure you have properly protected them&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{REQUEST_URI} !^/?dokuwiki/
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?([^/]+)/(.*)  /dokuwiki/$2?animal=$1 [QSA]
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{REQUEST_URI} !^/?dokuwiki$
&lt;span class=&quot;co1&quot;&gt;# RewriteCond %{REQUEST_FILENAME}       !-f # allow files in the root directory (like some index file)&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?([^/]+)$      /dokuwiki/?animal=$1 [QSA]
&lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; +&lt;span class=&quot;kw2&quot;&gt;FollowSymLinks&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0413\u0438\u0431\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 .htaccess&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0433\u0438\u0431\u043a\u0438\u0435_\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438_\u043d\u0430_\u043e\u0441\u043d\u043e\u0432\u0435_htaccess&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4811-7600&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;более_одного_домена&quot;&gt;Более одного домена&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Если вы можете использовать &lt;a href=&quot;https://en.wikipedia.org/wiki/symbolic link&quot; class=&quot;interwiki iw_wp&quot; title=&quot;https://en.wikipedia.org/wiki/symbolic link&quot;&gt;символические ссылки&lt;/a&gt; вы можете легко связать каталог в корневом каталоге документов каждого домена с фермером и указать этот каталог в правилах перезаписи.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0411\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0431\u043e\u043b\u0435\u0435_\u043e\u0434\u043d\u043e\u0433\u043e_\u0434\u043e\u043c\u0435\u043d\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;7601-8011&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;пользовательские_пути&quot;&gt;Пользовательские пути&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Если вы не хотите, чтобы все животные были в одном каталоге, вы можете просто создать файл .htaccess для каждого животного. В этом файле .htaccess вы можете указать имя животного.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=4&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_htaccess&quot;&gt;.htaccess&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;On&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Prevent rewrite loops by making sure that the farmer directory won&#039;t be matched&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# If you need to enable access to other directories either add them here or try something like&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# RewriteCond %{REQUEST_FILENAME}       !-f&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# RewriteCond %{REQUEST_FILENAME}       !-d&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# but then also the files of your animal (if they should be in this directory) will be accessible&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# so make sure you have properly protected them&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{REQUEST_URI} !^/?dokuwiki/
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?(.*) /dokuwiki/$1?animal=ANIMAL [QSA]
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?$ /dokuwiki/?animal=ANIMAL [QSA]
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; +&lt;span class=&quot;kw2&quot;&gt;FollowSymLinks&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Операторы &lt;code&gt;RewriteCond&lt;/code&gt; предотвращают циклы перенаправления, когда ваш каталог фермера находится внутри каталога животных. Таким образом, вы также можете поместить животное в корневой каталог домена.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0443\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435_\u043f\u0443\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;8012-9365&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;запуск_фермы_за_обратным_прокси-сервером&quot;&gt;Запуск фермы за обратным прокси-сервером&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это происходит, когда вы настраиваете свою ферму на внутреннем сервере (например &lt;a href=&quot;http://11.22.33.44&quot; class=&quot;urlextern&quot; title=&quot;http://11.22.33.44&quot; rel=&quot;ugc nofollow&quot;&gt;http://11.22.33.44&lt;/a&gt;) и представляете свои вики-ресурсы миру через фронтенд-сервер Apache (например, &lt;a href=&quot;http://www.example.com&quot; class=&quot;urlextern&quot; title=&quot;http://www.example.com&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.example.com&lt;/a&gt;).
&lt;/p&gt;

&lt;p&gt;
Сначала настройте ферму на сервере в соответствии со &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms&quot; class=&quot;wikilink2&quot; title=&quot;wiki:farms&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:farms&quot;&gt;стандартной документацией&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
В моем случае я решил поместить все файлы DokuWiki в одно место, чтобы отделить их от других сайтов, работающих на внутреннем сервере:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;/var/www/wikis/&lt;/code&gt; – Корень моей установки DokuWiki.
&lt;/p&gt;

&lt;p&gt;
Итак, моя ферма имеет следующую конфигурацию:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/www/wikis/dokuwiki&lt;/code&gt;– движок DokuWiki, он должен быть доступен из Интернета&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/www/wikis/farm&lt;/code&gt;– каталог ферм DokuWiki, содержащий всех животных&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;/var/www/wikis/farm/bear&lt;/code&gt;– моя первая вики о медведях&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
На внутреннем сервере моя вики о медведях (после полной настройки) будет доступна по следующему адресу &lt;a href=&quot;http://11.22.33.44/wikis/farm/bear&quot; class=&quot;urlextern&quot; title=&quot;http://11.22.33.44/wikis/farm/bear&quot; rel=&quot;ugc nofollow&quot;&gt;http://11.22.33.44/wikis/farm/bear&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Однако на сервере frontend я хочу представить свою вики по следующему адресу (обратите внимание, что я решил убрать «s» из «wikis» в этом &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; ): &lt;a href=&quot;http://www.example.com/wiki/bear&quot; class=&quot;urlextern&quot; title=&quot;http://www.example.com/wiki/bear&quot; rel=&quot;ugc nofollow&quot;&gt;http://www.example.com/wiki/bear&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Используя тип настройки .htaccess, я настроил его &lt;code&gt;/var/www/wikis/farm/.htaccess&lt;/code&gt; с помощью следующего кода:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=5&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_htaccess&quot;&gt;.htaccess&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;On&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?([^/]+)/(.*)  /wikis/dokuwiki/$2?animal=$1 [QSA]
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^/?([^/]+)$      /wikis/dokuwiki/?animal=$1 [QSA]
&lt;span class=&quot;kw1&quot;&gt;Options&lt;/span&gt; +&lt;span class=&quot;kw2&quot;&gt;FollowSymLinks&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Затем &lt;code&gt;/var/www/wikis/farm/bear/confя&lt;/code&gt; редактирую &lt;strong&gt;local.protected.php&lt;/strong&gt; следующим образом (примечание: здесь используется адрес интерфейса):
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=6&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php&quot;&gt;local.protected.php&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;co4&quot;&gt;/**
 * These settings are &amp;quot;protected&amp;quot; and cannot be overwritten
 * by the configuration manager, but need to be edited manually.
 */&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;savedir&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; DOKU_CONF&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;../data&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;updatecheck&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;// if you&#039;re using the .htaccess base setup, set this to your animal&#039;s base directory:&lt;/span&gt;
&lt;span class=&quot;re0&quot;&gt;$conf&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;basedir&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;/wiki/bear/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Поэтому я использую &lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_proxy.html&quot; class=&quot;urlextern&quot; title=&quot;http://httpd.apache.org/docs/2.2/mod/mod_proxy.html&quot; rel=&quot;ugc nofollow&quot;&gt;Apache&amp;#039;s mod_proxy&lt;/a&gt; и настраиваю конфигурацию в &lt;strong&gt;httpd.conf&lt;/strong&gt; на сервере front-end:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=7&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf&quot;&gt;httpd.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;    &amp;lt;&lt;span class=&quot;kw3&quot;&gt;Location&lt;/span&gt; /wiki&amp;gt;
      &lt;span class=&quot;kw1&quot;&gt;ProxyPass&lt;/span&gt; http://11.22.33.44/wikis/farm
      &lt;span class=&quot;kw1&quot;&gt;ProxyPassReverse&lt;/span&gt; http://11.22.33.44/wikis/farm
    &amp;lt;/&lt;span class=&quot;kw3&quot;&gt;Location&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Это означает, что все животные на моей ферме всегда будут проходить обратный прокси-сервер с желаемого адреса интерфейса.
&lt;/p&gt;

&lt;p&gt;
Это работает очень хорошо, пока вы не выполните определенные действия (например, вход в систему, выход из системы, сохранение изменений и т. д.). Поскольку движок DokuWiki выполняет перенаправление в этих точках, браузеру конечного пользователя отправляется заголовок HTTP 302, содержащий следующее:
&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;Location: &lt;a href=&quot;http://11.22.33.44/wiki/bear/doku.php?id=blahblahblah&quot; class=&quot;urlextern&quot; title=&quot;http://11.22.33.44/wiki/bear/doku.php?id=blahblahblah&quot; rel=&quot;ugc nofollow&quot;&gt;http://11.22.33.44/wiki/bear/doku.php?id=blahblahblah&lt;/a&gt;&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;
Конечно, на внутреннем сервере по этому адресу нет страницы, и в результате в браузере пользователя появляется сообщение об ошибке HTTP 404 «Страница не найдена».
&lt;/p&gt;

&lt;p&gt;
Средство — использовать &lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_headers.html&quot; class=&quot;urlextern&quot; title=&quot;http://httpd.apache.org/docs/2.2/mod/mod_headers.html&quot; rel=&quot;ugc nofollow&quot;&gt;Apache&amp;#039;s mod_headers&lt;/a&gt;. Мы изменяем наш блок кода в &lt;strong&gt;httpd.conf&lt;/strong&gt; следующим образом:
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:farms:advanced&amp;amp;codeblock=8&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_conf&quot;&gt;httpd.conf&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;    &amp;lt;&lt;span class=&quot;kw3&quot;&gt;Location&lt;/span&gt; /wiki&amp;gt;
      &lt;span class=&quot;kw1&quot;&gt;ProxyPass&lt;/span&gt; http://11.22.33.44/wikis/farm
      &lt;span class=&quot;kw1&quot;&gt;ProxyPassReverse&lt;/span&gt; http://11.22.33.44/wikis/farm
      &lt;span class=&quot;kw1&quot;&gt;Header&lt;/span&gt; edit Location ^http://11.22.33.44 http://www.example.com
    &amp;lt;/&lt;span class=&quot;kw3&quot;&gt;Location&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
The &amp;#039;Location&amp;#039; response header is now re-written to the correct address and everything works fine.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0417\u0430\u043f\u0443\u0441\u043a \u0444\u0435\u0440\u043c\u044b \u0437\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u043f\u0443\u0441\u043a_\u0444\u0435\u0440\u043c\u044b_\u0437\u0430_\u043e\u0431\u0440\u0430\u0442\u043d\u044b\u043c_\u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;9366-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 15 Jan 2025 18:55:23 +0000</pubDate>
        </item>
        <item>
            <title>iis</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:iis&amp;rev=1723675435</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;dokuwiki_с_iis&quot;&gt;DokuWiki с IIS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Это для тех, кто хочет использовать &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:wiki&quot; class=&quot;wikilink1&quot; title=&quot;wiki:wiki&quot; data-wiki-id=&quot;wiki:wiki&quot;&gt;DokuWiki&lt;/a&gt; на компьютере с Windows и веб-сервером IIS (Windows 2000, Windows XP или Windows Server 2003, 2008)
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki \u0441 IIS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_\u0441_iis&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-245&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;iis6_и_предыдущие&quot;&gt;IIS6 и предыдущие&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;IIS6 \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;iis6_\u0438_\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;246-284&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;установить_php&quot;&gt;Установить PHP&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Новая DL-ссылка для PHP под IIS (автоматическая установка): Ссылка &lt;a href=&quot;http://www.iis-aid.com/iis_aid_php_installer&quot; class=&quot;urlextern&quot; title=&quot;http://www.iis-aid.com/iis_aid_php_installer&quot; rel=&quot;ugc nofollow&quot;&gt;IIS-Aid&lt;/a&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; не работает/Скачать невозможно&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы хотите выполнить автономную установку и хотите использовать fast-cgi, установите дополнение перед установкой php: &lt;a href=&quot;http://www.iis.net/extensions/FastCGI&quot; class=&quot;urlextern&quot; title=&quot;http://www.iis.net/extensions/FastCGI&quot; rel=&quot;ugc nofollow&quot;&gt;IIS-FastCGI&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
(Просто установите и оставьте настройку «загрузить и установить FastCGI», и он автоматически обнаружит fast-cgi в вашей системе)
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Используйте установку Windows с веб-сайта PHP. Посетите &lt;a href=&quot;http://www.php.net/&quot; class=&quot;urlextern&quot; title=&quot;http://www.php.net/&quot; rel=&quot;ugc nofollow&quot;&gt;сайт PHP&lt;/a&gt; для инсталляторов или полных пакетов. PHP не полностью совместим с основными выпусками, по состоянию на Q1/2021 выберите новейший выпуск 7.x. Если у вас есть сомнения, обратитесь к системным &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:requirements&quot; class=&quot;wikilink1&quot; title=&quot;wiki:requirements&quot; data-wiki-id=&quot;wiki:requirements&quot;&gt;requirements&lt;/a&gt; требованиям. PHP может работать как CGI-приложение или как расширение ISAPI. В качестве альтернативы посетите &lt;a href=&quot;http://php.iis.net/&quot; class=&quot;urlextern&quot; title=&quot;http://php.iis.net/&quot; rel=&quot;ugc nofollow&quot;&gt;сайт Microsoft IIS&lt;/a&gt; для автоматической настройки PHP.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы используете &lt;a href=&quot;http://www.php.net/manual/en/book.wincache.php&quot; class=&quot;urlextern&quot; title=&quot;http://www.php.net/manual/en/book.wincache.php&quot; rel=&quot;ugc nofollow&quot;&gt;расширение кэширования Windows для PHP&lt;/a&gt;, вам необходимо отключить функцию кэширования файлов расширения, установив &lt;a href=&quot;http://example.com&quot; class=&quot;urlextern&quot; title=&quot;http://example.com&quot; rel=&quot;ugc nofollow&quot;&gt;wincache.fcenabled&lt;/a&gt; значение &lt;code&gt;0&lt;/code&gt; в &lt;code&gt;php.ini&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c_php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;285-2223&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit4&quot; id=&quot;настроить_iis&quot;&gt;Настроить IIS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:unpacking&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:unpacking&quot; data-wiki-id=&quot;wiki:install:unpacking&quot;&gt;Извлеките&lt;/a&gt; архив DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Переименуйте &lt;code&gt;dokuwiki-YYYY-MM-DD&lt;/code&gt; каталог в &lt;code&gt;dokuwiki&lt;/code&gt; (или как вам нравится) и переместите его в:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; ЛУЧШАЯ Практика — поместить его куда-нибудь, кроме вашего «системного» диска, «D:\dokuwiki». Это необходимо для безопасности и снижения вероятности состояния «диск заполнен» на этом диске.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Где-то ниже documentroot вашего нового веб-сервера, например &lt;code&gt;c:\inetpub\wwwroot\dokuwiki&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Защитите все каталоги, как описано в шаге 2 главной страницы установки .&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Настройте IIS (выполните одно из следующих действий):&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Виртуальный каталог на существующем веб-сайте, например, « &lt;a href=&quot;http://www.YourSite.com/wiki&quot; class=&quot;urlextern&quot; title=&quot;http://www.YourSite.com/wiki&quot; rel=&quot;ugc nofollow&quot;&gt;www.YourSite.com/wiki&lt;/a&gt; »: поэтому обязательно настройте сопоставление виртуального каталога с wiki-code-location&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Новый веб-сайт, например &lt;a href=&quot;http://www.yoursite.com/wiki&quot; class=&quot;urlextern&quot; title=&quot;http://www.yoursite.com/wiki&quot; rel=&quot;ugc nofollow&quot;&gt;«wiki.YourSite.com»&lt;/a&gt;: добавьте новый website-Config в IIS и установите Root-Directory в wiki-code-location&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перейдите в &lt;code&gt;dokuwiki/&lt;/code&gt; каталог и проверьте свойства папки &lt;code&gt;data/&lt;/code&gt;. Убедитесь, что учетная запись гостя Интернета (IUSR_имя_компьютера ) или соответствующая учетная запись веб-сервера (или группа веб-сервера, например IIS_WPG) имеет разрешения на запись на уровне папки data/.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установщик wiki теперь должен быть доступен по адресу &lt;a href=&quot;http://localhost/dokuwiki/install.php&quot; class=&quot;urlextern&quot; title=&quot;http://localhost/dokuwiki/install.php&quot; rel=&quot;ugc nofollow&quot;&gt;http://localhost/dokuwiki/install.php&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IIS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c_iis&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2224-4330&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;примечания&quot;&gt;ПРИМЕЧАНИЯ&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы хотите записать /conf/local.php (а это нужно сделать во время процесса установки!), убедитесь, что гостевая учетная запись Интернета (IUSR_имя_компьютера ) или соответствующая группа веб-сервера (например, IIS_WPG) имеют права «Запись» для этого &lt;code&gt;conf/local.php &lt;/code&gt;файла.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы хотите запустить новую DokuWiki, убедитесь, что гостевая учетная запись Интернета (IUSR_имя_компьютера ) или соответствующая группа веб-сервера (например, IIS_WPG) имеют права «Запись» для файла &lt;code&gt;conf/local.php&lt;/code&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0420\u0418\u041c\u0415\u0427\u0410\u041d\u0418\u042f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4331-5209&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;iis7_10&quot;&gt;IIS7/10&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;IIS7\/10&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;iis7_10&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;5210-5228&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit7&quot; id=&quot;установить_php1&quot;&gt;Установить PHP&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Используйте установку Windows с &lt;a href=&quot;http://windows.php.net/download/m&quot; class=&quot;urlextern&quot; title=&quot;http://windows.php.net/download/m&quot; rel=&quot;ugc nofollow&quot;&gt;веб-сайта PHP&lt;/a&gt;. Посетите сайт PHP для получения установщиков или полных пакетов. PHP не полностью совместим между основными выпусками, по состоянию на Q1/2021 выберите новейший выпуск 7.x. Если у вас есть сомнения, обратитесь к системным требованиям . Существует 2 установщика: «потокобезопасный» и «непотокобезопасный». Рекомендуется использовать непотокобезопасную сборку PHP с IIS 7 FastCGI. Непотокобезопасная сборка PHP обеспечивает значительный прирост производительности по сравнению со стандартной сборкой, не выполняя никаких проверок потокобезопасности, которые не нужны, поскольку FastCGI обеспечивает однопоточную среду выполнения.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; PHP может работать как CGI-приложение или как расширение ISAPI. Эти инструкции предназначены для Fast-CGI, так как он быстрее и стабильнее ISAPI. Даже Microsoft рекомендует устанавливать с помощью Fast-CGI, хотя они и изобрели ISAPI. См. &lt;a href=&quot;http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/&quot; class=&quot;urlextern&quot; title=&quot;http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/&quot; rel=&quot;ugc nofollow&quot;&gt;How To&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c PHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c_php1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;5229-6996&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;настроить_iis1&quot;&gt;Настроить IIS&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:unpacking&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:unpacking&quot; data-wiki-id=&quot;wiki:install:unpacking&quot;&gt;Извлеките&lt;/a&gt; архив DokuWiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Переименуйте &lt;code&gt;dokuwiki-YYYY-MM-DD&lt;/code&gt; каталог в &lt;code&gt;dokuwiki&lt;/code&gt; (или как вам нравится) и переместите его в:&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;em class=&quot;u&quot;&gt;ЛУЧШИЙ&lt;/em&gt; способ — разместить его где-нибудь, кроме системного диска (например &lt;code&gt;D:\dokuwiki&lt;/code&gt;). Это необходимо для безопасности и снижения вероятности переполнения диска на этом диске.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Однако вы также можете поместить его где-нибудь ниже корневого каталога документов вашего нового веб-сервера, (например &lt;code&gt;c:\inetpub\wwwroot\dokuwiki&lt;/code&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Защитите все каталоги, как описано в шаге 2 главной страницы установки .&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вам придется предоставить учетной записи IUSR разрешения на чтение и выполнение на веб-сайте, поскольку по умолчанию они отсутствуют.&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; В диспетчере IIS щелкните левой кнопкой мыши имя сайта.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нажмите «Изменить разрешения» на панели «Действия» ИЛИ щелкните правой кнопкой мыши и выберите «Изменить разрешения» в контекстном меню.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нажмите вкладку «Безопасность».&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нажмите кнопку «Изменить».&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нажмите кнопку «Добавить».&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Нажмите кнопку «Расположения» и выберите имя локального сервера.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level3&quot;&gt;&lt;div class=&quot;li&quot;&gt; Теперь введите IUSR и нажмите «ОК», а затем еще раз «ОК».&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Настройте IIS (выполните &lt;em class=&quot;u&quot;&gt;одно&lt;/em&gt; из следующих действий):&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Виртуальный каталог на существующем веб-сайте, например, « &lt;a href=&quot;http://www.YourSite.com/wiki&quot; class=&quot;urlextern&quot; title=&quot;http://www.YourSite.com/wiki&quot; rel=&quot;ugc nofollow&quot;&gt;www.YourSite.com/wiki&lt;/a&gt; »: поэтому обязательно настройте сопоставление виртуального каталога с wiki-code-location&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Новый веб-сайт, например &lt;a href=&quot;http://www.yoursite.com/wiki&quot; class=&quot;urlextern&quot; title=&quot;http://www.yoursite.com/wiki&quot; rel=&quot;ugc nofollow&quot;&gt;«wiki.YourSite.com»&lt;/a&gt;: добавьте новый website-Config в IIS и установите Root-Directory в wiki-code-location&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перейдите в &lt;code&gt;dokuwiki/&lt;/code&gt; каталог и проверьте свойства папки &lt;code&gt;data/&lt;/code&gt;. Убедитесь, что учетная запись гостя Интернета (IUSR), соответствующая учетная запись веб-сервера или группа серверов (IIS_IUSRS) имеет разрешения на запись на уровне папки &lt;code&gt;data/&lt;/code&gt;. Инструкции см. выше.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перейдите в dokuwiki/каталог и убедитесь, что учетная запись гостя Интернета (IUSR), соответствующая учетная запись веб-сервера или группа серверов (IIS_IUSRS) имеет разрешения на запись на уровне папки &lt;code&gt;conf/&lt;/code&gt;. Инструкции см. выше.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;conf/&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;code&gt;lib/plugins&lt;/code&gt; ( если вы этого не сделаете, вы увидите предупреждающее сообщение в менеджере расширений )&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установщик вики теперь должен быть доступен. В зависимости от того, как вы его установили, вы можете найти его по адресу http://localhost/dokuwiki/install.php ИЛИ http://(название сайта вики) /install.php&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перейдите в &lt;code&gt;dokuwiki/&lt;/code&gt; каталог и удалите файл install.php.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c IIS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c_iis1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;6997-11133&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit9&quot; id=&quot;переписать&quot;&gt;Переписать&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Включите перезапись &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адресов и вставьте соответствующий набор правил:
&lt;/p&gt;
&lt;pre class=&quot;code xml&quot;&gt;&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rewrite&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rules&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 1C&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;stopProcessing&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;^_media/(.*)&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/lib/exe/fetch.php?media={R:1}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;appendQueryString&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 2C&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;stopProcessing&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;^_detail/(.*)&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/lib/exe/detail.php?media={R:1}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;appendQueryString&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 3C&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;stopProcessing&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;^_export/([^/]+)/(.*)&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/doku.php?do=export_{R:1}&amp;amp;amp;id={R:2}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;appendQueryString&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 4C&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;stopProcessing&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;^$&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/doku.php&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
          &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;conditions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;input&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;{REQUEST_FILENAME}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;matchType&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;IsFile&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;negate&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;input&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;{REQUEST_FILENAME}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;matchType&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;IsDirectory&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;negate&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
           &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/conditions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 5C&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;stopProcessing&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;(.*)&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/doku.php?id={R:1}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;appendQueryString&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
          &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;conditions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;input&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;{REQUEST_FILENAME}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;matchType&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;IsFile&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;negate&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
            &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;input&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;{REQUEST_FILENAME}&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;matchType&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;IsDirectory&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;negate&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
          &lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/conditions&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;rule&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;name&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;rule 6C&amp;quot;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;match&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;^index.php$&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
	&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;action&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;type&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;url&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;/doku.php&amp;quot;&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rule&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rules&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;sc3&quot;&gt;&lt;span class=&quot;re1&quot;&gt;&amp;lt;/rewrite&lt;span class=&quot;re2&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;Если вы используете Azure Web App&lt;/strong&gt;, просто поместите эти строки под тегами &amp;lt;system.webServer&amp;gt; в файле web.config (расположенном в wwwroot вашего приложения).
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;iis_70_или_выше&quot;&gt;IIS 7.0 или выше&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
IIS 7.0 и выше можно расширить с помощью модуля &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; Rewrite 2.0, доступного от Microsoft для &lt;a href=&quot;https://download.microsoft.com/download/D/8/1/D81E5DD6-1ABB-46B0-9B4B-21894E18B77F/rewrite_x86_en-US.msi&quot; class=&quot;urlextern&quot; title=&quot;https://download.microsoft.com/download/D/8/1/D81E5DD6-1ABB-46B0-9B4B-21894E18B77F/rewrite_x86_en-US.msi&quot; rel=&quot;ugc nofollow&quot;&gt;x86&lt;/a&gt; и &lt;a href=&quot;https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi&quot; class=&quot;urlextern&quot; title=&quot;https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi&quot; rel=&quot;ugc nofollow&quot;&gt;x64&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Сохраните правила Apache выше в файле .htaccess, удалив строку «RewriteBase /dokuwiki». Это не потребуется, так как мы будем добавлять правила непосредственно в корень вики.
&lt;/p&gt;

&lt;p&gt;
В диспетчере IIS выберите папку Wiki, а в разделе IIS выберите « &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; Rewrite» (если диспетчер был открыт перед установкой, потребуется обновление).
&lt;/p&gt;

&lt;p&gt;
На панели действий справа выберите «Импортировать правила».
&lt;/p&gt;

&lt;p&gt;
Для вашего файла конфигурации выберите файл .htaccess и импортируйте его. Это должно дать вам 6 преобразованных правил.
&lt;/p&gt;

&lt;p&gt;
Наконец, нажмите «Применить» на панели «Действия» справа.
&lt;/p&gt;

&lt;p&gt;
Настройте свою Wiki на использование правил .htaccess для перезаписи, и теперь вы должны увидеть, как ваши &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;-адреса будут перезаписаны.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;11134-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 14 Aug 2024 22:43:55 +0000</pubDate>
        </item>
        <item>
            <title>nginx</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:nginx&amp;rev=1723161483</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;nginx&quot;&gt;nginx&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Эту страницу нужно немного подчистить. Желательно, чтобы это сделал опытный пользователь nginx. В &lt;a href=&quot;https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/&quot; class=&quot;urlextern&quot; title=&quot;https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/&quot; rel=&quot;ugc nofollow&quot;&gt;вики nginx&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
есть рецепт , а ниже — несколько примеров. В идеале их следует объединить в одну связную установку. Следует добавить пояснение по различным установкам с использованием (F) CGI и FPM. Установку необходимых компонентов для разных операционных систем следует перенести в отдельный раздел — в любом случае конфигурация не должна зависеть от особенностей ОС .
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-934&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;dokuwiki_с_nginx_на_ubuntu&quot;&gt;DokuWiki с nginx на Ubuntu&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Вам необходимо установить nginx и php-fpm. Если у вас текущая версия, то это будет как минимум php7.0.
&lt;/p&gt;

&lt;p&gt;
Конфигурация nginx ниже основана в основном на образце конфигурации на этом сайте, &lt;a href=&quot;https://wiki.boetes.org/dokuwiki_on_nginx&quot; class=&quot;urlextern&quot; title=&quot;https://wiki.boetes.org/dokuwiki_on_nginx&quot; rel=&quot;ugc nofollow&quot;&gt;обновленном&lt;/a&gt; для работы с текущими версиями (протестировано с 16.04 LTS). С конфигурацией кэширования изображений с &lt;a href=&quot;http://blog.slucas.fr/blog/nginx-gzip-css-js&quot; class=&quot;urlextern&quot; title=&quot;http://blog.slucas.fr/blog/nginx-gzip-css-js&quot; rel=&quot;ugc nofollow&quot;&gt;этого сайта&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
При первоначальной настройке вы не сможете запуститься, пока не закомментируете deny в файле install.php. Это полная конфигурация, которую мы используем, вы можете просто скопировать и вставить, а также изменить имена по своему вкусу. Пожалуйста, учтите, что это работает как vhost. Вам, скорее всего, нужно будет поместить его в &lt;code&gt;/etc/nginx/sites-enabled&lt;/code&gt; по умолчанию (или куда-то еще, если вы изменили конфигурацию).
&lt;/p&gt;

&lt;p&gt;
Обратите внимание, что это https, поэтому вам понадобится сертификат или самоподписанный сертификат для настройки таким образом. Конфигурация для сертификата https типична, как показано ниже (чтобы получить хорошую оценку безопасности):
&lt;/p&gt;
&lt;pre class=&quot;code file nginx&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# файл с сертификатом + промежуточные данные &lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_certificate&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_certificate&lt;/span&gt;&lt;/a&gt; /etc/&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;/certs/example_com_pack.crt&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_certificate_key&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_certificate_key&lt;/span&gt;&lt;/a&gt; /etc/&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;/private/example_com.key&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_session_timeout&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_session_timeout&lt;/span&gt;&lt;/a&gt; 5m&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_ciphers&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_ciphers&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Используйте 2048-битные параметры ключа Diffie-Hellman RSA &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# (в противном случае Nginx использует по умолчанию 1024-битные параметры, что снижает надежность шифрования # при использовании PFS) &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# Сгенерировано OpenSSL с помощью следующей команды: &lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# openssl dhparam -outform pem -out /etc/nginx/ssl/dhparam2048.pem 2048 &lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_dhparam&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_dhparam&lt;/span&gt;&lt;/a&gt; /etc/&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;/private/dhparam2048.pem&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class=&quot;code file nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt;               80&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt;                   &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;::&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:80&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt;          wiki.domain.example&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#return&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;return&lt;/span&gt;&lt;/a&gt; 301 https://&lt;span class=&quot;re0&quot;&gt;$server_name&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$request_uri&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;::&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;:443 &lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt; 443 &lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; wiki.domain.example&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
     &lt;span class=&quot;co1&quot;&gt;# Максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом &lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#client_max_body_size&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;client_max_body_size&lt;/span&gt;&lt;/a&gt; 4M&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#client_body_buffer_size&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;client_body_buffer_size&lt;/span&gt;&lt;/a&gt; 128k&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /dokuwiki&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; doku.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#Не забудьте закомментировать следующее при установке и раскомментировать после завершения. &lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; /&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;conf/|bin/|inc/|vendor/|install.php&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpAccessModule#deny&quot;&gt;&lt;span class=&quot;kw5&quot;&gt;deny&lt;/span&gt;&lt;/a&gt; all&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#Поддержка расположения  X-Accel-Redirect ~ ^/data/ {  internal  ;  }&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; ^/data/ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#internal&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;internal&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; ^/lib.*\.&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;js|css|gif|png|ico|jpg|jpeg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpHeadersModule#expires&quot;&gt;&lt;span class=&quot;kw14&quot;&gt;expires&lt;/span&gt;&lt;/a&gt; 365d&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; / &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#try_files&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;try_files&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt;/ &lt;span class=&quot;re0&quot;&gt;@dokuwiki&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;@dokuwiki&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# перезаписывает &amp;quot;doku.php/&amp;quot; из URL-адресов, если вы установили настройку userrewrite в .htaccess на странице конфигурации dokuwiki &lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_media/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /lib/exe/fetch.php?media&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_detail/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /lib/exe/detail.php?media&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_export/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;^/&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /doku.php?do&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;export_$1&amp;amp;id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$2 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /doku.php?id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1&amp;amp;&lt;span class=&quot;re0&quot;&gt;$args&lt;/span&gt; last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; \.php$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#try_files&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;try_files&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt;/ /doku.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; SCRIPT_FILENAME &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; REDIRECT_STATUS 200&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt; unix:/var/run/php/php7.0-fpm.sock&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;co1&quot;&gt;# fastcgi_pass unix:/var/run/php5-fpm.sock; #старая версия php &lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
После размещения этого файла необходимо перезапустить nginx и php-fpm.
&lt;/p&gt;
&lt;pre class=&quot;code file nginx&quot;&gt;  service php7.0-fpm reload &amp;amp;&amp;amp; service nginx reload
  &lt;span class=&quot;co1&quot;&gt;# service php5-fpm reload &amp;amp;&amp;amp; service nginx reload # for the older php5 version&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Если вы получаете ошибку шлюза 502, это обычно означает, что возникла проблема с конфигурацией сокета phpfpm (обычно неправильный путь к сокету). Пожалуйста, ознакомьтесь с документацией по phpfpm и nginx.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki \u0441 nginx \u043d\u0430 Ubuntu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_\u0441_nginx_\u043d\u0430_ubuntu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;935-6232&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;dokuwiki_с_nginx_на_windows&quot;&gt;DokuWiki с nginx на Windows&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Dokuwiki&lt;/strong&gt; был извлечен в &lt;strong&gt;E:\www\dokuwiki&lt;/strong&gt;.
&lt;/p&gt;

&lt;p&gt;
Это пример записи &lt;strong&gt;dokuwiki&lt;/strong&gt; в &lt;strong&gt;nginx.conf&lt;/strong&gt;, работающем на &lt;code&gt;Windows&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;\.php &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    root           E:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www;	         
    fastcgi_pass   127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;9000&lt;/span&gt;;
    fastcgi_param  SCRIPT_FILENAME    E:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;re1&quot;&gt;$fastcgi_script_name&lt;/span&gt;;
    fastcgi_param  QUERY_STRING       &lt;span class=&quot;re1&quot;&gt;$query_string&lt;/span&gt;;
    include        fastcgi_params;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# обслуживаем статические файлы &lt;/span&gt;
location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;  &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    root         E:&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www;		
    expires 30d;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;conf&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; deny all; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;data&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; deny all; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
location ~ &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;\.ht            &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; deny all; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;FastCGI&lt;/strong&gt; и &lt;strong&gt;nginx&lt;/strong&gt; были запущены с помощью этого пакетного файла:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;ECHO Starting PHP FastCGI...
RunHiddenConsole.exe E:\appl\php-5.2.9-&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;-Win32\php-cgi.exe &lt;span class=&quot;re5&quot;&gt;-b&lt;/span&gt; 127.0.0.1:&lt;span class=&quot;nu0&quot;&gt;9000&lt;/span&gt;
ECHO Starting nginx...
&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;d D:\nginx-0.8.39 &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; start nginx.exe&lt;/pre&gt;

&lt;p&gt;
Или вы можете попробовать &lt;a href=&quot;https://github.com/MrBertie/start-nginx&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/MrBertie/start-nginx&quot; rel=&quot;ugc nofollow&quot;&gt;Start-Nginx&lt;/a&gt;, если вы предпочитаете обычный графический интерфейс Windows.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;DokuWiki \u0441 nginx \u043d\u0430 Windows&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;dokuwiki_\u0441_nginx_\u043d\u0430_windows&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;6233-7500&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;конфигурация_linux_для_debian_8&quot;&gt;Конфигурация Linux для Debian 8&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
У вас уже должны быть установлены nginx и php5-fpm.
&lt;/p&gt;

&lt;p&gt;
В зависимости от вашего выбора ваша PHP-часть в документах сайта может быть с носками или портами.
&lt;/p&gt;

&lt;p&gt;
Вы просто копируете и вставляете то, что работает для вас.
&lt;/p&gt;

&lt;p&gt;
Эта конфигурация сайта не имеет SSL и использует перезапись &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt;
&lt;/p&gt;

&lt;p&gt;
в этом примере dokuwiki находится в корне домена с именем exempl.net
&lt;/p&gt;

&lt;p&gt;
Как &lt;strong&gt;root&lt;/strong&gt;:
&lt;/p&gt;

&lt;p&gt;
создайте новый файл сайта nginx:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;nano&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nginx&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-available&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;exempl.net&lt;/pre&gt;

&lt;p&gt;
Вы вставляете код ниже, конечно же, меняете путь к вашей doku wiki и меняете server_name:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;server &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
      listen &lt;span class=&quot;nu0&quot;&gt;80&lt;/span&gt;;
      root &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;exempl.net;
      server_name exempl.net;
      index index.php index.html doku.php;
      location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;conf&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;bin&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;inc&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              &lt;span class=&quot;kw3&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;404&lt;/span&gt;;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      location ~ ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;\.&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;gif&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;png&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;ico&lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt;jpg&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              expires 31d;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      location &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              try_files &lt;span class=&quot;re1&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;re1&quot;&gt;$uri&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;dokuwiki;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
      location &lt;span class=&quot;sy0&quot;&gt;@&lt;/span&gt;dokuwiki &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
              rewrite ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;_media&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;exe&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;fetch.php?&lt;span class=&quot;re2&quot;&gt;media&lt;/span&gt;=&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt;;
              rewrite ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;_detail&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lib&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;exe&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;detail.php?&lt;span class=&quot;re2&quot;&gt;media&lt;/span&gt;=&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt;;
              rewrite ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;_export&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;doku.php?&lt;span class=&quot;re2&quot;&gt;do&lt;/span&gt;=export_&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;id&lt;/span&gt;=&lt;span class=&quot;re4&quot;&gt;$2&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt;;
              rewrite ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;tag&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;doku.php?&lt;span class=&quot;re2&quot;&gt;id&lt;/span&gt;=tag:&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;do&lt;/span&gt;=showtag&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re2&quot;&gt;tag&lt;/span&gt;=tag:&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt;;
              rewrite ^&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;doku.php?&lt;span class=&quot;re2&quot;&gt;id&lt;/span&gt;=&lt;span class=&quot;re4&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re1&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;last&lt;/span&gt;;
      &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
	 &lt;span class=&quot;co0&quot;&gt;# здесь вы вставляете свое местоположение ~ \.php$&lt;/span&gt;
	 &lt;span class=&quot;co0&quot;&gt;# вот мой комментарий&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;# местоположение ~ \.php$ {&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;# включить /etc/nginx/fastcgi_params;&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;# fastcgi_param ИМЯ_ФАЙЛА_СКРИПТА $document_root$fastcgi_script_name;&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;# fastcgi_pass unix:/var/run/php5-fpm.sock;&lt;/span&gt;
     &lt;span class=&quot;co0&quot;&gt;# }&lt;/span&gt;
 &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
и включите его и перезапустите ngnix:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;ln&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-s&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nginx&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-available&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;exempl.net &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;nginx&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-enabled&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&amp;nbsp;
service nginx restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Linux \u0434\u043b\u044f Debian 8&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_linux_\u0434\u043b\u044f_debian_8&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:5,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;7501-9768&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;переписать&quot;&gt;Переписать&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
См. &lt;a href=&quot;http://wiki.nginx.org/&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.nginx.org/&quot; rel=&quot;ugc nofollow&quot;&gt;документацию&lt;/a&gt; &lt;a href=&quot;http://nginx.org/&quot; class=&quot;urlextern&quot; title=&quot;http://nginx.org/&quot; rel=&quot;ugc nofollow&quot;&gt;nginx&lt;/a&gt;. В следующем примере корневой каталог нашего сервера — &lt;code&gt;/var/www&lt;/code&gt;, и мы извлекаем dokuwiki в &lt;code&gt;/var/www/wiki&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt; 80&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; example.com www.example.com&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;span class=&quot;co1&quot;&gt;#максимальный размер загружаемого файла составляет 4 МБ — при необходимости измените его соответствующим образом&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#client_max_body_size&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;client_max_body_size&lt;/span&gt;&lt;/a&gt; 4M&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#client_body_buffer_size&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;client_body_buffer_size&lt;/span&gt;&lt;/a&gt; 128k&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /var/www/wiki&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; doku.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; / &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#try_files&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;try_files&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$uri&lt;/span&gt;/ &lt;span class=&quot;re0&quot;&gt;@dokuwiki&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;@dokuwiki&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_media/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /lib/exe/fetch.php?media&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_detail/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /lib/exe/detail.php?media&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/_export/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;^/&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /doku.php?do&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;export_$1&amp;amp;id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$2 last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^/&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;.*&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; /doku.php?id&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;$1&amp;amp;&lt;span class=&quot;re0&quot;&gt;$args&lt;/span&gt; last&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#location&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;location&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt; \.php$ &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#if&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;if&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;!-f &lt;span class=&quot;re0&quot;&gt;$request_filename&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#return&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;return&lt;/span&gt;&lt;/a&gt; 404&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; fastcgi_params&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; SCRIPT_FILENAME &lt;span class=&quot;re0&quot;&gt;$document_root&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$fastcgi_script_name&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; REDIRECT_STATUS 200&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
        &lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_pass&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_pass&lt;/span&gt;&lt;/a&gt; 127.0.0.1:9000&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;9769-11083&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;примечания&quot;&gt;Примечания&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Если используется https, переменная HTTPS-сервера должна быть установлена, чтобы разрешить правильное связывание в dokuwiki. Это можно сделать в разделе сервера с помощью:
&lt;/p&gt;
&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; HTTPS on&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Ключевое &lt;code&gt;last&lt;/code&gt; слово правил перезаписи перед настройкой местоположения гарантирует, что переписывание происходит только один раз. Вам следует заменить все /dokuwiki/, указанные выше, на ваш каталог вики относительно корневого каталога веб-сервера.
&lt;/p&gt;

&lt;p&gt;
Если вы копируете и вставляете эти конфигурации, обязательно добавьте местоположения для защиты некоторых каталогов, как описано на странице &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:security&quot; class=&quot;wikilink1&quot; title=&quot;wiki:security&quot; data-wiki-id=&quot;wiki:security&quot;&gt;«Безопасность»&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:9,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;11084-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 08 Aug 2024 23:58:03 +0000</pubDate>
        </item>
        <item>
            <title>ubuntu</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:ubuntu&amp;rev=1740230405</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;установка_dokuwiki_под_ubuntu&quot;&gt;Установка DokuWiki под Ubuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Обратите внимание&lt;/strong&gt;, что в репозитории Ubuntu все еще находится версия DokuWiki от 2018-04-22. Эта версия не рекомендуется. Пожалуйста, установите последнюю версию DokuWiki. В инструкции ниже используется версия, загруженная напрямую с dokuwiki.org.
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:ubuntu:ubuntu_18.04_nginx&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:ubuntu:ubuntu_18.04_nginx&quot; data-wiki-id=&quot;wiki:install:ubuntu:ubuntu_18.04_nginx&quot;&gt; Ubuntu 18.04 + Nginx&lt;/a&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 DokuWiki \u043f\u043e\u0434 Ubuntu&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_dokuwiki_\u043f\u043e\u0434_ubuntu&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-559&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ubuntu_1404_and_1604&quot;&gt;Ubuntu 14.04, and 16.04?&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это инструкции по установке одного DokuWiki в Ubuntu 14.04. Другие версии установки обсуждаются ниже. Если вы хотите установить DokuWiki Farm, следуйте этим инструкциям, а затем посетите &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:farms&quot; class=&quot;wikilink2&quot; title=&quot;wiki:farms&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:farms&quot;&gt;страницу Farm Page.&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Обратите внимание, что в репозиториях Ubuntu есть пакет dokuwiki. Если вы хотите его использовать, перейдите на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:debian&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:debian&quot; data-wiki-id=&quot;wiki:install:debian&quot;&gt;страницу установки Debian&lt;/a&gt;. В этой статье описывается установка DokuWiki из tarball. (Пакеты Ubuntu и Debian следуют соглашениям о каталогах Debian, поэтому при использовании пакета Ubuntu/Debian требуются другие шаги).
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt;Для Ubuntu 16.04&lt;/strong&gt; вам нужно будет использовать libapache2-mod-php 7.0 и обязательно установить php7.0-xml, php7.0 с помощью apt-get
&lt;/p&gt;

&lt;p&gt;
При обновлении с Ubuntu 14.04 LTS до Ubuntu 16.04 LTS мне пришлось добавить следующее:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; apt-get установить php7.0&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; apt-get install php-mbstring tt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; apt-get install php7.0-xml&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Это решило все проблемы с восстановлением DokuWiki до нормального состояния, существовавшего до обновлений.
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установка Ubuntu Server 14.04 &lt;a href=&quot;http://askubuntu.com/questions/340965/how-do-i-install-ubuntu-server-step-by-step&quot; class=&quot;urlextern&quot; title=&quot;http://askubuntu.com/questions/340965/how-do-i-install-ubuntu-server-step-by-step&quot; rel=&quot;ugc nofollow&quot;&gt;Пошаговые инструкции со скриншотами&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Обновление и модернизация Ubuntu.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get update&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get upgrade&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установите Apache2 и PHP.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; apache2 libapache2-mod-php php-xml&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Включить модуль Apache Rewrite.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2enmod rewrite&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Загрузите и распакуйте последнюю стабильную версию.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;cd&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;wget&lt;/span&gt; https:&lt;span class=&quot;sy0&quot;&gt;//&lt;/span&gt;download.dokuwiki.org&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;src&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki-stable.tgz
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xvf dokuwiki-stable.tgz
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;mv&lt;/span&gt; dokuwiki-&lt;span class=&quot;sy0&quot;&gt;*/&lt;/span&gt; dokuwiki&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Изменить разрешения.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chown&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-R&lt;/span&gt; www-data:www-data &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Измените корневой каталог документов в Apache так, чтобы он указывал на /var/www/dokuwiki&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;nano&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;sites-enabled&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;000&lt;span class=&quot;sy0&quot;&gt;*&lt;/span&gt;.conf&lt;/pre&gt;

&lt;p&gt;
 Заменить&lt;br/&gt;
&lt;code&gt;DocumentRoot /var/www/html&lt;/code&gt;&lt;br/&gt;
на&lt;br/&gt;
&lt;code&gt;DocumentRoot /var/www/dokuwiki&lt;/code&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы хотите разместить сервер DokuWiki на локальном хосте для целей тестирования, НЕ изменяйте содержимое &lt;code&gt;/etc/apache2/sites-enabled/000*.conf&lt;/code&gt;, вместо этого создайте новый файл &lt;br/&gt;
&lt;code&gt;/etc/apache2/sites-available&lt;/code&gt;&lt;br/&gt;
с &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;touch&lt;/span&gt; apache2-dokuwiki.conf&lt;/pre&gt;

&lt;p&gt;
следующего содержания:
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt;VirtualHost 127.0.0.1&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;
        DocumentRoot &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki
 	ServerName localhost
&lt;span class=&quot;sy0&quot;&gt;&amp;lt;/&lt;/span&gt;VirtualHost&lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; включите новый проект, поместив его в /etc/apache2/sites-enabled с помощью &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2ensite apache2-dokuwiki&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; и затем перезагрузите службу apache2&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service apache2 reload&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Измените настройку AllowOverrides в Apache2, чтобы использовать файлы .htaccess в целях безопасности.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;nano&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;apache2.conf&lt;/pre&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Для каталога &lt;code&gt;/var/www/&lt;/code&gt; замените&lt;br/&gt;
&lt;code&gt;AllowOverride None&lt;/code&gt;&lt;br/&gt;
на&lt;br/&gt;
&lt;code&gt;AllowOverride All&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перезапустите службу Apache2.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service apache2 restart&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Посетите страницу &lt;code&gt;&lt;a href=&quot;http://IP-address-of-your-server/install.php&quot; class=&quot;urlextern&quot; title=&quot;http://IP-address-of-your-server/install.php&quot; rel=&quot;ugc nofollow&quot;&gt;http://IP-address-of-your-server/install.php&lt;/a&gt;&lt;/code&gt; для первоначальной настройки DokuWiki.&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если вы решили разместить DokuWiki на локальном хосте для целей тестирования из пунктов 7a-c, посетите &lt;code&gt;127.0.0.1/install.php&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; После завершения установки удалите файл install.php.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;rm&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;install.php&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Необходимо для отправки электронной почты (например, регистрация пользователя): установить программу sendmail, например postfix &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; postfix&lt;/pre&gt;

&lt;p&gt;
 и настроить соответствующим образом
&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Наслаждайтесь собственным сервером DokuWiki.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ubuntu 14.04, and 16.04?&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ubuntu_1404_and_1604&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;560-5562&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;дополнительная_информация_по_установке&quot;&gt;Дополнительная информация по установке&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Дополнительную информацию об установке и настройке DokuWiki в Ubuntu см. в разделе &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:install:debian_ubuntu_extras&quot; class=&quot;wikilink1&quot; title=&quot;wiki:install:debian_ubuntu_extras&quot; data-wiki-id=&quot;wiki:install:debian_ubuntu_extras&quot;&gt;debian_ubuntu_extras&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f_\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f_\u043f\u043e_\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;5563-5814&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;конфигурация_apache_для_запуска_dokuwiki_в_public_html&quot;&gt;Конфигурация Apache для запуска DokuWiki в ~/public_html&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Это работает с Ubuntu 11.04 natty:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установите &lt;em&gt;apache2&lt;/em&gt; и модуль &lt;em&gt;php5&lt;/em&gt;: &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; apache2 libapache2-mod-php5&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Включите модули &lt;em&gt;userdir&lt;/em&gt; и &lt;em&gt;rewrite&lt;/em&gt;:&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2enmod userdir
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; a2enmod rewrite&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Чтобы сделать свою &lt;code&gt;.htaccess&lt;/code&gt; работу, отредактируйте /etc/apache2/mods-&lt;code&gt;enabled/userdir.conf&lt;/code&gt; и измените &lt;code&gt;AllowOverride&lt;/code&gt; директиву на &lt;code&gt;All&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#fn__1&quot; id=&quot;fnt__1&quot; class=&quot;fn_top&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; По умолчанию php отключен для пользовательских каталогов. Чтобы включить его, закомментируйте строки согласно инструкции в &lt;code&gt;/etc/apache2/mods-enabled/php5.conf&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Перезапустите &lt;code&gt;Apache&lt;/code&gt; с помощью&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; service apache2 restart&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Apache \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 DokuWiki \u0432 ~\/public_html&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f_apache_\u0434\u043b\u044f_\u0437\u0430\u043f\u0443\u0441\u043a\u0430_dokuwiki_\u0432_public_html&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;5815-7007&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;ubuntu_server_1404_и_lighttpd&quot;&gt;Ubuntu Server 14.04 и lighttpd&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Установите lighttpd и php. &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; lighttpd 
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;apt-get install&lt;/span&gt; php5-cgi &lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Загрузите dokuwiki и поместите в каталог www. Измените имя файла соответствующим образом, так как ваш загруженный файл размещен и назван. &lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;tar&lt;/span&gt; xvfz dokuwiki.tgz 
&lt;span class=&quot;kw2&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-l&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; dokuwiki&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;chown&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-R&lt;/span&gt; www-data:www-data &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;var&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;www&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;dokuwiki&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Настройте lighttpd для php.&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; lighttpd-enable-mod fastcgi-php
&lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;etc&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;init.d&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;lighttpd force-reload&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Вот и все. Наслаждайтесь собственным сервером DokuWiki. (Проверьте, работает ли он на вашем &lt;a href=&quot;http://localhost/dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;http://localhost/dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;http://localhost/dokuwiki&lt;/a&gt;)&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Ubuntu Server 14.04 \u0438 lighttpd&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ubuntu_server_1404_\u0438_lighttpd&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;7008-7881&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;установка_dokuwiki_с_помощью_apt-get&quot;&gt;Установка DokuWiki с помощью apt-get&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;apt list dokuwiki&lt;/pre&gt;

&lt;p&gt;
Проверьте дату. Если она больше пары месяцев, то я настоятельно рекомендую остановиться и попробовать описанные выше методы установки.
&lt;/p&gt;
&lt;pre class=&quot;file&quot;&gt;dokuwiki/eoan,now 0.0.20180422.a-2 all [residual-config]&lt;/pre&gt;

&lt;p&gt;
Если вы настаиваете на использовании вышеуказанного пакета, то приведенные ниже шаги помогут вам запустить установку в эксплуатацию.
&lt;/p&gt;

&lt;p&gt;
Примечание:
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; По состоянию на 2 января 2020 г. пакет датирован 22 апреля 2018 г. , что существенно устарело.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; Я обеспокоен тем, что:&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Дополнительные элементы из /var/lib/dokuwiki/ могут потребоваться в /usr/share/dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; Дополнительные элементы из /etc/dokuwiki/ могут потребоваться в /usr/share/dokuwiki&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Изначально есть несколько предупреждений PHP, которые иногда появляются при первом изучении вики, однако они, похоже, исчезают и не возвращаются (часто). Эти проблемы задокументированы на веб-сайте DokuWiki и, как утверждается, исправлены, вероятно, проблемы исчезнут после обновления установочного пакета DokuWiki.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
Предположим, что вы уже установили Apache и PHP (см. выше) и они работают правильно.
&lt;/p&gt;

&lt;p&gt;
Для следующих команд потребуется префикс sudo или su (непослушный).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install dokuwiki&lt;/pre&gt;

&lt;p&gt;
Папки интереса
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /etc/dokuwiki/&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /usr/share/dokuwiki/&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; /var/lib/dokuwiki/&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Пакет apt имеет ряд проблем, которые вам придется решить:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chown www-data:www-data /usr/share/dokuwiki
chown www-data:www-data /usr/share/dokuwiki/* -R
chown www-data:www-data /var/lib/dokuwiki
chown www-data:www-data /var/lib/dokuwiki/* -R
ln -s /var/lib/dokuwiki/data /usr/share/dokuwiki/data
ln -s /etc/dokuwiki/license.php /usr/share/dokuwiki/conf/license.php&lt;/pre&gt;

&lt;p&gt;
Создать виртуальный каталог для Apache
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;nano /etc/apache2/sites-available/dokuwiki.conf&lt;/pre&gt;
&lt;pre class=&quot;file&quot;&gt;Alias /dokuwiki /usr/share/dokuwiki
&amp;lt;Directory /usr/share/dokuwiki&amp;gt;
        Options +FollowSymLinks
        AllowOverride All
        DirectoryIndex index.php
        Order allow,deny
        Allow from all
&amp;lt;/Directory&amp;gt;
AliasMatch ^/dokuwiki/sites/[^/]+$      /usr/share/dokuwiki/
AliasMatch ^/dokuwiki/sites/[^/]+/(.*)$ /usr/share/dokuwiki/$1&lt;/pre&gt;

&lt;p&gt;
Сообщите Apache о необходимости включить виртуальную папку (Примечание: для отключения используйте a2dissite).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;a2ensite dokuwiki
systemctl reload apache2&lt;/pre&gt;

&lt;p&gt;
Откройте веб-браузер и настройте DokuWiki (если у вас PHP 7.x, вы, скорее всего, получите предупреждения).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;http://mysite.dyndns.org/dokuwiki/install.php&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 DokuWiki \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e apt-get&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430_dokuwiki_\u0441_\u043f\u043e\u043c\u043e\u0449\u044c\u044e_apt-get&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:20,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;7882-&amp;quot;} --&gt;&lt;div class=&quot;footnotes&quot;&gt;
&lt;div class=&quot;fn&quot;&gt;&lt;sup&gt;&lt;a href=&quot;#fnt__1&quot; id=&quot;fn__1&quot; class=&quot;fn_bot&quot;&gt;1)&lt;/a&gt;&lt;/sup&gt; 
&lt;div class=&quot;content&quot;&gt;&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt;:  кто-то, кто лучше меня разбирается в Apache, вероятно, может предложить «более безопасную» настройку для &lt;code&gt;AllowOverride&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 22 Feb 2025 13:20:05 +0000</pubDate>
        </item>
        <item>
            <title>blog</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:blog&amp;rev=1768936731</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;blog_plugin&quot;&gt;Blog Plugin&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;pluginrepo_entry&quot;&gt;&lt;div class=&quot;usageInfo&quot;&gt;&lt;div class=&quot;compatibility&quot;&gt;&lt;p class=&quot;label&quot;&gt;Совместим с «Докувики»&lt;/p&gt;&lt;div class=&quot;versions&quot;&gt;&lt;ul&gt;&lt;li class=&quot;yes&quot;&gt;2024-02-06 &quot;Kaos&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2023-04-04 &quot;Jack Jackrum&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2022-07-31 &quot;Igor&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li class=&quot;yes&quot;&gt;2020-07-29 &quot;Hogfather&quot;&amp;nbsp;&lt;strong&gt;&lt;span&gt;да&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul class=&quot;actions&quot;&gt;&lt;li&gt;&lt;a class=&quot;download&quot; href=&quot;https://github.com/dokufreaks/plugin-blog/archive/master.zip&quot;&gt;Скачать&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;bugs&quot; href=&quot;https://github.com/dokufreaks/plugin-blog/issues&quot;&gt;Баг-трекер&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;clearer&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;mainInfo&quot;&gt;&lt;p class=&quot;description&quot;&gt;&lt;a class=&quot;media&quot; href=&quot;/doku.php?id=plugins&quot;&gt;&lt;img alt=&quot;plugin&quot; class=&quot;medialeft&quot; align=&quot;left&quot; src=&quot;/lib/plugins/pluginrepo/images/dwplugin.png&quot; width=&quot;60&quot; height=&quot;60&quot; /&gt;&lt;/a&gt; Используйте DokuWiki в качестве инструмента для ведения блога.&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;metaInfo&quot;&gt;&lt;dl&gt;&lt;dt&gt;Последнее обновление:&lt;/dt&gt;&lt;dd&gt;2023-10-24&lt;/dd&gt;&lt;dt&gt;Предоставляет&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=1#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Syntax plugins&quot;&gt;Syntax&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=16#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Helper plugins&quot;&gt;Helper&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintype=4#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all Action plugins&quot;&gt;Action&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Репозиторий&lt;/dt&gt;&lt;dd&gt;&lt;a class=&quot;urlextern&quot; href=&quot;https://github.com/dokufreaks/plugin-blog&quot;&gt;исходный код&lt;/a&gt;&lt;/dd&gt;&lt;dt&gt;Требует&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:include&quot; data-wiki-id=&quot;wiki:plugin:include&quot;&gt;include&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:pagelist&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:pagelist&quot; data-wiki-id=&quot;wiki:plugin:pagelist&quot;&gt;pagelist&lt;/a&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div class=&quot;moreInfo&quot;&gt;&lt;p class=&quot;similar&quot;&gt;Похож на &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:blogtng&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:blogtng&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:blogtng&quot;&gt;blogtng&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:miniblog&quot; class=&quot;wikilink2&quot; title=&quot;wiki:plugin:miniblog&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;wiki:plugin:miniblog&quot;&gt;miniblog&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;tags&quot;&gt;Теги: &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=blog#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin&amp;amp;plugintag=news#extension__table&quot; class=&quot;wikilink1&quot; title=&quot;List all plugins with this tag&quot;&gt;news&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;needed&quot;&gt;Нужен для &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:feed&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:feed&quot; data-wiki-id=&quot;wiki:plugin:feed&quot;&gt;feed&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;authorInfo&quot;&gt;&lt;strong&gt;- &lt;a href=&quot;mailto:&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Dokufreaks (previous author: Michael Hamann, Gina Häußge, Michael Klier, Esther Brunner)&lt;/a&gt;&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:include&quot; data-wiki-id=&quot;wiki:plugin:include&quot;&gt;include&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:tag&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:tag&quot; data-wiki-id=&quot;wiki:plugin:tag&quot;&gt;tag&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:feed&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:feed&quot; data-wiki-id=&quot;wiki:plugin:feed&quot;&gt;feed&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:include&quot; data-wiki-id=&quot;wiki:plugin:include&quot;&gt;include&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:meta&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:meta&quot; data-wiki-id=&quot;wiki:plugin:meta&quot;&gt;meta&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:pagelist&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:pagelist&quot; data-wiki-id=&quot;wiki:plugin:pagelist&quot;&gt;pagelist&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Blog Plugin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;blog_plugin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-867&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;описание&quot;&gt;Описание&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Плагин «Блог» упрощает создание блогов в вашей вики. Компонент «Блог» отображает последние записи (страницы) из пространства имен в обратном хронологическом порядке. В этой новой версии в качестве ключа сортировки используется дата создания — это больше не дата последнего существенного изменения, как в предыдущих версиях. Компонент «Архив» отображает все записи, созданные в течение указанного месяца.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;868-1642&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;монтаж&quot;&gt;Монтаж&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Используйте менеджер плагинов для установки или…
&lt;/p&gt;
&lt;ol&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; скачать zip-файл&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; распаковать его в&amp;lt;dokuwiki&amp;gt;/lib/plugins/&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; войдите как администратор и измените плагин в менеджере конфигурации&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u043e\u043d\u0442\u0430\u0436&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u043e\u043d\u0442\u0430\u0436&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1643-1984&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;installation&quot;&gt;Installation&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;div class=&quot;table sectionedit5&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot;&gt;  Download   &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; &lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/tarball/master&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/tarball/master&quot; rel=&quot;ugc nofollow&quot;&gt;plugin-blog.tgz&lt;/a&gt;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot;&gt;  BundleHub  &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Configure your own DokuWiki blogsuite install package, consisting of all mandatory plugins plus any optional features you want to include: &lt;br/&gt;
&lt;a href=&quot;http://dokuwiki.foosel.org/blogsuite/index.php&quot; class=&quot;urlextern&quot; title=&quot;http://dokuwiki.foosel.org/blogsuite/index.php&quot; rel=&quot;ugc nofollow&quot;&gt;BlogSuite BundleHub&lt;/a&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;strong&gt; The Bundle Hub is currently out of date and not updated any more, please install the plugins individually&lt;/strong&gt; &lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/exclaim.svg&quot; class=&quot;icon smiley&quot; alt=&quot;:!:&quot; /&gt; &lt;br/&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Site seems to be down for sime time, &lt;a href=&quot;http://web.archive.org/web/20120110121631/http://dokuwiki.foosel.org/blogsuite/index.php&quot; class=&quot;urlextern&quot; title=&quot;http://web.archive.org/web/20120110121631/http://dokuwiki.foosel.org/blogsuite/index.php&quot; rel=&quot;ugc nofollow&quot;&gt;here is the archived version&lt;/a&gt; if you want to see possible optional plugins &amp;amp; features.  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 centeralign&quot;&gt;  Tips       &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; If you intend to use this plugin be sure to take a look at the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:blogging&quot; class=&quot;wikilink2&quot; title=&quot;tips:blogging&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:blogging&quot;&gt;blogging tips page&lt;/a&gt;                                                                                                                                                                                                                                                                                                                                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;2011-3738&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Installation&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;installation&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1985-3739&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;syntax&quot;&gt;Syntax&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;blog&quot;&gt;Blog&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;{{blog&amp;gt;[namespace]?[number]&amp;amp;[flags]}}&lt;/pre&gt;
&lt;div class=&quot;table sectionedit7&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [namespace] &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; namespace for the blog; subspaces will be searched as well; &lt;code&gt;*&lt;/code&gt; is the whole wiki, &lt;code&gt;.&lt;/code&gt; is the same namespace as the page lies in  &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional; default is the blog namespace set in the configuration &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [number] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; number of entries to show per page &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional; default is 5 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot; rowspan=&quot;5&quot;&gt; [flags] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; flags are delimited by &lt;code&gt;&amp;amp;&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; all &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:include#configuration_and_flags&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:include&quot; data-wiki-id=&quot;wiki:plugin:include&quot;&gt;Include plugin flags&lt;/a&gt; are supported &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Form placement: &lt;code&gt;topform&lt;/code&gt;/&lt;code&gt;bottomform&lt;/code&gt;/&lt;code&gt;noform&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; optional, default is &lt;code&gt;topform&lt;/code&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Custom new-entry form title: &lt;code&gt;newentrytitle=Custom title&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; optional, can also be set as a &lt;a href=&quot;#configuration_and_settings&quot; title=&quot;wiki:plugin:blog ↵&quot; class=&quot;wikilink1&quot;&gt;configuration option&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;td class=&quot;col0&quot;&gt; Hide paging controls: &lt;code&gt;nopagingcontrols&lt;/code&gt; &lt;/td&gt;&lt;td class=&quot;col1&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table1&amp;quot;,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;3815-4584&amp;quot;} --&gt;
&lt;p&gt;
This includes a specified number of most recent blog entries from the given namespace into the current page. Below the entries a link to the page (permalink), the author, the creation date and the number of comments are shown. Link, author, date and comments info can be hidden. At the end of the blog a link to older entries lets you navigate in the history of the blog. At the very end, if you have enough rights to create new pages, a form for new blog entries is displayed.
&lt;/p&gt;

&lt;p&gt;
Note that when the page with the blog syntax is in the specified namespace, content my be shown twice. At some point, the loop will be detected and stopped. You should therefore make sure that either the page with the listing is in a different namespace or use the &lt;code&gt;excluded_pages&lt;/code&gt;-option to explicitly exclude the blog page from the blog listing.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;archive&quot;&gt;Archive&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;{{archive&amp;gt;[namespace]?[month]&amp;amp;[flags]&amp;amp;author=[username]}}&lt;/pre&gt;
&lt;div class=&quot;table sectionedit8&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [namespace] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; the namespace for which you want an archive list; &lt;code&gt;*&lt;/code&gt; is the whole wiki, &lt;code&gt;.&lt;/code&gt; is the same namespace as the page lies in &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional; default is the namespace specified in the configuration &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [month] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; the month for the archive list in YYYY-MM format; &lt;code&gt;*&lt;/code&gt; for all pages &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; required &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [flags] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; pagelist flags delimited by &lt;code&gt;&amp;amp;&lt;/code&gt;, see &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:plugin:pagelist#flags&quot; class=&quot;wikilink1&quot; title=&quot;wiki:plugin:pagelist&quot; data-wiki-id=&quot;wiki:plugin:pagelist&quot;&gt;flags&lt;/a&gt; &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0&quot;&gt; [username] &lt;/th&gt;&lt;td class=&quot;col1&quot;&gt; username of an author &lt;/td&gt;&lt;td class=&quot;col2&quot;&gt; optional &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table2&amp;quot;,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;5495-5931&amp;quot;} --&gt;
&lt;p&gt;
Shows a table with all pages of the given namespace that were created in the specified month.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{autoarchive&amp;gt;[namespace]}}&lt;/pre&gt;

&lt;p&gt;
Creates an automatic archive.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Syntax&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;syntax&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;3740-6090&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;configuration_and_settings&quot;&gt;Configuration and Settings&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
The blog plugin can be configured using the DokuWiki configuration manager available in the admin menu.
&lt;/p&gt;
&lt;div class=&quot;table sectionedit10&quot;&gt;&lt;table class=&quot;inline&quot;&gt;
	&lt;tr class=&quot;row0&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;namespace&lt;/code&gt;         &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; The default namespace which is used if no namespace was given in the syntax                                                                                                                                   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row1&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;formposition&lt;/code&gt;      &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; You can choose to display the new entry form either above or below the blog entries                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row2&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;newentrytitle&lt;/code&gt;     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Set a custom title for all new entry forms.  This can also be set on individual blog forms.                                                                                                                   &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row3&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;dateprefix&lt;/code&gt;        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; A date prefix that automatically gets added to pages created with the new entry form. You can use the options from the strftime PHP function; namespace separators work as well, e.g. &lt;code&gt;%Y:%m%d&lt;/code&gt;  &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row4&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;sortkey&lt;/code&gt;           &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Defines how the blog entries are sorted. Available options are creation date, modification date, page name, page ID and page title (first headline)                                                           &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row5&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;sortorder&lt;/code&gt;         &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Sort the blog entries ascending/descending                                                                                                                                                                    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row6&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;excluded_pages&lt;/code&gt;    &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Exclude certain pages from the blog listing. Requires a regular expression. Use for example &lt;code&gt;!(^|:)start$!&lt;/code&gt; in order to exclude start pages from all blog listings.  &lt;br/&gt;
To exclude both start and rightsidebar directly below :blog use &lt;br/&gt;
&lt;code&gt;!(^|:)blog:(start|rightsidebar)$!&lt;/code&gt;    &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row7&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;showhistogram&lt;/code&gt;     &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Display a histogram in normal archive mode (not for autoarchive)                                                                                                                                              &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row8&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;max_months&lt;/code&gt;        &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Maximum number of months to show in the histogram                                                                                                                                                             &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr class=&quot;row9&quot;&gt;
		&lt;th class=&quot;col0 leftalign&quot;&gt; &lt;code&gt;histogram_height&lt;/code&gt;  &lt;/th&gt;&lt;td class=&quot;col1 leftalign&quot;&gt; Height of the histogram (in pixels)                                                                                                                                                                           &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;table&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;table3&amp;quot;,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;6236-8651&amp;quot;} --&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Configuration and Settings&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;configuration_and_settings&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;6091-8652&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;changes&quot;&gt;Changes&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;2013-10-20&lt;/strong&gt;: Translation updates, fix cache handling for empty blog listings&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1 node&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;2013-03-27&lt;/strong&gt;: Better cache handling for the archive syntax&lt;/div&gt;
&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the syntax that lists everything till now correctly updates the cache now whenever a page is changed or a comment or linkback is added.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt; the cache is not used anymore when it contains an archive listing with a page that the current user can&amp;#039;t access. The excluded pages won&amp;#039;t be included again automatically unless the cache expires for other reasons, the &lt;code&gt;~~NOCACHE~~&lt;/code&gt; macro can be used if this is needed.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Changes&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;changes&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;8653-9248&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;development&quot;&gt;Development&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;

&lt;h4 id=&quot;change_log&quot;&gt;Change Log&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul class=&quot;rss&quot;&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/c4b00e79a13fc5a88a3b9bb4d4669bb18427c802&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/c4b00e79a13fc5a88a3b9bb4d4669bb18427c802&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #126 from dokuwiki-translate/lang_update_848_17143…&lt;/a&gt; (2024/05/01 18:45)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/82c22b5472f8eaee17a5cae1b5f47bd75cb461f6&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/82c22b5472f8eaee17a5cae1b5f47bd75cb461f6&quot; rel=&quot;ugc nofollow&quot;&gt;translation update&lt;/a&gt; (2024/04/29 09:20)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/a23a795c008ce738c509615fa426436a04052827&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/a23a795c008ce738c509615fa426436a04052827&quot; rel=&quot;ugc nofollow&quot;&gt;Version upped&lt;/a&gt; (2023/10/25 00:50)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/ce24dd8b6ee266191708ef305191f4015bc2405c&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/ce24dd8b6ee266191708ef305191f4015bc2405c&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #121 from fiwswe/fix_issue_120&lt;/a&gt; (2023/10/24 20:51)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/a161f89305bd1884ac35511ddda838b72b5e5aca&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/a161f89305bd1884ac35511ddda838b72b5e5aca&quot; rel=&quot;ugc nofollow&quot;&gt;Rename constructor&lt;/a&gt; (2023/10/24 13:10)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/27d20113c28132f209f1e333935b813d0e7bc34e&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/27d20113c28132f209f1e333935b813d0e7bc34e&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #118 from dokuwiki-translate/lang_update_564_16764…&lt;/a&gt; (2023/02/16 22:25)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/0961408a79d2172026d9d9c5f12b686b46f64cc8&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/0961408a79d2172026d9d9c5f12b686b46f64cc8&quot; rel=&quot;ugc nofollow&quot;&gt;translation update&lt;/a&gt; (2023/02/15 03:35)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div class=&quot;li&quot;&gt;&lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/commit/506b0e9c02e60d349394d23b8d96db085c25f5ff&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/commit/506b0e9c02e60d349394d23b8d96db085c25f5ff&quot; rel=&quot;ugc nofollow&quot;&gt;Merge pull request #117 from dokuwiki-translate/lang_update_551_16745…&lt;/a&gt; (2023/01/24 23:45)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;

&lt;h4 id=&quot;bugs_feature_requests&quot;&gt;Bugs / Feature Requests&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Please report bugs or feature requests at the &lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/issues&quot; rel=&quot;ugc nofollow&quot;&gt;Bug tracker&lt;/a&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Development&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;development&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;9249-9516&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;faq&quot;&gt;FAQ&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Please also have a look at the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=tips:blogging&quot; class=&quot;wikilink2&quot; title=&quot;tips:blogging&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;tips:blogging&quot;&gt;blogging&lt;/a&gt; tips page!
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;my_dates_are_shown_wrong_what_can_i_do&quot;&gt;My dates are shown wrong. What can I do?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Make sure you run the latest version of all required plugins and DokuWiki.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;is_it_possible_to_change_the_way_the_date_is_displayed&quot;&gt;Is it possible to change the way the date is displayed?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Yes, the plugin uses the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=config:dformat&quot; class=&quot;wikilink2&quot; title=&quot;config:dformat&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;config:dformat&quot;&gt;dformat&lt;/a&gt; option to format the date.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;how_can_i_alter_the_date_of_a_blog_post&quot;&gt;How can I alter the date of a blog post?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
You can use the &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=plugin:meta&quot; class=&quot;wikilink2&quot; title=&quot;plugin:meta&quot; rel=&quot;nofollow&quot; data-wiki-id=&quot;plugin:meta&quot;&gt;meta&lt;/a&gt; plugin to manually set the creation date (and modification date) in the page source, then select the modification date in the blog plugins order setting. An alternative solution would be to alter the timestamps of the created files.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;is_it_possible_to_show_table_of_contents&quot;&gt;Is it possible to show table of contents?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The table of contents is shown automatically (depending on the settings in DokuWiki itself) from version 2013-02-07 on.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;the_header_is_always_a_link_to_the_page_even_though_it_s_disabled_in_the_include_plugin_settings&quot;&gt;The header is always a link to the page even though it&amp;#039;s disabled in the include plugin settings&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
The blog plugin assumes that in the context of a blog the header should be a link. However from version 2013-02-26 on it is possible to disable this behavior by using the &lt;code&gt;nolink&lt;/code&gt;-flag, the blog plugin now only sets a default without overriding the &lt;code&gt;nolink&lt;/code&gt; flag.
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;is_it_possible_to_show_just_the_first_lines_of_each_post_with_a_read_more_link_to_view_the_full_post&quot;&gt;Is it possible to show just the first lines of each post with a &amp;#039;Read more&amp;#039; link to view the full post?&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
I think I solved myself.
In the blog mark, use the following flags
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{blog&amp;gt;?5&amp;amp;firstseconly&amp;amp;readmore}}&lt;/pre&gt;

&lt;p&gt;
This will work if you add an H2 header (in the full post) where you want to make appear the &amp;#039;Read more&amp;#039; link.
If you don&amp;#039;t need or want an H2 header in your post, you can add a empty H2 header, just as a delimiter for the text you want to show in the Blog&amp;#039;s headlines
&lt;/p&gt;

&lt;/div&gt;

&lt;h4 id=&quot;the_excluded_pages_does_not_work&quot;&gt;the excluded_pages does not work&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
In the blog mark ,use the following flags
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;{{blog&amp;gt;*?5&amp;amp;!(^|:)index$!}}
or
{{blog&amp;gt;*?5&amp;amp;excluded_pages=!(^|:)index$!}}&lt;/pre&gt;

&lt;p&gt;
all above flags does not work, the index pages in sub namespace is still included .
&lt;/p&gt;
&lt;blockquote&gt;&lt;div class=&quot;no&quot;&gt;
 This is global configuration, you should configure it in &lt;code&gt;Configuration Manager&lt;/code&gt;. — &lt;em&gt;Siyuan Liu 2023-08-17&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;FAQ&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;faq&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;9517-11574&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;discussion&quot;&gt;Discussion&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Please report bugs or feature requests at the &lt;a href=&quot;https://github.com/dokufreaks/plugin-blog/issues&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/dokufreaks/plugin-blog/issues&quot; rel=&quot;ugc nofollow&quot;&gt;Bug tracker&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Is it possible to make a blog in one namespace be in ascending order, and a blog in a different namespace to be in descending order?
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Discussion&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;discussion&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;11575-11844&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;обновление&quot;&gt;Обновление&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для обновления удалите исходную папку lib/plugins/displaywikipage и установите новую версию, как указано выше.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;11845-12055&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;файл_для_загрузки&quot;&gt;Файл для загрузки&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;https://wwoss.direct.quickconnect.to/lib/exe/fetch.php?media=wiki:plugin:plugin-blog-master.zip&quot; class=&quot;media mediafile mf_zip&quot; title=&quot;wiki:plugin:plugin-blog-master.zip (67.2 KB)&quot;&gt;plugin-blog-master.zip&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0430\u0439\u043b \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0444\u0430\u0439\u043b_\u0434\u043b\u044f_\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;12056-12141&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;лицензия&quot;&gt;Лицензия&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;Author:&lt;/strong&gt; &lt;a href=&quot;mailto:&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot; class=&quot;mail&quot; title=&quot;&amp;#102;&amp;#114;&amp;#101;&amp;#97;&amp;#107;&amp;#115;&amp;#64;&amp;#100;&amp;#111;&amp;#107;&amp;#117;&amp;#119;&amp;#105;&amp;#107;&amp;#105;&amp;#46;&amp;#111;&amp;#114;&amp;#103;&quot;&gt;Dokufreaks (previous authors: Michael Hamann, Gina Häußge, Michael Klier, Esther Brunner)&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; &lt;strong&gt;License:&lt;/strong&gt; &lt;a href=&quot;http://www.opensource.org/licenses/gpl-license.php&quot; class=&quot;urlextern&quot; title=&quot;http://www.opensource.org/licenses/gpl-license.php&quot; rel=&quot;ugc nofollow&quot;&gt;GNU GPL v2&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Это не обязательно, но, пожалуйста, рассмотрите возможность ссылки на &lt;a href=&quot;https://www.dokuwiki.org/plugin:blog&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:blog&quot; rel=&quot;ugc nofollow&quot;&gt;эту страницу&lt;/a&gt; с вашего сайта, если вам нравится этот продукт.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12142-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Tue, 20 Jan 2026 19:18:51 +0000</pubDate>
        </item>
        <item>
            <title>httpslogin</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:tips:httpslogin&amp;rev=1723165278</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;принудительный_вход_через_https&quot;&gt;Принудительный вход через HTTPS&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 HTTPS&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439_\u0432\u0445\u043e\u0434_\u0447\u0435\u0440\u0435\u0437_https&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-67&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;плагины&quot;&gt;Плагины&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043f\u043b\u0430\u0433\u0438\u043d\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;68-92&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit3&quot; id=&quot;forcessllogin&quot;&gt;forcessllogin&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
См. &lt;a href=&quot;https://www.dokuwiki.org/plugin:forcessllogin&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:forcessllogin&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/plugin:forcessllogin&lt;/a&gt;, похоже, не отражает доступ SSL в &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; , т.е. страница «Докувики», доступ к которой запрещен, не будет открыта по протоколу https, что затрудняет отладку и обеспечение безопасного входа в систему.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;forcessllogin&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;forcessllogin&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;93-508&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;апачи&quot;&gt;Апачи&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Используя mod_rewrite Apache, можно принудительно использовать HTTPS для входа в DokuWiki, тем самым предотвращая передачу паролей в открытом виде.
&lt;/p&gt;

&lt;p&gt;
Вам также может понадобиться, чтобы все запросы (а не только вход) использовали HTTPS. Для этого создайте файл .htaccess в корневом каталоге DokuWiki и вставьте следующий код.
&lt;/p&gt;
&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:tips:httpslogin&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_htaccess&quot;&gt;.htaccess&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{HTTPS} !&lt;span class=&quot;kw2&quot;&gt;on&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; (.*) https://%{HTTP_HOST}/$1 [R,L]&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;

&lt;p&gt;
Если вы хотите принудительно задать только какой-то определенный &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; , сначала прочтите статью &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:rewrite&quot; class=&quot;wikilink1&quot; title=&quot;wiki:rewrite&quot; data-wiki-id=&quot;wiki:rewrite&quot;&gt;о перезаписи URL&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
Перенаправление на защищенное соединение, которое ограничено определенным набором страниц (например, страницы входа), требует их распознавания на основе &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; . Некоторые страницы (например, страницы «доступ запрещен», которые могут быть включены только в более новых версиях, например, 2014-05-05 «Ponder Stibbons» &amp;lt;ref&amp;gt; &lt;a href=&quot;https://www.dokuwiki.org/plugin:ondeniedlogin&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/plugin:ondeniedlogin&quot; rel=&quot;ugc nofollow&quot;&gt;https://www.dokuwiki.org/plugin:ondeniedlogin&lt;/a&gt; &amp;lt;/ref&amp;gt;) не включают такую ​​метку и не могут быть отделены от остальных &lt;abbr title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/abbr&gt; (к которым может потребоваться доступ без защищенного соединения для экономии ресурсов сервера).
&lt;/p&gt;

&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; Остальная часть параграфа обрабатывает только запросы с &lt;code&gt;?do=login&lt;/code&gt; запросом GET, который не охватывает по крайней мере страницы «доступ запрещен»! Необходимо исследование правила перенаправления для всех запросов аутентификации по HTTP.
Смотрите обсуждение для решения.
&lt;/p&gt;

&lt;p&gt;
Далее предполагается, что вы уже настроили поддержку HTTPS для своей вики, сделав ее доступной по HTTP и HTTPS по одному и тому же адресу. По соображениям производительности только вход в систему и обновления профиля должны быть принудительно переведены на HTTPS, в то время как все «нормальные» действия вики будут продолжать работать по HTTP.
&lt;/p&gt;

&lt;p&gt;
Поскольку вам необходимо настроить куки через HTTPS для работы на HTTP, вам необходимо сначала отключить опцию securecookie . Затем приступайте к настройке перенаправления в вашем &lt;code&gt;.htaccess&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;code apache&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# Переключиться на безопасный режим при входе в систему, профиле и действиях администратора &lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteEngine&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;On&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{HTTPS} !&lt;span class=&quot;kw2&quot;&gt;on&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{QUERY_STRING} do=(log|profile|admin)
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^(.*) https://%{HTTP_HOST}/$1 [R,QSA,L,NE]
&amp;nbsp;
&lt;span class=&quot;co1&quot;&gt;# Изменить обратно на небезопасный режим при показе действия &lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{HTTPS} &lt;span class=&quot;kw2&quot;&gt;on&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{QUERY_STRING} !do=(log|profile|admin)
&lt;span class=&quot;kw1&quot;&gt;RewriteCond&lt;/span&gt; %{REQUEST_METHOD} GET
&lt;span class=&quot;kw1&quot;&gt;RewriteRule&lt;/span&gt; ^(.*) http://%{HTTP_HOST}/$1 [R,QSA,L]&lt;/pre&gt;

&lt;p&gt;
Возможно, вы захотите изменить &lt;code&gt;${HTTP_HOST}&lt;/code&gt; его на &lt;code&gt;${SERVER_NAME}&lt;/code&gt;, где имя сервера совпадает с именем хоста в вашем SSL-сертификате.
&lt;/p&gt;

&lt;p&gt;
Примечания:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; выше переключает обратно на не-SSL только на действии show. Это означает, что переключение может не произойти немедленно после входа, но гарантирует отсутствие предупреждений о «смешанном контенте» во время операции SSL.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; если у вас есть другие правила переписывания, например, те, которые &lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?id=wiki:rewrite&quot; class=&quot;wikilink1&quot; title=&quot;wiki:rewrite&quot; data-wiki-id=&quot;wiki:rewrite&quot;&gt;используются при общем переписывании&lt;/a&gt;, поместите эти правила перед остальными.&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Если каталог установки DokuWiki не является корневым каталогом (например, &lt;a href=&quot;http://example.com/wiki/&quot; class=&quot;urlextern&quot; title=&quot;http://example.com/wiki/&quot; rel=&quot;ugc nofollow&quot;&gt;http://example.com/wiki/&lt;/a&gt;) , вам необходимо добавить этот дополнительный путь к строкам 5 и 11 приведенного выше фрагмента, что будет выглядеть примерно так:&lt;code&gt;RewriteRule ^(.*) &lt;a href=&quot;http://%&quot; class=&quot;urlextern&quot; title=&quot;http://%&quot; rel=&quot;ugc nofollow&quot;&gt;http://%&lt;/a&gt;{HTTP_HOST}/wiki/$1 [R,QSA,L]&lt;/code&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0410\u043f\u0430\u0447\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0430\u043f\u0430\u0447\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;509-5756&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit5&quot; id=&quot;защищенный_cookie&quot;&gt;защищенный cookie&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
&lt;strong&gt;Обратите внимание&lt;/strong&gt;: вам необходимо отключить « securecookie », &lt;code&gt;conf/dokuwiki.php&lt;/code&gt; чтобы приведенный выше код работал. В противном случае ваши входы не будут успешно регистрироваться. Это происходит потому, что при включенном securecookie сеансовый cookie, созданный во время входа HTTPS, не может быть отправлен по HTTP, и сеанс теряется.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439 cookie&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u044b\u0439_cookie&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;5757-6365&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit6&quot; id=&quot;nginx&quot;&gt;nginx&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Такая настройка также возможна в nginx, но с небольшой доработкой fastcgi_params.
&lt;/p&gt;

&lt;p&gt;
Во-первых, вам нужно иметь отдельные экземпляры сервера, для &lt;code&gt;http&lt;/code&gt; и &lt;code&gt;https&lt;/code&gt; каждый, чтобы поддерживать чистоту (и &lt;code&gt;rewrite&lt;/code&gt; не запутаться и не попасть в ловушку redir loops). Это может выглядеть так. Каждый экземпляр имеет свое собственное правило перезаписи для переключения с http на https.
&lt;/p&gt;
&lt;pre class=&quot;code nginx&quot;&gt;&lt;span class=&quot;co1&quot;&gt;# Протестировано с nginx 0.8.5&lt;/span&gt;
&lt;span class=&quot;co1&quot;&gt;# В http-контексте вашей конфигурации nginx&lt;/span&gt;
&lt;a href=&quot;http://wiki.nginx.org/NginxHttpMapModule#map&quot;&gt;&lt;span class=&quot;kw21&quot;&gt;map&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;re0&quot;&gt;$scheme&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$php_https&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt; default off&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; https on&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; wiki.host.org
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /path/to/dokuwiki&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; doku.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt; 80&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;#Enforce https for logins, admin&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#if&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;if&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt;* do&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;log|admin|profile&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^ https://&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$request_uri&lt;/span&gt;? redirect&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; dokuwiki.conf&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#server_name&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;server_name&lt;/span&gt;&lt;/a&gt; wiki.host.org&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#root&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;root&lt;/span&gt;&lt;/a&gt; /path/to/dokuwiki&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpIndexModule#index&quot;&gt;&lt;span class=&quot;kw15&quot;&gt;index&lt;/span&gt;&lt;/a&gt; doku.php&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#listen&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;listen&lt;/span&gt;&lt;/a&gt; 443 &lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#keepalive_requests&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;keepalive_requests&lt;/span&gt;&lt;/a&gt;    10&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#keepalive_timeout&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;keepalive_timeout&lt;/span&gt;&lt;/a&gt;     60 60&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_certificate&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_certificate&lt;/span&gt;&lt;/a&gt;      /etc/&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;/certs/ssl-cert-snakeoil.pem&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl_certificate_key&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl_certificate_key&lt;/span&gt;&lt;/a&gt;  /etc/&lt;a href=&quot;http://wiki.nginx.org/NginxHttpSslModule#ssl&quot;&gt;&lt;span class=&quot;kw33&quot;&gt;ssl&lt;/span&gt;&lt;/a&gt;/private/ssl-cert-snakeoil.key&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;co1&quot;&gt;#switch back to plain http for normal view&lt;/span&gt;
&amp;nbsp;
	&lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#if&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;if&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;~&lt;/span&gt;* &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;do&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt;show|^$&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
		&lt;a href=&quot;http://wiki.nginx.org/NginxHttpRewriteModule#rewrite&quot;&gt;&lt;span class=&quot;kw24&quot;&gt;rewrite&lt;/span&gt;&lt;/a&gt; ^ &lt;a href=&quot;http://wiki.nginx.org/NginxHttpCoreModule#http&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;http&lt;/span&gt;&lt;/a&gt;://&lt;span class=&quot;re0&quot;&gt;$host&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$request_uri&lt;/span&gt;? redirect&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
	&lt;a href=&quot;http://wiki.nginx.org/CoreModule#include&quot;&gt;&lt;span class=&quot;kw1&quot;&gt;include&lt;/span&gt;&lt;/a&gt; dokuwiki.conf&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
В &lt;code&gt;dokuwiki.conf&lt;/code&gt; (тот же путь, что и у вашего nginx.conf) вы можете использовать &lt;a href=&quot;http://wiki.nginx.org/Dokuwiki&quot; class=&quot;urlextern&quot; title=&quot;http://wiki.nginx.org/Dokuwiki&quot; rel=&quot;ugc nofollow&quot;&gt;фрагмент из вики nginx&lt;/a&gt;, но вам &lt;em class=&quot;u&quot;&gt;нужно&lt;/em&gt; добавить
&lt;/p&gt;
&lt;pre class=&quot;code nginx&quot;&gt;&lt;a href=&quot;http://wiki.nginx.org/NginxHttpFcgiModule#fastcgi_param&quot;&gt;&lt;span class=&quot;kw11&quot;&gt;fastcgi_param&lt;/span&gt;&lt;/a&gt; HTTPS &lt;span class=&quot;re0&quot;&gt;$php_https&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
в ваш fastcgi_params. Этот параметр и &lt;code&gt;map&lt;/code&gt; директива в начале обязательны, поскольку Dokuwiki проверяет $_SERVER[&amp;#039;HTTPS&amp;#039;] для работы.
&lt;/p&gt;

&lt;p&gt;
Как и в случае с Apache, вам необходимо отключить Securecookie в вашем &lt;code&gt;conf/dokuwiki.php&lt;/code&gt;.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nginx&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;6366-8533&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;https_на_основе_php&quot;&gt;HTTPS на основе PHP&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Ниже полезно, если вы хотите принудительно использовать https-соединение ВСЕГДА (не только для входа) и не хотите полагаться на Apache или NGINX htaccess или другие специфичные для сервера директивы. Поместите следующие строки в начало файла шаблона в &lt;code&gt;&amp;#039;…lib/tpl/template-name/main.php&lt;/code&gt;&amp;#039;
&lt;/p&gt;
&lt;pre class=&quot;code php&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;HTTPS&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;on&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;//$strURIName=$_SERVER[&#039;SERVER_NAME&#039;] . getenv(&amp;quot;REQUEST_URI&amp;quot;); &lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Функция &#039;getenv&#039; не работает, если ваш API сервера - ASAPI (IIS). &lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Поэтому постарайтесь использовать не getenv(&#039;REMOTE_ADDR&#039;), а $_SERVER[&amp;quot;REMOTE_ADDR&amp;quot;].&lt;/span&gt;
  &lt;span class=&quot;re0&quot;&gt;$strURIName&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;SERVER_NAME&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$_SERVER&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;REQUEST_URI&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;a href=&quot;http://www.php.net/header&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;header&lt;/span&gt;&lt;/a&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;Location: https://&lt;span class=&quot;es4&quot;&gt;$strURIName&lt;/span&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// Если это не работает для вас и вам нужно устранить неполадки в вашем PHP-коде, &lt;/span&gt;
  &lt;span class=&quot;co1&quot;&gt;// раскомментируйте ниже, чтобы узнать о ваших конкретных переменных сервера &lt;/span&gt;
  &lt;span class=&quot;coMULTI&quot;&gt;/*
  echo &amp;quot;&amp;lt;b&amp;gt;_SERVER Variables from $_SERVER&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;;
  reset($_SERVER);
  while (list ($key, $val) = each ($_SERVER)) {
  print $key . &amp;quot; = &amp;quot; . $val . &amp;quot;&amp;lt;br&amp;gt;&amp;quot;;
  }
  */&lt;/span&gt;
&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span class=&quot;sy1&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Спасибо. Это спасло мой день!
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://www.dokuwiki.org/tips:httpslogin#discussion&quot; class=&quot;urlextern&quot; title=&quot;https://www.dokuwiki.org/tips:httpslogin#discussion&quot; rel=&quot;ugc nofollow&quot;&gt;Обсуждение&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;HTTPS \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 PHP&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;https_\u043d\u0430_\u043e\u0441\u043d\u043e\u0432\u0435_php&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;8534-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 09 Aug 2024 01:01:18 +0000</pubDate>
        </item>
        <item>
            <title>parallelregex.php</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:inc:parsing:lexer:parallelregex.php&amp;rev=1737045807</link>
            <description>&lt;dl class=&quot;code&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;https://wwoss.direct.quickconnect.to/doku.php?do=export_code&amp;amp;id=wiki:xref:dokuwiki:inc:parsing:lexer:parallelregex.php&amp;amp;codeblock=0&quot; title=&quot;Скачать фрагмент кода&quot; class=&quot;mediafile mf_php_&quot;&gt;ParallelRegex.php &lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;pre class=&quot;code php&quot;&gt;&lt;ol&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* Lexer adapted from Simple Test: http://sourceforge.net/projects/simpletest/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* For an intro to the Lexer see:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* https://web.archive.org/web/20120125041816/http://www.phppatterns.com/docs/develop/simple_test_lexer_notes&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;*&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* @author Marcus Baker http://www.lastcraft.com&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;namespace&lt;/span&gt; dokuwiki\Parsing\Lexer&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* Compounded regular expression.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;*&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;* Any of the contained patterns could match and when one does it&#039;s label is returned.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;kw2&quot;&gt;class&lt;/span&gt; ParallelRegex&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/** @var string[] patterns to match */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$patterns&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/** @var string[] labels for above patterns */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$labels&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/** @var string the compound regex matching all patterns */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$regex&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/** @var bool case sensitive matching? */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$case&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Constructor. Starts with no patterns.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param boolean $case    True for case sensitive, false&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                         for insensitive.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; __construct&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$case&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$case&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Adds a pattern with an optional label.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param mixed       $pattern Perl style regex. Must be UTF-8&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             encoded. If its a string, the (, )&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             lose their meaning unless they&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             form part of a lookahead or&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             lookbehind assertation.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param bool|string $label   Label of regex to be returned&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             on a match. Label must be ASCII&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; addPattern&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$label&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$count&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$label&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Attempts to match all patterns at once against a string.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param string $subject      String to match against.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param string $match        First matched portion of&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *                             subject.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @return bool|string         False if no match found, label if label exists, true if not&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; apply&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getCompoundedRegex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$match&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$size&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;co1&quot;&gt;// FIXME this could be made faster by storing the labels as keys in a hashmap&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$size&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Attempts to split the string against all patterns at once&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param string $subject      String to match against.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @param array $split         The split result: array containing, pre-match, match &amp;amp; post-match strings&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @return boolean             True on success.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @author Christopher Smith &amp;lt;chris@jalakai.co.uk&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; &lt;a href=&quot;http://www.php.net/split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$split&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_match&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getCompoundedRegex&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/function_exists&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;function_exists&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;preg_last_error&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;re0&quot;&gt;$err&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_last_error&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_last_error&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$err&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PREG_BACKTRACK_LIMIT_ERROR&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                        msg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;A PCRE backtrack error occured. Try to increase the pcre.backtrack_limit in php.ini&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PREG_RECURSION_LIMIT_ERROR&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        msg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;A PCRE recursion error occured. Try to increase the pcre.recursion_limit in php.ini&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PREG_BAD_UTF8_ERROR&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        msg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;A PCRE UTF-8 error occured. This might be caused by a faulty plugin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; PREG_INTERNAL_ERROR&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        msg&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;A PCRE internal error occured. This might be caused by a faulty plugin&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$split&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;a href=&quot;http://www.php.net/list&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;list&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$post&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/preg_split&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_split&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getPerlMatchingFlags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$subject&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;re0&quot;&gt;$split&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$pre&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$matches&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$post&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;a href=&quot;http://www.php.net/isset&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; ? &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;labels&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$idx&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Compounds the patterns into a single&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * regular expression separated with the&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * &amp;quot;or&amp;quot; operator. Caches the regex.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Will automatically escape (, ) and / tokens.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    *&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @return null|string&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getCompoundedRegex&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;kw4&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$cnt&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/count&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;kw1&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$cnt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;coMULTI&quot;&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                * decompose the input pattern into &amp;quot;(&amp;quot;, &amp;quot;(?&amp;quot;, &amp;quot;)&amp;quot;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                * &amp;quot;[...]&amp;quot;, &amp;quot;[]..]&amp;quot;, &amp;quot;[^]..]&amp;quot;, &amp;quot;[...[:...:]..]&amp;quot;, &amp;quot;\x&amp;quot;...&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                * elements.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;a href=&quot;http://www.php.net/preg_match_all&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;preg_match_all&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/\\\\.|&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                               &lt;span class=&quot;st_h&quot;&gt;&#039;\(\?|&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                               &lt;span class=&quot;st_h&quot;&gt;&#039;[()]|&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                               &lt;span class=&quot;st_h&quot;&gt;&#039;\[\^?\]?(?:\\\\.|\[:[^]]*:\]|[^]\\\\])*\]|&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                               &lt;span class=&quot;st_h&quot;&gt;&#039;[^[()\\\\]+/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$elts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                &lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;kw1&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$elts&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;kw1&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$elt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;coMULTI&quot;&gt;/*&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                    * for &amp;quot;(&amp;quot;, &amp;quot;)&amp;quot; remember the nesting level, add &amp;quot;\&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                    * only to the non-&amp;quot;(?&amp;quot; ones.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;coMULTI&quot;&gt;&amp;nbsp;                    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;kw1&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$elt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                            &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\(&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                                &lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;--;&lt;/span&gt; &lt;span class=&quot;coMULTI&quot;&gt;/* closing (? */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\\&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;)&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(?&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;re0&quot;&gt;$level&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;++;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                            &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;(?&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                        &lt;span class=&quot;kw1&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/substr&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;substr&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$elt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\\&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                                &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$elt&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;                            &lt;span class=&quot;kw1&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$pattern&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.=&lt;/span&gt; &lt;a href=&quot;http://www.php.net/str_replace&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;str_replace&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;\/&#039;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$elt&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;                &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$i&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;(&lt;span class=&quot;es4&quot;&gt;$pattern&lt;/span&gt;)&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;            &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;            &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;a href=&quot;http://www.php.net/implode&quot;&gt;&lt;span class=&quot;kw3&quot;&gt;implode&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;st0&quot;&gt;&amp;quot;|&amp;quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;patterns&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;getPerlMatchingFlags&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;me1&quot;&gt;regex&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;co4&quot;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * Accessor for perl regex mode flags to use.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    * @return string       Perl regex flags.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;co4&quot;&gt;&amp;nbsp;    */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;kw2&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;function&lt;/span&gt; getPerlMatchingFlags&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li2&quot;&gt;&lt;div class=&quot;de2&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;        &lt;span class=&quot;kw1&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;re0&quot;&gt;$this&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span class=&quot;kw1&quot;&gt;case&lt;/span&gt; ? &lt;span class=&quot;st0&quot;&gt;&amp;quot;msS&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;msSi&amp;quot;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;    &lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;li1&quot;&gt;&lt;div class=&quot;de1&quot;&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;
&lt;/dd&gt;&lt;/dl&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 16 Jan 2025 16:43:27 +0000</pubDate>
        </item>
        <item>
            <title>totranslate</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:lib:plugins:translation:lang:de:totranslate&amp;rev=1380231005</link>
            <description>
&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; &lt;strong&gt;Diese Seite wurde noch nicht vollständig übersetzt. Bitte helfen Sie bei der Übersetzung.&lt;/strong&gt;&lt;br/&gt;
&lt;em&gt;(diesen Absatz entfernen, wenn die Übersetzung abgeschlossen wurde)&lt;/em&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Thu, 26 Sep 2013 21:30:05 +0000</pubDate>
        </item>
        <item>
            <title>totranslate</title>
            <link>https://wwoss.direct.quickconnect.to/doku.php?id=wiki:xref:dokuwiki:lib:plugins:translation:lang:ko:totranslate&amp;rev=1381613405</link>
            <description>
&lt;p&gt;
&lt;img src=&quot;https://wwoss.direct.quickconnect.to/lib/images/smileys/fixme.jpg&quot; class=&quot;icon smiley&quot; alt=&quot;FIXME&quot; /&gt; &lt;strong&gt;이 문서는 아직 완전히 번역되지 않았습니다. 번역을 완료하는 데 도와주세요.&lt;/strong&gt;&lt;br/&gt;
&lt;em&gt;(번역을 마치면 이 단락을 지우세요)&lt;/em&gt;
&lt;/p&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sat, 12 Oct 2013 21:30:05 +0000</pubDate>
        </item>
    </channel>
</rss>
