© Сделано на LiveStreet
Дизайн - ©2009 MODx RED Group
function UP($id,$topLevel=0,$top=0) {
global $modx;
$top= isset ($top) && intval($top) ? $top : 0;
$id= isset ($id) && intval($id) ? intval($id) : $modx->documentIdentifier;
$topLevel= isset ($topLevel) && intval($topLevel) ? intval($topLevel) : 0;
if ($id && $id != $top) {
$pid= $id;
if (!$topLevel || count($modx->getParentIds($id)) >= $topLevel) {
while ($parentIds= $modx->getParentIds($id, 1)) {
$pid= array_pop($parentIds);
if ($pid == $top) {
break;
}
$id= $pid;
if ($topLevel && count($modx->getParentIds($id)) < $topLevel) {
break;
}
}
}
}
return $id;
}
function GetVal($id,$field) {
global $modx;
$result = $modx->getTemplateVar($field, 'name', $id, 1);
return $result['value'];
}
$cID = $content['id'];
$pID = $content['parent'];
$reservdeIDs = array(2,3,5);
/**
* Для топлевел и для страниц у которых верхний родитель не зарезервирован - скрываем лишнее
*/
if ($pID == 0 || !in_array(UP($cID),$reservdeIDs)) {
mm_hideFields("tvflag_big");
mm_hideFields("tvflag_small");
mm_hideFields("tvnewprod_bigimg");
mm_hideFields("tvbrand_logo");
mm_hideFields("tvcollection_gid");
mm_hideFields("tvcollection_img");
mm_hideFields("introtext");
}
/**
* Для всех
*/
mm_hideFields("link_attributes");
mm_hideFields("template");
mm_hideFields("menutitle");
mm_hideFields("longtitle");
mm_hideFields("description");
/**
* Показываем флаги только для стран
*/
if (UP($cID,1) == $pID && UP($cID) == 2) {
//mm_hideFields("tvflag_big");
//mm_hideFields("tvflag_small");
mm_hideFields("tvnewprod_bigimg");
mm_hideFields("tvbrand_logo");
mm_hideFields("tvcollection_gid");
mm_hideFields("tvcollection_img");
mm_hideFields("introtext");
}
и так далее...
Комментарии (29)
RSS свернуть / развернутьbanev
Только не закутайтесь, в том, что MM умеет только скрывать. Это немного меняет логику написания, но никак не суть =)
pitbull
В момент работы MM полностью доступен массив $content и в частности $content['template'] тоже =)
pitbull
banev
pitbull
banev
Можно разжевать поподробнее с комментариями и примерами?
Например у меня в шаблоне есть:
Дайте подсказку на аналог в MM.
Т.Е. Каким образом мне в админке для данной вложенности скрыть требуемое?
kalina
Не совсем понимаю… :(
kalina
pitbull
Дать комментарии ведь несложно?
kalina
Он просто для примера и все. Никакого отношения прямого к описываемому не имеет
pitbull
Специально для меня можно дать пояснения?
Именно по этому коду. Понимаю, что ухожу в занудство, но вижу, человек вы хороший; просто, то что для вас очевидно, для меня — нет.
На простом языке:
if — если
(UP($cID,1) — топлевел 1
и т.д.
kalina
;)
Если родитель этого документа равен 2, а родитель второго уровня для этого документа равен его родителю, т.е. документ второго уровня вложенности НЕ прячем TV с флагами стран.
Структура:
Главная (1)
Каталог (2)
--Россия (Верно тут)
--Камбоджи (Верно тут)
Не каталог (3)
— Не РФ (тут не верно, т.к. родитель != 2)
pitbull
а по сути это равняется записи:
верно?
kalina
Главная (1)
Каталог (2)
--Что-то
----Россия (Верно тут)
----Камбоджи (Верно тут)
Не каталог (3)
--Где-то
----Не РФ (тут не верно, т.к. родитель != 2)
Поэтому и надо было проверять уровень родительского документа.
В общем, если хоть немного понятно — предлагаю углубится в эксперименты.
У меня нет под руками того сайта, так что боюсь ввести в заблуждение.
pitbull
kalina
kalina
pitbull
Но не тупой. Это плюс :)
Поэтому и прошу разжевать…
kalina
вы же правильно написали, только надо в UP подставлять не ID родителя, а ID ресурса, т.е. $cID, а не $pID.
pitbull
kalina
При создании документа ему автоматически присваивается соседний шаблон (59), но поля, которых нет у остальных док-ов с этим шаблоном, не скрываются (например, longtitle). Если у ещё несохранённого ресурса сменить шаблон, то поля скрываются, как и должно быть сразу же.
С полями, которые указаны здесь, вопросов нет. Например:но с longtitle, description и т.д. это почему-то не катит.
Может кто знает, как это решить?
sergge
pitbull
Накладка происходит именно в момент создания ресурса.
Поэтому вместо:приходится использовать
sergge
Единственный вариант — выбрать «Сохранить и продолжить» и после сохранения все будет путем
pitbull
При использовании mm_hideFields('longtitle', '', '59'); срабатывает :). Вот только использование ID родительского документа в качестве итендификатора в MM не предусмотренно.
Может всё-таки есть возможноть обойти?
sergge
Обратите внимание на jSam там можно такие плюшки делать, что закачаешься… только документации не всегда достаточно
pitbull
Не совсем так. Я ведь создаю дочерний документ. И шаблон берётся у соседних ресурсов. И что самое интересное: при смене шаблона (до сохранения документа) эта конструкция срабатывает:Т.е. не работает она именно при создании ресурса.
sergge
sergge
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.