PmWiki.ru минималистичный wiki-движок, работающий без базы данных

FAQ по PmWiki

Типовые операции, частозадаваемые вопросы и частоотвечаемые ответы по движку

Общие вопросы:

Как обновлять PmWiki? В чем разница между папками /wiki.d и /wikilib.d?

В папке wikilib.d хранится "дефолтный контент" PmWiki. Движок сначала ищет файлы в wiki.d и, если не находит, продолжает поиск в wikilib.d Страницы wikilib.d защищены от изменений: при модификации страницы wikilib.d, результат будет сохранен в новом файле в wiki.d. Если вы используете PmWiki не для классической коллективной wiki, а в качестве CMS, перед открытием сайта рекомендуется переместить из wikilib.d в wiki.d все страницы, относящиеся к настройке сайта (Site.* и SiteAdmin.*) Остальные файлы можно просто удалить: это поможет избежать снижения рейтинга уникальности сайта в поисковых системах (не будет контента, дублирующегося на других сайтах), а также упростит анализ контента сайта: поиск "битых ссылок" и т.д. При обновлении системы достаточно просто скопировать новый дистрибутив PmWiki поверх сайта (не забыв сделать backup!), кроме папки wikilib.d Лучше всего оставить этот контент "как есть" и закрыть раздел от индексации.

Вывод мертвых ссылок "одним кликом" через refcount.php

Комплексный анализ контента всего сайта осуществляется скриптом /scripts/refcount.php Скрипт рассчитан на работу с формой ввода, использующей метод post. Однако параметры также могут задаваться через адресную строку, например так: Main.WikiSandbox?action=refcount&whichrefs=missing&submit=1&showrefs=1 Это дает возможность вывести все "мертвые" ссылки сайта кучей по одной ссылке. Синтаксис обращения можно понять изучив вышеуказанный пример и файл /scripts/refcount.php

Для активации сервиса необходимо добавить include_once('scripts/refcount.php'); в config.php

Как сгенерить и передать в макет дизайна wiki-код?

Если на выходе выполнения вашего рецепта появляется wiki-код, его можно исполнить в шаблоне дизайна, или просто передать как текст.

Пример:
В php в рецепте получаем wiki-код: $Demo = PRR().implode('',file('http://www.finar.ru/Base/DesignFinarRu?action=source'));

В шаблоне дизайна:

  • <!--markup:$Demo--> приведет к исполнению этого wiki-кода
  • $Demo приведет к отображению сплошного текста без обработки
Пароль на страницу? изменение доступа?

К адресу страницы добавить ?action=attr.

Увидеть код страницы?

К адресу страницы добавить ?action=source.

Где редактировать макеты вывода списков страниц для функции pagelist?

Вот где: Site.LocalTemplates

Преобразовать табличку из Word, Excel в pmwiki? Сделать это online?

Вот рецепт, можно воспользоваться им же online в режиме редактирования.

Что доступно в config.php

Переменные:
  • $pagename - имя текущей страницы ( Main.HomePage ), похоже (внимание!) что оно определяется просто через адресную строку. То есть на странице memofilm.ru/Rate/ $pagename = Rate, что может вызвать проблемы.
Массивы:
  • Как добавить свой код в <!--HTMLHeader--> или <!--HTMLFooter--> макета дизайна? Расширить массив вот так: $HTMLHeaderFmt['toggleobj'] = "html-код-код-код";
Функции:
  • PageVar() - возвращает параметры страницы. Пример: {{{PageVar($pagename, '$Group');}}} вернет Имя Группы текущей страницы
  • ReadPage($pagename) - возвращает массив, содержащий данные переданной в качестве параметра страницы. Другими словами, читает содержимое вики-файла в массив.
  • функция для генерации input:
SDVA($InputTags["e_$field"], array(
	 ':html' => "<input type='text' \$InputFormArgs />",
	 'name' => "$field-form", 
	 'checked' => '', 
	 'class' => "$field-input", 
	 'value' => $fieldValue
	 )); 
здесь :html - обязательный элемент массива, генерит базовый html, остальные - вставляются на место $InputFormArgs при генерации html

PmWiki как движок Finar.ru

Работа с Группами в контексте дизайна сайта

В PmWiki предусмотрен механизм изменения дизайна для конкретных Групп или Страниц. Делается это очень просто - путем создания файла /pub/css/GroupName.css для группы и /pub/css/GroupName.css для конкретной страницы. Это было бы диво как удобно, если бы не наш PhPh-Pack todo. Конечно, можно быстро создавать дополнительный CSS для любой страницы, но это CSS, а не LESS, поэтому работать с ним будет не удобно.

Логичнее и проще - просто добавлять CSS-класс Группы или странице к... хоть бы и к Body (как это смело!). В этом случае можно будет просто зайти в LESS и начать сразу писать код.