Задался вопросом умно вывести с помощью wayfinder в revolution меню в несколько колонок.
Искал решение в сети, но к сожалению решения для MODx найти не удалось. Был вариант сделать на jquery, но решил сделать умнее.
Написал небольшой сниппет, который считает количество основных пунктов меню, разбивает его на колонки и затем делает соответствующие вызовы wayfinder с параметром includeDocs. Может кому-то пригодится. С помощью этого сниппета можно удобно вывести каталог в несколько колонок, чтобы равномерно распределить пространство на странице.
Сниппет выводит меню в 2 уровня.
$id=3; // ID категории каталога
$columns=3; //Количество колонок
$ids = $modx->getChildIds($id,1); //Получаем id документов 1 уровня из категориии каталога
$ids_kolvo = count($ids); //считаем количество документов
$incol = ceil($ids_kolvo/$columns); //Делим на кол-во колонок и получаем округленное значение документов в колонке
$parent_numb = 0; // заводим переменную для массива доков 1 уровня
// Для каждой колонки...
for($col=1; $col <= $columns; $col++) {
$a = ""; // ...создаем пустую переменную $a или обнуляем ее
//Для каждого пункта меню в данной колонке...
for($i=0; $i < $incol; $i++) {
$parent_id = $ids[$parent_numb]; // ...получаем id...
$childs = $modx->getChildIds($parent_id,1);// ...берем дочерние ресурсы...
$kolvo = count($childs); // ..считаем их...
$k = 0; //.. создаем переменную для счетчика...
//id каждого пункта меню второго уровня...
for($r = 0; $r <= $kolvo; $r++){
$a .= $childs[$k].’,’; //...пишем в массив через запятую...
$k++; //...прибавляя счетчик.
}
$a .= $ids[$parent_numb].’,’; // Добавляем в конце родительскую категорию, через запятую
$parent_numb++; // Переходим к следующему пункту меню 1 уровня
}
$output = $modx->runSnippet(’Wayfinder’, array(’includeDocs’ => $a)); // Для каждой колонки вызываем wayfinder включая документы только для этой колонки
echo "<div class=\"column-wrap\">".$output."</div>"; //Выводим результаты работы вейфайндера обрамленные в div
В итоге получаем 3 div с классом .column-wrap, в каждом из которых свой кусок двухуровневого меню сгенерированный wayfinder-ом.
http://orbita.exitstudio.ru/blog/modx/7.html