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

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


wiki:namespaces

Пространства имён

В «ДокуВики» вы можете использовать так называемые «пространства имён» или «именные пространства» для упорядочивания ваших статей.1)

Создание пространства имён

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

Примеры
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», лежащем, в свою очередь, в текущем именном пространстве2).

Удаление пространства имён

Если все статьи внутри пространства имён удалены, это пространство имён логически перестаёт существовать. «ДокуВики» обычно удаляет соответствующую ему пустую директорию.

Как переименовать пространство имён?

Ручной способ

Для того, чтобы переименовать пространство имён вручную, вам придется сделать следующее:

  • Переименовать директории, которые представляют данное пространство имён в:
    • 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 (т. е. греческий, русский и т. д.).

  • Поправьте, отредактировав, все ссылки на статью в перемещённом пространстве имён (вы можете отыскать их перед преименованием пространства имен, просмотрев обратные ссылки во всех статьях данного пространства.
  • Просмотрите все статьи в новом пространстве имён. Это создаст отсутствующую индексную информацию и метаданные для статей перемещённого пространства имён.

Однако у вас все ещё останется достаточно всякого «хлама». Например, в 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
  • Просмотрите все статьи в вашей вики.

Оговорка: Я понимаю, что это весьма замысловато (и, возможно, я пропустил или перепутал пару вещей, которые нужно было сделать). В конце концов всё это — PITA3). Вы также можете использовать пару доступных плагинов для построения/перестройки поисковых индексов всей вики, очистки содержимого кэша и/или старых версий, что избавит вас от ручной работы.

Способ с использованием плагинов

Вы можете использовать сторонний плагин «PageMove»4) для переноса каждой страницы из старого пространства имён в новое. Пожалуйста, обратитесь к документации, чтобы убедиться, что это то, что вам нужно.

Ссылки по умолчанию в пространстве имён

Можно задавать ссылку на файл по умолчанию для пространства имён, заканчивая ссылку двоеточием: [[foo:bar:]]. На какую статью указывает ссылка, зависит от наличия файлов с определёнными именами. Для [[foo:bar:]] проверяется существование следующих страниц:

foo:bar:$conf['start']
foo:bar:bar
foo:bar

Статьи проверяются в этом порядке и ссылка указывает на первую найденную. Множественное связывание не производится для таких ссылок5).

:!: Это свойство доступно только в версиях 2006-09-28 RC1 и выше.

1)
На сервере, который обслуживает «ДокуВики», пространство имён — это обычная директория, в которой находятся текстовые файлы — статьи «ДокуВики».
2)
Статья по умолчанию может называться не только «start», для этого надо указать нужное значение в настройках «ДокуВики».
3)
Шило в заднице.
4)
Плагин не совместим с версий «Лемминг».
5)
Autoplural linking is not done for those links.
wiki/namespaces.txt · Последние изменения: 2012/07/06 11:50 — Izotop