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

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


wiki:namespaces

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

wiki:namespaces [2012/07/06 11:50] (текущий)
Izotop создано
Строка 1: Строка 1:
 +====== Пространства имён ======
  
 +В «[[dokuwiki|ДокуВики]]» вы можете использовать так называемые «пространства имён» или «именные пространства» для упорядочивания ваших статей.((На сервере,​ который обслуживает «ДокуВики»,​ пространство имён — это обычная директория,​ в которой находятся текстовые файлы — статьи «ДокуВики».))
 +
 +===== Создание пространства имён =====
 +
 +Для создания пространств имён не нужно предпринимать каких-то специальных действий:​ просто используйте двоеточие «:» в [[pagename|названиях статей]]. Часть названия после последнего двоеточия станет названием статьи (файла),​ а всё, что находится «до», станет именным пространством (последовательностью вложенных директорий). Если такого именного пространства ещё нет, оно создастся автоматически.
 +
 +^   ​Примеры ^^  ​
 +|example\\ .example\\ .:​example ​ |Статья «example» находится в **текущем** именном пространстве. ​ |
 +|:​example ​ |Статья «example» находится в **корневом** именном пространстве. ​ |
 +|..example\\ ..:​example\\ .:​..:​example ​ |Статья «example» находится в **родительском** именном пространстве (директории на уровень выше). ​ |
 +|wiki:​example ​ |Статья «example» находится в именном пространстве «wiki». Именное пространство «wiki» вложено в **корневое** именное пространство. ​ |
 +|ns1:​ns2:​example\\ :​ns1:​ns2:​example ​ |Статья «example» находится в именном пространстве «ns2». Пространство «ns2» расположено в пространстве «ns1», которое,​ в свою очередь,​ лежит в **корневом** именном пространстве. |
 +|.ns1:​ns2:​example\\ .:​ns1:​ns2:​example |Статья «example» находится в именном пространстве «ns2». Пространство «ns2» расположено в пространстве «ns1», лежащем,​ в свою очередь,​ в **текущем** именном пространстве. ​ |
 +|..ns1:​ns2:​example\\ ..:​ns1:​ns2:​example ​ |Ссылается на статью <<​example>>​ в именном пространстве <<​ns2>>​. Пространство <<​ns2>>​ расположено ниже пространства <<​ns1>>;​ пространство <<​ns1>>​ расположено на том же уровне,​ что и **текущее** именное пространство (таким образом **текущее** пространство и пространство <<​ns1>>​ находятся ниже одного и того же **родительского** пространства).|
 +|.ns1:​ns2: ​ |Ссылается на страницу «start» в именном пространстве «ns2». Именное пространство «ns2» расположено в  именном пространстве «ns1», лежащем,​ в свою очередь,​ в текущем именном пространстве((Статья по умолчанию может называться не только «start», для этого надо указать нужное значение в [[config|настройках «ДокуВики»]].)). ​ |
 +
 +===== Удаление ​ пространства имён =====
 +
 +Если все статьи внутри пространства имён удалены,​ это пространство имён логически перестаёт существовать. «ДокуВики» обычно удаляет соответствующую ему пустую директорию.
 +
 +===== Как переименовать пространство имён? =====
 +
 +==== Ручной способ ====
 +
 +Для того, чтобы переименовать пространство имён вручную,​ вам придется сделать следующее:​
 +  * Переименовать директории,​ которые представляют данное пространство имён в:
 +    * ''​data/​pages''​
 +    * ''​data/​media''​ (если есть)
 +  * Удалить метаданные этого пространства имён в ''​data/​meta''​
 +  * Удалить данные [[attic]] этого пространства имён в ''​data/​attic''​ (или целиком переместить в другое место, если вы хотите сохранить старые версии)
 +
 +Например,​ на Unix-сервере вы можете:​
 +
 +  * ''​mv /​dokuwiki_base/​data/​pages/​old_namespace /​dokuwiki_base/​data/​pages/​new_namespace''​
 +  * ''​mv /​dokuwiki_base/​data/​media/​old_namespace /​dokuwiki_base/​data/​media/​new_namespace''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​meta/​old_namespace''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​attic/​old_namespace''​
 +
 +Обратите внимание,​ что возможно имена ''​old_namespace''​ и/или ''​new_namespace''​ могут быть конвертированы,​ если они не входят набор символов Latin (т. е. греческий,​ русский и т. д.).
 +
 +  * Поправьте,​ отредактировав,​ все ссылки на статью в //​перемещённом//​ пространстве имён (вы можете отыскать их перед преименованием пространства имен, просмотрев [[backlinks|обратные ссылки]] во всех статьях данного пространства.
 +
 +  * Просмотрите все статьи в новом пространстве имён. Это создаст отсутствующую индексную информацию и метаданные для статей перемещённого пространства имён.
 +
 +Однако у вас все ещё останется достаточно всякого «хлама». Например,​ в ''​data/​changes.log'',​ различные файлы в кэше (включая файлы ''​.idx''​ и пр.). Если возможно,​ можете начать с «чистого состояния» как показано ниже (опять же под Unix), но предупреждаем,​ что это приведёт к потере всей «исторической» информации (такой как «последние изменения»):​
 +
 +  * ''​cat /dev/null > /​dokuwiki_base/​data/​changes.log''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​attic/​*''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​cache/?''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​cache/​*.idx''​
 +  * ''​rm -Rf /​dokuwiki_base/​data/​cache/​purgefile''​
 +  * Просмотрите все статьи в вашей вики.
 +
 +**Оговорка:​** Я понимаю,​ что это весьма замысловато (и, возможно,​ я пропустил или перепутал пару вещей, которые нужно было сделать). В конце концов всё это --- PITA((Шило в заднице.)). Вы также можете использовать пару доступных [[plugins|плагинов]] для построения/​перестройки поисковых индексов всей вики, очистки содержимого кэша и/или старых версий,​ что избавит вас от ручной работы.
 +
 +==== Способ с использованием плагинов ====
 +
 +Вы можете использовать сторонний плагин «[[:​plugin:​PageMove]]»((Плагин не совместим с версий «Лемминг».)) для переноса каждой страницы из старого пространства имён в новое. Пожалуйста,​ обратитесь к документации,​ чтобы убедиться,​ что это то, что вам нужно.
 +
 +===== Ссылки по умолчанию в пространстве имён =====
 +
 +Можно задавать ссылку на файл по умолчанию для пространства имён, заканчивая ссылку двоеточием:​ %%[[foo:​bar:​]]%%. На какую статью указывает ссылка,​ зависит от наличия файлов с определёнными именами. Для %%[[foo:​bar:​]]%% проверяется существование следующих страниц:​
 +
 +<​code>​
 +foo:​bar:​$conf['​start'​]
 +foo:bar:bar
 +foo:bar
 +</​code>​
 +
 +Статьи проверяются в этом порядке и ссылка указывает на первую найденную.
 +Множественное связывание не производится для таких ссылок((Autoplural linking is not done for those links.)).
 +
 +:!: **Это свойство доступно только в версиях 2006-09-28 RC1 и выше.**
wiki/namespaces.txt · Последние изменения: 2012/07/06 11:50 — Izotop