Как получить родителя по 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
modx.pro
1
8 832
0

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

Ivanov Alexandr
15 июля 2018, 00:09
0
Решил таким образом [[pdoField? &id=`[[!+gl.current.data.resource]]` &field=`alias`]]
    Баха Волков
    15 июля 2018, 09:01
    4
    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
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6