Вывод тв картинки из сниппета

Здравствуйте!
Никак не разберусь…

Есть сниппет:

<?php
$site_url = MODX_SITE_URL;
$base_url = MODX_BASE_PATH;
$get = modX::sanitize($_GET, $modx->sanitizePatterns);
$alias = urldecode($get['page']);
$resource = $modx->getObject('modResource', [
    'alias'=>$alias,
    'class_key'=>'modDocument'
]);
$prefix = 'amp.';

if ($resource) {
    $placeholders = [
        'pagetitle' => $resource->get('pagetitle'),
        'content' => $resource->get('content'),
        'canonical' => $modx->makeUrl($resource->get('id'), '', '', 'full'),
        'published' => $resource->get('publishedon'),
        'edited' => $resource->get('editedon'),
    ];
    
    $tvlogo = 'image';
    $tvValue = $resource->getTVValue($tvlogo);
    if (!empty($tvValue)) {
        $image_url = $site_url.$tvValue;
        $image_base = $base_url.$tvValue;
        list($width, $height) = getimagesize($image_base);
        $placeholders[$tvlogo] = $tvValue;
        $placeholders[$tvlogo.'_width'] = $width;
        $placeholders[$tvlogo.'_height'] = $height;
    }
    
    $modx->setPlaceholders($placeholders, $prefix);
}
Вывожу в шаблоне так:
<img class="lazy" src="[[+amp.tvlogo]]" width="200" height="200" alt="[[+amp.pagetitle]]">
Но юрл не прописывается в src…

Где-то что-то делаю не так(
Буду признателен за помощь!
Антон
18 апреля 2023, 12:29
modx.pro
735
0

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

Тодор
18 апреля 2023, 16:28
+1
Ну вот ты пешеш 3 плесхолдера:
$placeholders[$tvlogo] = $tvValue;
$placeholders[$tvlogo.'_width'] = $width;
$placeholders[$tvlogo.'_height'] = $height;
а значение $tvlogo = 'image';. Значит то что выше это тоже самое что и:
$placeholders['image'] = $tvValue;
$placeholders['image_width'] = $width;
$placeholders['image_height'] = $height;
соотвественно:
<img class="lazy" src="[[+amp.image]]" width="200" height="200" alt="[[+amp.pagetitle]]">
    Антон
    18 апреля 2023, 16:37
    0
    Спасибо! Так тоже пробовал. Увы, не выводит((
      Тодор
      18 апреля 2023, 16:45
      +1
      1.Феномом не пробовал вывести?
      {$_pls['amp.image']}
      2. [[+amp.pagetitle]] — что-то выводит?
      3. Снипет вызываеться раньше плесходера?
        Антон
        18 апреля 2023, 16:51
        0
        1. Не выводит(
        2. Да, заголовок страницы выводит, все в порядке
        3. Да

        Параметры тв:
        — ввод — изображение
        — вывод — по умолчанию
          Тодор
          18 апреля 2023, 16:55
          +1
          [[+amp.image_width]] — что-то выводит?
            Антон
            18 апреля 2023, 16:56
            0
            Нижнее подчеркивание "_"
              Тодор
              18 апреля 2023, 17:04
              +1
              причин может быть еще много, можеш скинуть доступ, чтобы смому тестить
                Антон
                18 апреля 2023, 17:13
                0
                Спасибо, я разобрался…
                В
                $tvlogo = 'image';
                нужно было писать название тв. Он у меня
                'logo'
    Антон
    18 апреля 2023, 18:47
    0
    Теперь у меня немного другой вопрос))
    Как в сниппете взять значение тв параметра, которое в феноме берется так:
    {$_modx->resource.ref_link|url}
      Алексей Смирнов
      18 апреля 2023, 23:36
      +1
      Если вы в $resource определили нужный ресурс, то так берется значение ТВ поля:
      $tvValue = $resource->getTVValue('name-tv-polya');
      где name-tv-polya — название ТВ поля.
        Антон
        19 апреля 2023, 17:39
        0
        Здравствуйте!

        Да, верно… я немного поспешил, поэтому видимо не совсем ясно объяснил(

        Есть тв — список (одиночный выбор). В значениях сниппет:
        @EVAL return $modx->runSnippet('pdoResources',array('parents'=>'115','depth'=>1,'limit'=>0,'sortby'=>'{"menuindex":"ASC"}','tpl'=>'@INLINE [[+pagetitle]]==[[+id]]','outputSeparator'=>'||'));
        А вот как раз в ресурсах и хранится ссылка, которая просто в шаблоне берется так:
        {$_modx->resource.ref_link|url}
        Моя задача достать ее значение в отдельном сниппете
          Тодор
          21 апреля 2023, 13:08
          0
          $tvr = $modx->getObject('modTemplateVarResource', array(
            'tmplvarid' => $tvId, //ІД TV (не имя)
            'contentid' => $resourceId //ІД ресурса
          ));
          if ($tvr) {
            echo $tvr->get('value');
          }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      12