Skip to content

Instantly share code, notes, and snippets.

@andronex
Created April 11, 2015 21:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andronex/a30c5d1ae883c25122ec to your computer and use it in GitHub Desktop.
Save andronex/a30c5d1ae883c25122ec to your computer and use it in GitHub Desktop.
Сниппет для отображения активных пунктов меню, собранного вручную.
<?php
/**
* Для работы нужен package [pdoTools]
* HTML код меню находится в чанке [[$menu]]
* в коде чанка использовать плейсхолдеры типа <li class="[[+menuactive4]]">ссылка пункта меню</li>
*/
$pdo = $modx->getService('pdoTools');
if($res = $modx->resource) {
$id = $res->get('id');
$parent = $res->get('parent');
$parents = array();
if($parent == 0 || $id == 12) {//0 - это корень, 12 - это номер ресурса, находящегося в меню, но принадлежащего другому подкатегории (в моём случае есть ресурс с id=12)
$parents = array('menuactive'.$id => 'active');//CSS класс (active) и название плейсхолдера (menuactive+число)
}
else {
do {
$id = $modx->getObject('modResource',$parent);
$parents = array('menuactive'.$parent => 'active');//на выходе из цикла здесь всегда будет первый от корня ресурс, и не важно сколько потомков он имеет
$parent = $id->get('parent');
} while ($parent != 0);
}
return $pdo->getChunk('menu', $parents);
}
else return $pdo->getChunk('menu');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment