[решение] pdoResources вывод родительских ссылок
        Использую pdoResources для вывода данных, возникла потребность вывести "категория / подкатегория" текущего документа, выискивал решения, но все неработающие.
Собственно требуется вывести их в виде ссылки с названием.
Возможно кто-то уже это реализовывал и знает готовое решение?
— Моё решение задачи:
Самописный сниппет getWayFild
Примеры использования:
Возможно кому нибудь пригодится :-)
    
    
                                                                                
            Собственно требуется вывести их в виде ссылки с названием.
Возможно кто-то уже это реализовывал и знает готовое решение?
— Моё решение задачи:
Самописный сниппет getWayFild
<?php
/**
 * Доступные значения:
 * &id - id документа
 * &fild - желаемые данные
 * &uri - по желанию, формирует ссылку с доп значениями:
 *  &title - выводит в title 'pagetitle', 'longtitle' или значение переменной
 *  &class - выводит в class значение переменной
 *  &tag - выводит значение переменной
 */
$page = $modx->getObject('modResource', $id);//значение &id
$output = $page->get($fild);//значение &fild
if ($uri != false) {//значение &uri
    $uri = $page->get('uri');//получение uri
	$title = ($title == 'pagetitle' || $title == 'longtitle' ?$page->get($title):$title);
	$title = ($title != false ? ' title="'.$title.'"' : '');//значение &title
	$class = ($class != false ? ' class="'.$class.'"' : '');//значение &class
	$tag = ($tag != false ? ' '.$tag : '');//значение &tag
	$result = '<a href="'.$uri.'"'.$title.$class.$tag.'>'.$output.'</a>';//результат
	return $result;
} else {
	return $output;
}Примеры использования:
- Выводим заголовок родителя текущего документа
[[!getWayFild? &id=`[[*parent]]` &fild=`pagetitle`]] - Выводим родителя текущего документа в виде ссылки с тайтлом "заголовок" родителя
[[!getWayFild? &id=`[[*parent]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]] - Выводим родителя текущего документа в виде ссылки с тайтлом "расширенного заголовка" родителя
[[!getWayFild? &id=`[[*parent]]` &fild=`pagetitle` &uri=`1` &title=`longtitle`]] - Выводим родителя текущего документа в виде ссылки с классом и дополнительным тегом
[[!getWayFild? &id=`[[*parent]]` &fild=`pagetitle` &uri=`1` &class=`my_class` &tag=`id="my_id_tag"`]] - Выводим прародителя и родителя текущего документа в виде ссылок с тайтлами их заголовков
[[!getWayFild? &id=`[[getWayFild? &id=`[[+parent]]` &fild=`id`]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]] / [[!getWayFild? &id=`[[*parent]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]] - Выводим прародителя и родителя текущего документа в виде ссылок с тайтлами их заголовков, но в шаблоне для pdoResources или getResources 
[[!getWayFild? &id=`[[getWayFild? &id=`[[~[[+parent]]]]` &fild=`id`]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]] / [[!getWayFild? &id=`[[+parent]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]] 
Возможно кому нибудь пригодится :-)
Комментарии: 16
                Отыскал:
                    [[+parent:parent=`id`:parent=`longtitle`]]но выводит только id прародителя            
                Если нужно выбирать категорию и подкатегорию плюсом к ресурсу (то есть 2 родителя к документу), то простой вариант только один — вызывать в чанке сниппет Breadcrumb и передавать ему id выбираемого ресурса.
Он построит хлебные крошки, но не обещаю, что это будет быстро.
                    Он построит хлебные крошки, но не обещаю, что это будет быстро.
                Да, я о том же и думал, что такой вызов (многократный) как минимум, первичный, замедлит загрузку страницы. Ну а далее кэш.
Я вычитал, что разметка PHx достаточно ограничена в MODx Revolution, возможно временно, но это жалко, придется искать сниппет или что-то подобное.
— Спасибо за ответ.
                    Я вычитал, что разметка PHx достаточно ограничена в MODx Revolution, возможно временно, но это жалко, придется искать сниппет или что-то подобное.
— Спасибо за ответ.
                Конечно замедлит, если вы для оформления одной строки результата выбираете 3 строки из БД.
PHx тут не при чем, да и не для того он придуман. Вы можете вызывать свой собственный сниппет в чанке, который выполнит ту же работу, что и Breadcrumb, только быстрее.
Другого решения я не вижу.
                    PHx тут не при чем, да и не для того он придуман. Вы можете вызывать свой собственный сниппет в чанке, который выполнит ту же работу, что и Breadcrumb, только быстрее.
Другого решения я не вижу.
                Задачу решил, пост отредактировал.            
                    
                Есть недочеты! В таком варианте он загибается:
                    [[!getWayFild? &id=`[[getWayFild? &id=`[[+parent]]` &fild=`parent`]]` &fild=`pagetitle` &uri=`1` &title=`pagetitle`]]Пока не знаю как это решить, вообще хотел всё сделать по другому, чтобы не выводить одно в другом, но пока не выходит -__-            
                Постараюсь сегодня выкатить pdoCrumbs — он быстро строит хлебные крошки, должен решить твой вопрос.            
                    
                Держи новую версию pdoTools — там добавлен сниппет pdoCrumbs, который выводит родителей от указанного ресурса.
Работает довольно быстро. Например у меня в поиске вывод навигации у каждой строки добавляет всего 0.15 — 0.2 сек для страницы.
Параметры примерно совместимы с BreadCrumb.

Потестируй, если все окей — буду выпускать.
                    Работает довольно быстро. Например у меня в поиске вывод навигации у каждой строки добавляет всего 0.15 — 0.2 сек для страницы.
Параметры примерно совместимы с BreadCrumb.

Потестируй, если все окей — буду выпускать.
Держи новую версию pdoTools — там добавлен сниппет pdoCrumbs, который выводит родителей от указанного ресурса.Василий, если я правильно понял, pdoCrumbs является альтернативой getResourceField?
                Спасибо.
Выводжу так:
Еще выводил:
Подскажите пример. Я вывожу данные на главной странице, последние новости/изменения.
                    Выводжу так:
[[!pdoCrumbs? &limit=`2` &showCurrent=`1` &from=`[[+parent]]`]]получаю пустоту.Еще выводил:
[[!pdoCrumbs? &limit=`2` &showCurrent=`1` &from=`[[+id]]`]]собственно без изменений, пусто.Подскажите пример. Я вывожу данные на главной странице, последние новости/изменения.
                А надо параметр &to=`[[+id]]`
Это не я придумал — это хлебные крошки строятся, как бы, от корня к ресурсу.
                    Это не я придумал — это хлебные крошки строятся, как бы, от корня к ресурсу.
                Да, так работает.
                    [[!pdoCrumbs? &limit=`3` &showCurrent=`0` &to=`[[+id]]`]]            
                А планируется ли передача класса через параметр для шаблона tplWrapper?, а то там зашит «breadcrumbs» и делать другой чанк ради класса, не знаю…
и еще вопрос, как заменить стрелочку (которая меж ними)?
                    и еще вопрос, как заменить стрелочку (которая меж ними)?
                Я видел. Просто внес предложение и всё.            
                    
                [[#[[+parent:parent]].uri]]            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    
            
            
                    
                    
                