Как получить родителя по id
Доброго времени суток!
Подскажите как получить родителя по id?
Ситуация следующая.
Использую GeoLocation в нем указаны категории для города.
В чанке необходимо выводить ссылку на текущий город
Вызываю таким образом
core/model/modx/modparser.class.php: 540) Could not find snippet with name #[[!+gl.current.data.resource]].alias.
Вот такие. Возможно не правильно получаю ссылку?
Подскажите как получить родителя по id?
Ситуация следующая.
Использую GeoLocation в нем указаны категории для города.
В чанке необходимо выводить ссылку на текущий город
Вызываю таким образом
[[#[[!+gl.current.data.resource]].alias]]
Ссылку получаю но лезут ошибкиcore/model/modx/modparser.class.php: 540) Could not find snippet with name #[[!+gl.current.data.resource]].alias.
Вот такие. Возможно не правильно получаю ссылку?
Комментарии: 6
Решил таким образом [[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`alias`]]
Ссылку получать нужно так:
Как получить родителя по id?
Для корректности, вашем случае нужно поступить вот так:
UPD
Забыл совсем про uri
Если, что в поле uri хранится ссылка на страницу, но никак не в alias
[[~id ресурса]]
{id ресурса | url}
// Прямое указание id ресурса
[[~2]]
{2 | url}
// Динамичное указание id ресурса
[[~[[+id]]]]
{$id | url}
[[~[[*id]]]] // Вдруг нужна циклическая ссылка :)
{$_modx->resource.id | url} // Вдруг нужна циклическая ссылка :)
// ну а если ваш плейсхолдер [[!+gl.current.data.resource]] возвращает именно id, то
[[~[[!+gl.current.data.resource]]]]
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')} // Вдруг еще понадобится
{$myplace | url}
// Кстати, для получения полей есть еще FastField
[[#id ресурса.поле или даже тв которое нужно вывести]]
{id ресурса | resource : 'поле или даже тв которое нужно вывести'}
// Пример
[[#1.pagetitle]] // Получить pagetitle у ресурса с id = 1
{1 | resource : 'pagetitle'}
Как получить родителя по id?
[[*parent]] // На странице ресурса
{$_modx->resource.parent}
[[+parent]] // В чанках вывода
{$parent}
[[#[[!+gl.current.data.resource]].parent]] // Тот случай когда нужно получить id по плейсхолдеру
{$_modx->getPlaceholder('gl.current.data.resource') | resource : 'parent'}
[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`parent`]] // Ну или через pdoField
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}
{$myplace | resource : 'parent'}
Для корректности, вашем случае нужно поступить вот так:
[[~[[#[[!+gl.current.data.resource]].parent]]]]
{$_modx->getPlaceholder('gl.current.data.resource') | resource : 'parent' | url}
// или
[[~[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`parent`]]]]
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}
{$myplace | resource : 'parent' | url}
UPD
Забыл совсем про uri
Если, что в поле uri хранится ссылка на страницу, но никак не в alias
Для корректности, вашем случае нужно поступить вот так:Такой вызов ничего не дает.
[[~[[#[[!+gl.current.data.resource]].parent]]]]
{$_modx->getPlaceholder('gl.current.data.resource') | resource: 'parent' | url}
// или
[[~[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`parent`]]]]
{var $myplace = $_modx->getPlaceholder('gl.current.data.resource')}
{$myplace | resource: 'parent' | url}
[[#[[!+gl.current.data.resource]].alias]]
или
[[#[[!+gl.current.data.resource]].uri]]
Дают ссылку на нужный адрес НО появляется ошибка
core/model/modx/modparser.class.php: 540) Could not find snippet with name #[[!+gl.current.data.resource]].alias.
С таким же вызовом
[[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`alias`]]
Все работает ошибок нет но очень большое количество запросов к базе данных.
[[!+gl.current.data.resource]]
Что возвращает данный плейсхолдер?
В Geolocation это связанный с городом ресурс. При выводе этого плейсхолдера он вывод id связанного документа. Анеобходимо вывести алиас.
Такая же проблема, пытаюсь вывести алиас родителя [[#[[ParentItem? &parent=`[[+id]]`]].alias]], все работает. Но в консоль падают ошибки core/model/modx/modparser.class.php: 540) Could not find snippet with name #14.alias
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.