UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: john от 24 Сентября 2012, 19:57:41

Название: Проверка существования под-уровня меню
Отправлено: john от 24 Сентября 2012, 19:57:41
Есть код, отображение подуровня меню, если он активен.
		public function activmenu($categ_id, $id) {
$hierarchy = umiHierarchy::getInstance();
$element = $hierarchy->getAllParents($id, true);
$value = (in_array($categ_id, $element)) ? 1: 0;
return $value;
}

Подскажите, как написать условие проверки существования подуровня и вернуть значение 1 или 0 например или значение "poduroven".

public function poduroven($id=NULL) {
if($id have $categ_id) return 'poduroven';
Название: Re:Проверка существования под-уровня меню
Отправлено: admin от 26 Сентября 2012, 00:35:01
проверка того что страница существует? проверка того что у страницы с id = $categ_id есть подстраница с id = $id или что-тио другое?

не очень понятно, что именно вам надо
Название: Re:Проверка существования под-уровня меню
Отправлено: john от 26 Сентября 2012, 10:29:21
Второе - проверка того что у страницы с id = $categ_id есть хоть одна подстраница с id = $id
Название: Re:Проверка существования под-уровня меню
Отправлено: admin от 26 Сентября 2012, 12:10:20
       $hierarchy = umiHierarchy::getInstance(); 
       // получаем экземпляр коллекции
       $childs = $hierarchy->getChilds($current_page_id);
       // получаем список
дочерних страниц, включая не активные и не видимые в меню.


теперь в  $childs у нас массив дочерних элементов. Описании функции getChilds() смотрите в официальной документации (http://api.docs.umi-cms.ru/spravochnik_po_klassam_yadra_umicms/model_ierarhii/umihierarchy/getchilds/)
Название: Re:Проверка существования под-уровня меню
Отправлено: john от 26 Сентября 2012, 13:20:39
	public function poduroven($current_page_id, $id) {
$hierarchy = umiHierarchy::getInstance();
        // получаем экземпляр коллекции
        $childs = $hierarchy->getChilds($current_page_id);
        // получаем список дочерних страниц, включая не активные и не видимые в меню.
if($childs==$id) return '1';
        //  проверка того что у страницы с id = $categ_id есть хоть одна подстраница с id = $id
Проверка не работает. Или по другому, то как?
Название: Re:Проверка существования под-уровня меню
Отправлено: admin от 26 Сентября 2012, 14:35:00
это массив, так что проверка будет такой

$value = (in_array($id, $childs)) ? 1: 0;
return $value;
, но это уже больше к php чем к umi
Название: Re:Проверка существования под-уровня меню
Отправлено: john от 26 Сентября 2012, 14:50:04
    <xsl:variable name="podurovens" select="document(concat('udata://custom/poduroven/',@id,'/',$document-page-id))/udata" />
<a href="{@link}" class="{$podurovens}"><xsl:value-of select="name" /></a>
условие почему-то не работает, условие возвращает все время ноль. а должен вернуть единицу если  у страницы с id = $categ_id есть хоть одна подстраница с id = $id
Название: Re:Проверка существования под-уровня меню
Отправлено: john от 29 Сентября 2012, 00:43:49
Подскажите как условие написать правильно?
		public function poduroven($current_page_id, $id) {
$hierarchy = umiHierarchy::getInstance();
                // получаем экземпляр коллекции
                $childs = $hierarchy->getChilds($id, true);
                // получаем список дочерних страниц, включая не активные и не видимые в меню.
$value = (in_array($current_page_id, $childs)) ? 1: 0;
return $value;
}