Это старая версия Справка/Разработчик/Дизайн/ObjTags за 2014-05-05 22:18:43..

ObjTags

Расширение ObjTags позволяет создавать и администрировать перекрестные ссылки (теги) на коллекции страниц, созданных с помощью WikiPatterns. Используется поверх расширения WikiPatterns.

Теги – это обычные страницы в стиле WikiPatterns, к которым инсталляция ObjTags добавляет следующий функционал:
  • удобные инструменты создания и хранения ссылок на эти страницы (виртуальные формы) в других таблицах AdvOntology или страницах WikiPatterns;
  • экшены, визуализирующие прямые и обратные ссылки на теги;
  • небольшую библиотеку сервисных функций для создания списков прямых и обратных ссылок на теги.

Виртуальные формы

В админке таблицы или конфигураторе шаблотна доступны виртуальные формы
objtags pattern="ObjTags" [root="Рубрики"] – для одноуровнего списка тегов
objtagstree pattern="ObjTags" [root="Рубрики"] – для многоуровнего списка тегов
В обоих случаях ссылки на теги сохраняются в поле в формате :17::9:.

Виртуальные формы для назначения тегов:
  • objtagstree pattern="ObjTags" root="Рубрики"

. Unknown action "showobjtags"

{$data.name}

{$data.desc}
{ldelim}{ldelim}templatesum name="FreiObject" for="!" sortby="name" sortorder="ASC"{rdelim}{rdelim} {ldelim}{ldelim}{ldelim}createpage pattern="FreiObject"{rdelim}{rdelim}

objtagstree pattern="ObjTags" root="Рубрики"

Unknown action "showobjtags"

function getPageTagById($id) {
$res = $this->_db->dbGetById(«pages», $id);
return $res["tag"];
}


function getSubPages($root) {
$root = $this->_kernel->NpjTranslit($root);
$tagcheck = “supertag like '".quote($root)."/%' and not (supertag like '".quote($root)."/%/%')";
$query = “select pages.id as id, pages.tag as tag, pages.time as time, pages.supertag as supertag from «.
$this->_kernel->config["table_prefix"]."pages pages where «.
$tagcheck.» and comment_on = ORDER BY tag»;
return $this->_kernel->LoadAll($query);
}


function getAllLinksArr($pattern, $root=) {
$objtags = $this->advOnto->getAllConcepts("wp".$pattern);
$res = array();
$i = 0;
foreach($objtags as $key => $objtag) {
$pageTag = $this->getPageTagById($objtag["data"]); // ="Авторы/МалковСЮ"
if (!(isset($root)) || ($root==) || (strpos($pageTag, $root) !== false)) { // $root="Авторы"
$res[$i]["tag"] = $pageTag;
$res[$i]["name"] = $objtag["name"];
$res[$i]["link"] = $this->_kernel->Link(«/».$pageTag, , $objtag["name"]); // SORT
$i++;
}
}
return $res;
}


function getLinksByTagsArr($pattern, $tags, $root=) { // tags=":1::2:"
$tags = substr($tags, 1, strlen($tags)-2); // ="1::2"
$ids = explode('::', $tags);

$objtags = $this->advOnto->getConceptsByIds("wp".$pattern, $ids);
$res = array();
foreach($objtags as $key => $objtag) {
$pageTag = $this->getPageTagById($objtag["data"]); // ="Авторы/МалковСЮ"
$i = array_search($objtag["id"], $ids); // SORT
if (!(isset($root)) || ($root==) || (strpos($pageTag, $root) !== false)) { // $root="Авторы"
$res[$i]["tag"] = $pageTag;
$res[$i]["name"] = $objtag["name"];
$res[$i]["link"] = $this->_kernel->Link(«/».$pageTag, '', $objtag["name"]); // SORT
}
}
ksort($res); // SORT сохраняем порядок, в котором добавлены теги
return $res;
}


function getLinksByTags($pattern, $tags, $root="") { // tags=":1::2:"
$linksArr = $this->getLinksByTagsArr($pattern, $tags, $root);
$res = array();
foreach($linksArr as $item)
$res[] = $item["link"];
return $res;
}

}
?>