version=pmwiki-2.1.5 ordered=1 urlencoded=1 agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 author=Holo csum=a little fix ctime=1142600877 host=195.98.173.2 keywords=categories, tags name=PmWikiRu.Categories rev=6 targets=Category.GroupFooter,PmWikiRu.DocumentationIndex text=(:title Категории:)%0a(:keywords categories, tags:)%0a%25audience%25 авторам (средний)%0a!!Назначение Категорий%0aКатегории (иногда называемые "тэг"/ярлык/) -- это способ организации и поиска родственных страниц. Категории -- это просто удобное соглашение, которое появились во второй версии PmWiki и в большинстве вики не требуют особого кода или разметки. Идея состоит в том, что каждая страница которая имеет отношение к теме ссылается на страницу содержащую ссылки на все страницы по теме. Такие страницы(сборники ссылок) размещаются в группе Category и эти тематические места называют Категориями.%0a%0a%0a!!Использование Категорий%0aДля получения действующих Категорий надо сделать два шага. Во первых, добавьте ссылки на каждую Категорию. Категория с именем Subject создаётся добавляя на любую страницу ссылку на [=Category.Subject=]. После этого страница может считаться относящейся к Категории "Subject".%0a%0aСуществует особый способ разметки ссылок делающий работу Категорий более удобной: [=[[!Subject]]=] даст ссылку на [=Category.Subject=]. Т.е. [=[[!Subject]]=] это краткая запись ссылки на страницу Subject в группе категорий.%0a%0aЕсли вы щёлкните по ссылке катогории, то в начале вы попадёте на пустую страницу с названием Category.Subject. Второй шаг в установке Категорий это изменить поведение страниц в группе Category так, чтобы они показывали список всех страниц ссылающихся на [=Category.Subject=]. Это сделать относительно просто:%0a%0a# Откройте страницу [[Category.GroupFooter]] и начните её редактировать%0a# Добавьте строку [@(:pagelist link=Category.{$Name} list=normal:)@]%0a# Сохраните страницу%0a%0aЭто добавит в конце каждой страницы группы Category список страниц ссылающихся на данную.%0a%0aСтоит заметить, что иногда лучше добавить список в [=Category.GroupHeader=] нежели в [=Category.GroupFooter=]. Это зависит только от того, где вы предпочитаете видеть список страниц: перед или после текста отдельных страниц категорий (которые могут быть изменены как обычные страницы).%0a%0aРазметка [[Cookbook:PagelistExplained|PageList]] с @@link=@@ применима не только в группе категорий. Написав на какой-либо странице [@(:pagelist link=Category.Subject list=normal:)@] вы получите список всех страниц категории Subject. Т.е. нет необходимости распологать "страницу категории" в группе Category -- любая страница может определять "категорию" страниц ссылающихся на неё.%0a%0aКо всему прочему с помощью переменной $CategoryGroup файла ''config.php'' администратор может переопределить изначальное имя группы категорий. %0a%0a!!!Вывод%0aИтак, когда страница [=Category.GroupFooter=] настроена соответствующим образом на странице [=Category.Subject=] показывается список всех страниц содержащих ссылку [=[[!Subject]]=]. Аналогично вы можете сделать страницу [=Category.Movies=] содержащую алфавитный списк всех фильмов обсужаемых на вашей вики -- поместите на каждой странице о фильме ссылку [=[[!Movies]]=].%0a%0a%25audience%25 авторам (средний)%0a!!Вложеность Категорий%0aЕсли страницы вики могут располагаться только по группам, то категории могут произвольно ссылаться друг на друга. Что даёт больше возможностей для построения сложных иерархий. Давайте рассмотрим отличный пример Джона Ранкина. Предположим, что мы имеем следующие страницы фильмов в категориях записаных справа:%0a%0a-> [@%0aFilm.ShaunOfTheDead [[!Horror]] [[!Comedy]] [[!2003]]%0aFilm.InMyFathersDen [[!Drama]] [[!2004]]%0aFilm.TheCorporation [[!Documentary]] [[!2003]]%0a@]%0a%0aТеперь мы можем сделать страницы [@Category.Horror@](ужасы), [@Category.Comedy@](комедия), [@Category.Drama@](драма) и [@Category.Documentary@](документальный). На каждой из них поместим ссылку [@[[!Genre]]@](жанр). А на страницах [@Category.2003@] и [@Category.2004@] -- [@[[!Year]]@](год).%0a%0aИ что же мы увидим на странице [@Category.Genre@]? -- ссылки на "Comedy", "Drama", "Documentary" и "Horror" так как они в категории Genre. Когда мы щёлкаем на одну из ссылок мы видим все фильмы причисленые к одной из категорий. Также, если щёлкнуть на [@Category.Year@] -- мы видим ссылки на "2003" и "2004", каждая из готорых показывает список фильмов на тот год.%0a%0aИ наконец, на страницах [@Category.Genre@] и [@Category.Year@] поместим ссылку [@[[!Category]]@], которая делает их "вершиной" категорий доступных со страницы [@Category.Category@]. Вуаля, теперь у нас есть настоящая "иерархия".%0a%0a-> [@%0aCategory.Category%0a Category.Genre%0a Category.Comedy%0a Film.ShaunOfTheDead%0a Category.Drama%0a Film.InMyFathersDen%0a Category.Documentary%0a Film.TheCorporation%0a Category.Horror%0a Film.ShaunOfTheDead%0a Category.Year%0a Category.2003%0a Film.ShaunOfTheDead%0a Film.TheCorporation%0a Category.2004%0a Film.InMyFathersDen%0a@]%0a%0aОднако заметьте, что это не "строгая" иерархия, т.е. любая страница или категория может прибывать в нескольких категориях единовременно. Например, [@Category.Documentary@] может быть членом и Genre и на "вершине" списков категорий.%0a%0aНа каждой странице категории может быть свой текст, к примеру кратко описывающий категорию. (или может быть пусто, что тоже хорошо.) Она также может содержать связи с родственными категориями (ссылки "также смотри"). Например, у вики о туризме категория "постель и завтрак"(bed and breakfast) может ещё иметь ссылку на категорию "самообеспечение"(self-catering).%0a%0a%25audience%25 администраторам (средний)%0a!!Внутренности разметки Категорий%0a%0aКак уже упоминалось, все необходимые для Категорий свойства разметок уже включены в текущем выпуске PmWiki 2.0. Для любопытствующих расскажем как это работает.%0a%0aИспользование группы Category как репозитория для всех категорий определяется переменной $CategoryGroup, а особая разметка [=[[!Subject]]=] включается вызовом функции Markup():%0a%0a-> [@SDV($CategoryGroup,'Category');%0aMarkup('[[!','%3clinks','/\[\[!([^\|\]] ?)\]\]/',%0a "%3cspan class='category'>[[$CategoryGroup/$1]]%3c/span>");%0a@]%0a%0a%0a!!Хорошая Схема Категорий%0aОдна из самых струдных частей использования категорий -- это выбор названий категорий (или словаря). Управляющие содержимым сайта могут пожелать следовать "Guidelines for the establishment and development of monolingual thesauri"(ISO 2788-1986) и "Guidelines for the establishment and development of multilingual thesauri" (ISO 5964-1985).%0aВот ряд вопросов для размышлений:%0a* существует ли уже готовая схема и может ли она быть использована?%0a* количество уровней для многоуровневой схемы (не слишком мелко и не слишком глубоко -- например 3)%0a* количество категорий на страницу (не слишком много и не слишком мало -- например 3)%0a* постоянное использование единственного ([@[[Меркурий]]@] это [@[[!планета]]@]) или множественного ([@[[Меркурий]]@] в категории [@[[!планеты]]@]) чисел.%0a* однозначность и использование фраз ([@[[!музыкальные инструменты]]@] и [@[[!медицинские инструменты]]@]) или [[Cookbook:Subpage Markup]] ([@[[!Инструменты*Музыкальные]]@] и [@[[!Инструменты*Медицинские]]@])%0a%0aИли же вы просто можете позволить людям пользоваться любой терминологией, которая им кажется привлекательной. В любом случае тема словаря(или "фолксономии") будет всё время всплывать.%0a%0a!!Докладчики%0aRadu, John Rankin, SolaRoofGuy, David A Spitzley%0a%0a%25trail%25%3c%3c|[[Documentation Index|+]]|>> time=1144908750 title=Категории