Для того, чтобы развернуть на своей площадке такой же сайт необходимо установить и настроить ядро DokuWiki, установить и настроить тему, установить и настроить необходимые плагины.
Ниже представлен примерный перечень шагов с описаниями, которые может быть необходимо выполнить:
$conf['savedir'] = '/data2';
conf/local.php
$conf['useacl'] = 1; // this enables the ACL feature $conf['superuser'] = '@admin'; // admin group is superuser
ya http://www.yandex.ru/yandsearch?text= google.ru http://www.google.ru/search?q=
putenv("TZ=Europe/Moscow");// - для PHP4 date_default_timezone_set("Europe/Moscow"); // - для PHP5
mpp application/vnd.ms-project vsd application/vnd.visio mp3 audio/mpeg rar application/x-rar-compressed djvu application/x.djvu djv application/x.djvu
если установить плагин plugin:txtconf, то добавить эти строки в mime.conf можно с помощью этого плагина.
Better Navigation Template - тема, в которой название сайта помещено в левый угол, сделана подсветка активной страницы в списке посещённых, добавлено боковое меню для разделов сайта.
После установки темы необходимо скопировать в папку темы из папки стандартной темы lib\tpl\default\ файлы _admin.css
, _mediaoptions.css
и _linkwiz.css
, а также добавить пару строк в файл style.ini
в раздел [stylesheets]
:
_admin.css = screen _linkwiz.css = screen _mediaoptions.css = screen
Тема, использованная на этом сайте - Better Navigation Template с небольшими исправлениями.
ach Template - тема с левым боковым меню, встроенным обсуждением для каждой страницы, удобное управление.
Эта программа вставляет тройку символов в самое начало файла (EF BB BF), по которым определяет, что это UTF-8 кодировка, что иногда приводит к сбоям в PHP скриптах и порче разметки сайтов.
Конечно, эти символы не есть личная придумка Microsoft - это один из способов отмечать UTF-8 документы. Но MS Notepad не умеет сохранять документы без этого префикса.
Используйте редакторы, умеющие правильно работать с UTF-84).
Плагин для подключения статистики от Google Analytics.
Надо модифицировать шаблон, вставив в файл lib/tpl/…./main.php
следующие строки:
было: </body> </html> стало: </body> <?php if (file_exists(DOKU_PLUGIN.'googleanalytics/code.php')) include_once(DOKU_PLUGIN.'googleanalytics/code.php'); if (function_exists('ga_google_analytics_code')) ga_google_analytics_code(); ?> </html>
Вставляет блок кнопок для создания закладок на публичных серверах типа http://del.icio.us
Вставляет ссылки на служебные функции/специальные страницы DokuWiki. Например, Все страницы.
{{actionlink>[action]|[title]}}
Элемент action может принимать следующие значения:
Элемент title является необязательным. Он позволяет вставить другой текст вместо стандартного 'Редактировать страницу', 'Старые версии', 'Недавние изменения', и т.д.
Позволяет автоматически форматировать простые химические формулы, например: 10C2H5OH, 2H3PO4, Al(OH)3, Fe3+, 15[Cat]32+[Anion]23-, N0, N+1, 238Pu
<chem>10C2H5OH, 2H3PO4, Al(OH)3, Fe3+, 15[Cat]3|2+[Anion]2|3-, N0, N+1, 238^Pu</chem>
Очищает кэш и удаляет старые версии документов
Выводит список ссылок на текущую страницу:
{{backlinks>.}}
data/pages
5):find . -name \*.txt -exec sed -i -e 's/~~BACKLINKS~~/{{backlinks>.}}/' {} \;
Перестраивает индекс для полнотекстового поиска
Иногда плагин не работает и выдаёт ошибку
Warning: array_keys(): The first argument should be an array in ...\inc\indexer.php on line 56 Warning: join(): Bad arguments in ...\inc\indexer.php on line 56
В таком случае может помочь исправление в файле inc\indexer.php:
// добавить следующую строку if (!is_array($links)) { $links = Array($links); } // перед строчкой $tmp = join(' ',array_keys($links));
Оформляет текст как заметку ( Выглядит по-разному в Explorer'е и Firefox'е)
<note>обычная заметка</note> <note tip>заметка-подсказка</note> <note important>важная заметка</note> <note warning>заметка-предупреждение</note>
Переименовывает и переносит страницы между разными пространствами имён
Добавляет форму отправки комментариев к странице, фактически позволяет разместить на странице ветку форума. Пример смотри в конце этой страницы.
~~DISCUSSION:off~~
Выводит номер ICQ с отображением текущего статуса пользователя (запрашивает картинку с сервера ICQ): 123456789
/lib/plugins/icq
[[icq>123456789]]
Выделяет текст цветом: выделение по умолчанию выделение нужным цветом (red)
/lib/plugins/highlight
<hi>текст</hi> <hi red>текст</hi> <hi #A8F1F2>текст</hi> <hi rgb(255,34,123)>текст</hi>
текст текст текст текст
Выводит файлы сделанные в FreeMind в виде интерактивного Flash или Java.
lib/plugins/command/ext
conf/mime.conf
строчку:mm text/xml
Пример использования:
#freemind?type=flash(dokuwiki.mm)#
#freemind?type=flash(dokuwiki.mm)#
Позволяет делать архивную копию страниц, предыдущих версий, meta-данных, media-файлов, файлов конфигурации, тем и плагинов.
lib/plugins/backup
Миграция со старых версий
Когда обновляется DokuWiki со старой версии, которая ещё не поддерживала функцию «транслитерация» сталкиваешься с проблемой, что получается практически нечитабельная структура файлов и директорий.
Например : «%D0%BA%D1%8B%D1%80%D0%B3%D1%8B%D0%B7%D1%81%D1%82%D0%B0%D0%BD.txt» это тоже самое, что «кыргызстан.txt»
Это происходит потому что имена файлов в UTF-8 подвергаются url-кодированию.
В последних версиях DokuWiki есть опция «транслитерация» для того, чтобы изменить такое поведение. Однако простая смена настроек DokuWiki недостаточна - все старые файлы переименованы не будут.
Для того, чтобы конвертировать нечитабельную файловую структуру в «транслитерированный формат» был написан следующий скрипт:
<?php if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); require_once(DOKU_INC.'inc/utf8.php'); /** * Copy a file, or recursively copy a folder and its contents, and clean up the filenames according to the dokuwiki UTF-8 * * @original_author Aidan Lister <aidan@php.net> * @link http://aidanlister.com/repos/v/function.copyr.php * @param string $source Source path * @param string $dest Destination path * @return bool Returns TRUE on success, FALSE on failure */ function copyr($source, $dest) { $dest2=cleanID($dest); echo $source."->".$dest." ->$dest2<br/>"; // Simple copy for a file if (is_file($source)) { return copy($source, $dest2); } // Make destination directory if (!is_dir($dest)) { mkdir($dest2); } // Loop through the folder $dir = dir($source); while (false !== $entry = $dir->read()) { // Skip pointers if ($entry == '.' || $entry == '..') { continue; } // Deep copy directories if ($dest !== "$source/$entry") { copyr("$source/$entry", "$dest/$entry"); } } // Clean up $dir->close(); return true; } copyr("/srv/www/htdocs/data/","/srv/www/htdocs/datanew/"); // пути к папкам на сервере (исходный и конечный) function cleanID($id,$ascii=false){ $id = trim(urldecode($id)); $id = utf8_strtolower($id); $id = utf8_romanize($id); utf8_deaccent($id,-1); $id = preg_replace('#\'+#','_',$id); return($id); } ?>
В скрипте надо исправить путь к директории с данными, поместить его в папку bin и запустить из браузера www.yoursite.ru/bin/convert.php
После этого будет создана папка с копией данных но в транслитерированном формате. Теперь осталось только зайти в настройки DokuWiki, исправить путь к папке с данными на datanew и выбрать вариант «Полная транслитерация в именах страниц», а также «Использовать первый заголовок вместо имени».
Также может потребоваться чистка кэша DokuWiki (для этого можно использовать соответствующий плагин).
image/x.djvu
, однако в таком случае они будут переданы на обработку в графическую библиотеку, которая попытается (безуспешно) сделать иконку. С типом application/x.djvu
DokuWiki поступает проще - делает для таких файлов ссылку на скачивание и даёт стандартную иконку.