Как получить родителя по id

Доброго времени суток!
Подскажите как получить родителя по 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.

Вот такие. Возможно не правильно получаю ссылку?
Ivanov Alexandr
14 июля 2018, 23:53
1
307
0

Комментарии: 6

Ivanov Alexandr
15 июля 2018, 00:09
0
Решил таким образом [[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`alias`]]
    Баха Волков
    15 июля 2018, 09:01
    1
    0
    Ссылку получать нужно так:

    [[~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
Ivanov Alexandr
15 июля 2018, 21:59
0
Для корректности, вашем случае нужно поступить вот так:
[[~[[#[[!+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`]]
Все работает ошибок нет но очень большое количество запросов к базе данных.
    Баха Волков
    16 июля 2018, 03:12
    0
    [[!+gl.current.data.resource]]
    Что возвращает данный плейсхолдер?
      Ivanov Alexandr
      16 июля 2018, 09:24
      0
      В Geolocation это связанный с городом ресурс. При выводе этого плейсхолдера он вывод id связанного документа. Анеобходимо вывести алиас.
    Алексей
    14 сентября 2018, 14:45
    0
    Такая же проблема, пытаюсь вывести алиас родителя [[#[[ParentItem? &parent=`[[+id]]`]].alias]], все работает. Но в консоль падают ошибки core/model/modx/modparser.class.php: 540) Could not find snippet with name #14.alias