Хлебные крошки в админке MODX
<?php
if ($modx->event->name == 'OnDocFormPrerender') {
if (!$id = $modx->controller->resourceArray['id']) {
return;
}
$resources = array();
foreach ($modx->getParentIds($id, 10, array('context' => 'web')) as $parentId) {
if ($parentId) array_push($resources, $parentId);
}
natsort($resources);
$resources[] = $id;
$setting = $modx->getObject('modSystemSetting', 'settings_version');
$version = explode('.',$setting->get('value'));
$url = MODX_MANAGER_URL.'/manager/index.php?a=30&id=';
if($version[1]==3){
$url = MODX_MANAGER_URL.'?a=resource/update&id=';
}
$level = 0;
$childTemplates = '<a style="color: #333;" href="'.MODX_MANAGER_URL.'">Панель</a> <span style="color: #333;">|</span> ';
foreach ($resources as $resourceId) {
$resource = $modx->getObject('modResource', $resourceId);
if ($resourceId == $id) {
$childTemplates .= '<span style="color: #333;">'.$resource->get('pagetitle').'</span>';
} else {
$childTemplates .= '<a style="color: #333;" href="'.$url.$resource->get('id').'">'.$resource->get('pagetitle').'</a> <span style="color: #333;">|</span> ';
}
$level++;
}
$modx->controller->addHtml('
<script>'."
Ext.onReady(function() {
var title = Ext.select('#modx-resource-header');
var pagetitle = Ext.select('#modx-resource-pagetitle');
title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
pagetitle.on('keyup', function(){
title.createChild('<p style=\"padding-bottom: 15px;\">$childTemplates</p>');
});
});
</script>
".'</script>');
return;
}
Update
(15.10.2014) — Добавлена генерация url в зависимости от версии cms.
Исходный код: github.com/tanaevr/BreadCrumbsManager
Комментарии: 18
Класс! Класс! Класс!
Очень нужная функция! Только на днях нервничал из-за их отсутствия, когда подбирал товары по id через адресную строку. Проблема в том, что не знаешь в какой категории он находится — это убивало!
Спасибо! Удобный плагин — буду использовать!
Очень нужная функция! Только на днях нервничал из-за их отсутствия, когда подбирал товары по id через адресную строку. Проблема в том, что не знаешь в какой категории он находится — это убивало!
Спасибо! Удобный плагин — буду использовать!
Если не сложно — добавьте скриншот для информативности.
А для чего в коде переменная $level?
Эту переменную можно вывести перед названием ресурса в списке «крошек» и увидеть какой уровень вложенности он имеет. По умолчанию стоит 0.
Это я понял, до меня не сразу дошло, что ее не обязательно выводить то, спасиб.
Хорошо «НО»
Для модх 2.3.1, которая установлена с нуля ссылки идут в другом формате
Лучше поставить: MODX_MANAGER_URL
и верстка немного кривоватая, но это уже другое дело.
Вот так для новой версии:
Для модх 2.3.1, которая установлена с нуля ссылки идут в другом формате
$childTemplates .= '<a style="color: #333;" href="/manager/index.php?a=30&id='.
$resource->get('id').'">'.$resource->get('pagetitle').'</a> <span style="color: #333;">|</span> ';
?a=resource/update&id=4
И не у всех manager Лучше поставить: MODX_MANAGER_URL
и верстка немного кривоватая, но это уже другое дело.
Вот так для новой версии:
$childTemplates .= '<a style="color: #333;" href="'.MODX_MANAGER_URL.'?a=resource/update&id='.$resource->get('id').'">
Или можно универсально через условие сделать, проверять версию модх
Пришли, пожалуйста, pull-request, автор уже несколько принял. Общими усилиями сделаем симпатичный и нужный компонент.
Я по большей части занимаюсь front-endом.
Git так и не попробовал. На работе SVN. Могу покопаться и проработать код.
Выложить изменения в строках сюда или прислать автору.
А также потестить надо бы это всё.
Git так и не попробовал. На работе SVN. Могу покопаться и проработать код.
Выложить изменения в строках сюда или прислать автору.
А также потестить надо бы это всё.
Обновил код плагина согласно вашему замечанию. Теперь после проверки версии modx подставляется тот или иной url.
Поставил, плагин работает, не знаю на сколько сильно он улучшит юзабилити, посмотрим на практике.
Спасибо.
Спасибо.
Сделал на основе MODx.BreadcrumbsPanel, который используется в менеджере пакетов:
Будет частью modDevTools.
Будет частью modDevTools.
Виталий, а есть пример кода с панелькой? в modDevTools пока нет, но сейчас очень нужен. Оригинальный плагин слегка с багами
Залил сюда github.com/argnist/modDevTools/tree/develop/
Спасибо! Собрал, выглядит круто. Еще заказчик у меня как-то просил добавить кнопку Создать товар наверх, чтобы не лазить и правой кнопкой не жать каждый раз. Если получится сделать адекватный вариант, зашлю PR.
Поймал баг, использую Article, если плагин BreadCrumbsManager активен, то "создать статью" невозможно, белая страница.
На гитхабе код обновленный. Возьмите оттуда.
Класс, мне как раз надо было выводить контекст документа, а я код прописывала в шаблоне админки, что не есть хорошо)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.