Символические ссылки в MODX

Всем привет, делаю сайт с региональными поддоменами (на контекстах), есть страницы типа «О компании»,
которые общие на все регионы, что бы не плодить копии в админке, есть специальный тип ресурса — Символическая ссылка, в которой можно указать id документа, чьё содержимое будет подтягиваться, но по текущему url. Обычно для таких страниц ещё указывается мета-тег canonical, чтобы не плодить дубли в поиске и обычно такой каноникал я делаю следующей конструкцией в коде
<link rel="canonical" href="{$_modx->makeUrl($_modx->resource.id, '', '', 'full')}">
Однако для ресурсов с типом «символическая ссылка» код должен быть другим, что-то типа
<link rel="canonical" href="{if $_modx->resource.class_key == 'modSymLink'}
                                    {$_modx->makeUrl($_modx->resource.content, '', '', 'full')}
                                {else}
                                    {$_modx->makeUrl($_modx->resource.id, '', '', 'full')}
                                {/if}">

То есть мы проверяем класс ресурса и если это «Символическая ссылка» то url строим из поля content, куда указывается id страницы оригинала.
Но проблема в том, что если вывести символическую ссылку через Fenom, то класс объекта всегда — modDocement, а не тот, который должен быть и поле content — пустое, а не содержащее id страницы оригинала.Я сначала подумал, что выводятся данные уже конечной страницы, на которую ведёт символическая ссылка, но это не так, id и все другие поля выводятся именно от самой ссылки, а не от конечной страницы. Получается, что я не могу проверить страницу, является ли она символической ссылкой.
Кто сталкивался с данной проблемой, как решали? Поделитесь, пожалуйста.
При обзоре ресурса в админке класс определяется верно — modSymLink, но в pdoTools уже попадает другой.

P.S
Проблему решить удалось.
Конструкция типа — {'14'|resource:'class_key'} определяет класс объекта верно, её и использовал.
а вот {$_modx->resource.class_key} — так и выводит modDocument у символической ссылки, наверное, это баг, и будем надеяться поправят.
Семён Кудрявцев
08 ноября 2017, 13:25
modx.pro
3
3 853
0

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

Александр Янк
31 января 2018, 12:39
1
0
Спасибо большое, искал подходящий canonical, а тут вы на Fenom'e яркий пример привели, спасибо большое:

<link rel="canonical" href="{$_modx->makeUrl($_modx->resource.id, '', '', 'full')}">
    Максим
    15 ноября 2023, 13:08
    0
    Я решил проблему так:
    {set $res = $_modx->getResource($_modx->resource.id)}
    {if  $res.class_key === 'modSymLink'}
        <link rel="canonical" href="{$res.content | url : ['scheme' => 'full']}"/>
    {else}
        <link rel="canonical" href="{$_modx->resource.id | url : ['scheme' => 'full']}"/>
    {/if}
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2