Это старая версия Справка/Разработчик/Дизайн/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 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);
}$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="Авторы"
}$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$res[$i]["name"] = $objtag["name"];
$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="Авторы"
}
}$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$res[$i]["name"] = $objtag["name"];
}
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;}
}
?>