DokuWiki

It's better when it's simple

Инструменты пользователя

Инструменты сайта


ru:plugin:mytemplate

Плагин MyTemplate

Совместим с «Докувики»

Angua, Rincewind, Anteater

plugin Сложные шаблоны для страниц

Последнее обновление:
2012-05-14
Предоставляет
Action
Репозиторий
исходный код

Это расширение не обновлялось более двух лет. Возможно, оно больше не разрабатывается или не поддерживается; возможны проблемы совместимости.

This extension is not in the 'plugin' or 'template' namespace and is therefore ignored.

Похож на pagetemplater

Теги: editing, include, meta, page, template

Установка

  • По ссылке:
    • Скопируйте адрес из ссылки «Скачать» из формы вверху этой страницы. Вставьте его в Менеджере Плагинов вашего сайта во вкладке «Ручная установка» в первое поле. Нажмите кнопку «Установить».
  • Скачанный архив:
    • Предложите архив второму полю той же вкладки. Нажмите кнопку «Установить».
    • Распакуйте из архива папку плагина. Правильное наименование папки плагина - в файле plugin.info.txt после указателя base. Переименуйте папку и загрузите на сервер вашего сайта, если понимаете, как это сделать.

Подробности

Синтаксис и использование

Плагин позволяет отделить структуру вики-страницы от содержащейся на ней информации. Это позволяет иметь страницы с различными данными, привязанных к странице с определённой структурой. Технически возможно объединять несколько таких «структурных» страниц.

Я буду продолжать использовать термин «структурная страница» для страниц, которые содержат разметку «ДокуВики» и указатели места заполнения (метки) для данных и «страниц данных», которые содержат информацию для заполнения по соответствующим меткам. Оба типа страниц могут быть просмотрены через вики. Структурные страниц будут отображаться как есть, а страницы с информацией будут отображаться в скомпилированном (собранном) виде (т.е. данные, расположенные в соответствии с определённой структурой).

Пожалуйста, обратите внимание, что плагин написан для решения конкретных задач, так что некоторые функции не могут быть в целом полезным.

Это мой первый плагин для «ДокуВики». И я не очень опытен с PHP, поэтому возможно, что код плагина содержит уязвимости в безопасности и ошибки. Буду очень признателен за любые сообщения.

Объявление структуры страницы

Команды замещения выглядят следующим образом:

~~COMMAND(x[,var]):param1[:param2[:param3]]~[!]~
  • Список доступных команд перечислен в следующем за этим списке.
  • var — не обязателен. Если он задан, результат замены будет сохранён в переменной с этим именем и впоследствии может быть использован повторно.
  • x — задаёт последовательность операций, во время которых происходит замена меток (placeholder). В основном значение данного параметра равно 0, за исключением случаев, когда требуется контроль над очерёдностью (последовательностью) проведения замен. Если это не очень понятно: список команд — это основа, где возможно использование различной последовательности действий по замене.
  • В зависимости от заданной команды, требуется до трёх параметров, разделёных двоеточиями. Заметьте, что параметр может быть также следующей заменяющей командой, при этом вложенность замен разбирается автоматически от самой последней к самой первой.
  • Чтобы плагин MyTemplate ничего не выводил, вы можете разместить восклицательный знак (!) между двух тильд (~), стоящих в конце строки. Это имеет смысл, если вы хотите получить промежуточные результаты, которые будут использоваться позже.

Доступные команды

  • VAR — это ваша основная команда для замены. Принимает один параметр, который будет заменен значением переменной.
    Пример: ~~VAR(0):key~~
  • LOOK This is a map lookup. Вы можете определить массив в «структуре страницы» и использовать переменную, определенную в «странице данных» как индекс. Как объявлять карту — см. «Объявление данных».
    Пример: ~~LOOK(0):MAP:3~~
  • LOOKRANGE — похож на LOOK, но в этой команде карта не должна содержать точного индекса. The map-indices is allowed to have gaps and the index specified in LOOKRANGE is rounded down to the nearest valid key.
  • CALC — позволяет производить математические вычисления, основанные на переменных или результатах предыдущих команд. Все математические операторы и большинство php-функций должны работать.
    Пример: ~~CALC(0):round(~~VAR(0):FOO~~ * ~~VAR(0):BAR~~)~~
  • COUNT — подсчитывает количество вхождений первого параметра во втором.
    Пример: ~~COUNT(0):,:~~VAR(0):FOO ~~ ~~
  • IF — если param1 возвращает «ИСТИНА», будет выводиться param2, иначе будет выведен param3. Please note that in this case only param2 or param3 will even be evaluated, the other also doesn't get its result assigned to a variable.
    Пример: ~~IF(0):~~VAR(0):SAYWHAT~~:what:huh~~
  • REPLACE — заменяет все вхождения значения param2 в значении param1 значением param3.
    Пример: ~~REPLACE:Hello NAME:NAME:~~VAR(0):NAME~~ ~~
  • LIST this creates a dokuwiki table from values supplied on the data page. On the data page you supply a list of rows, each of which consisting of comma separated values (csv). In the structure page, you can refer to each column as @1, @2… Пример для списка:
    WIKISOFTWARE = ( 'ДокуВики', '2009-12-25', 'GPL 2' ),
                   ( 'МедиаВики', '2010-04-07', 'GPL' )

    Использование в шаблоне было бы тогда похоже на это:

    ^ Название ^ Последний выпуск ^ Лицензия ^
    ~~LIST(0):WIKISOFTWARE:[| @0 | @1 | @2 | ]:5~~

    As you can see, the first parameter (WIKISOFTWARE) names the list to display, the second one ([ @0 | @1 | @2 | ] specifies the structure of each row. The final parameter (5) is optional. If set, the table will contain at least that many rows. In the above case, 3 empty lines will be appended (5 minus the 2 lines of content). Of course the cells can contain further replacement commands:

    ~~LIST(0):SOMELIST:[| @0 | ~~IF(1):@1:YES:NO~~ | ]:5~~

    Note that if the pass of these commands is less or equal to the pass of the list-command itself, they will be evaluated BEFORE the list is expanded, otherwise (like in the sample) they are expanded afterwards and will thus refer to the content of the row.

  • NOINCLUDE the content of this command is completely ignored and will not show up in the final page. This can be used to add comments to your template page or temporarily disable part of it.

Объявление данных

Данные объявляются простыми парами «ключ—значение» в одну линию:

VARIABLENAME = VALUE

При объявлении переменной для команды LIST, VALUE — список строк, где строка заключена в скобки:

LIST = (5, true, "foo"),
       (3, false, "bar")

Обратите внимание: текст в строках, идущих после первой, нужно располагать с отступом от начала строки(, чтобы парсер мог работать.)

Объявление переменной должно начинаться тегом [VARIABLES], а заканчиваться — [ENDVARIABLES].

Maps are declared either in the structure page or a seperate data page. In the simple case they are defined like this:

NAME = a, b, c, d, e,
       f, g, h, i, j

В этом случае это — простой массив, индекс «0» (ноль) отобразится на «a», индекс «2» на «c» и т. д. Опять же, не забывайте располагать строки, идущие после первой, с отступом от (левого) края.

Также можно напрямую указать индексы:

NAME = 1 = a, 3 = b, 8 = c 

Это имеет смысл, если LOOKRANGE будет использоваться для поиска. There, 1 and 2 will map to «a», 3,4,5,6 and 7 to «b» and everything else to «c».

Объявление карты должно начинаться тегом [MAPS], а заканчиваться — [ENDMAPS].

Сбор воедино

Наконец, нужно собрать данные. Просто поместите в конце своей «страницы данных» конструкцию вида:

[INCLUDE:namespace:foo:template]

Когда «страница данных» выведена на экран, всё находящееся между [VARIABLES] и [ENDVARIABLES] выполнено (преобразованов в текст), а не напечатано. INCLUDE будет заменён контентом интерпретируемой шаблонной страницы, показывая только то, что будет отображаться. Конечно, вы можете иметь многократный, включает, и таким образом создайте страницу из многократных шаблонов, или Вы можете включать переменные определения от отдельной страницы.

Обсуждение

ru/plugin/mytemplate.txt · Последнее изменение: 2019-11-19 18:56 — Dr-Yukon

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki