Картинка для микроразметки?

Здравствуйте!
Пользуюсь инструкцией: Выбор первых картинок из контента, решил взять ссылку на первую картинку и вывести ее в микроразметку
<meta property="og:image" content="">
. Конструкция [[+properties.image]], которая работает через сниппет, здесь [[*properties.image]] — не работает.

Думаю, что нужно делать сниппет mainРicture, который из массива возьмет нужную мне ссылку и выводить ее так
<meta property="og:image" content="[[mainРicture]]">
.

Хотел спросить, можно ли средствами MODX не делая сниппет решить проблему?
Александр Наумов
13 апреля 2016, 14:30
modx.pro
3
4 768
0

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

Алексей Федоров
13 апреля 2016, 22:02
0
Конструкция [[+properties.image]], которая работает через сниппет, здесь [[*properties.image]] — не работает
А почему она должна работать? Первое — имя плейсхолдера, в который сниппет поместил найденное значение, второе — имя TV. Если такой переменной шаблона не создать заранее, то она и не будет ничего выводить. Вызывать нужно так, как указано в примере по ссылке:
<meta property="og:image" content="[[+properties.first_img_src.0]]">
Кстати, [[+properties.image]] на странице по ссылке в упор не нашел.
    Александр Наумов
    13 апреля 2016, 23:12
    0
    Алексей, в поле properties у меня храниться массив:
    {
    	"image":"images\/picture_thumb.png",
    	"image2":"images\/picture.png"
    }
    с ссылками на разные размеры картинок.
    С помощью сниппета можно вывести нужную. Например:
    [[pdoResources?
    	...
    	&tpl=`@INLINE  [[+properties.image]]`
    	...
    ]]
    Но если я не использую сниппет, то могу лишь вывести из поля properties весь массив, который там храниться с помощью [[*properties]]. А нужно вывести только ссылку, но здесь плейсхолдер [[+properties.image]] не работает.

    Кстати, [[+properties.image]] на странице по ссылке в упор не нашел.
    Это я у себя так написал, то что там: [[+properties.first_img_src.0]]
      Алексей Федоров
      14 апреля 2016, 05:50
      0
      Я запутался) Первая картинка выводится на той же странице, где расположена или на другой через pdoRecources? То есть одна или нужно выборку первых картинок сделать? А то второй вариант даже не предполагал, ведь разметка Open Graph, насколько мне известно, используется преимущественно для разметки видео на странице, т.е. выводится только одна картинка в meta.
        Александр Наумов
        14 апреля 2016, 10:10
        0
        Open Graph формирует сообщение, когда пользователь нажимает кнопку поделиться статьей в соцсетях таких как Вконтакте, Facebook, Google+. Такое сообщение может иметь десяток параметров, в том числе и характеристики видео для передачи их в соцсети. Но основные это title, description, url, image.
        У себя я стараюсь делать, что бы каждая статья имела картинку, во время загрузки картинка нарезается на разные размеры для разных нужд и массив с ссылками на разные размеры храниться в поле properties
        В данном случае я хочу одну из ссылок на картинку публиковать при создании страницы:
        <head>
        	<meta http-equiv="Content-Type" content="text/html; charset=[[++modx_charset]]" />
        	<meta name="description" content="[[*description]]" />
        	...
        	<meta property="og:type" content="article" />
        	<meta property="og:title" content="[[*pagetitle]]" />
        	<meta property="og:description" content="[[*description]]" />
        	<meta property="og:url" content="[[*uri]]" />
        	<meta property="og:image" content="[[*properties.image]]" />
        	...
        </head>
          Володя
          14 апреля 2016, 11:27
          2
          +1
          Отправил Василию PR — github.com/bezumkin/pdoTools/pull/203
          добавляет PCRE модификаторы, можно будет делать следующее
          {'$40 за g3/400' | preg_quote}
          
          {if 'email@mail.ru'|preg_match : '/^.+@.+\.\w+$/' }
              email
          {/if}
          
          {$_modx->resource.content|preg_get : '!http://.+\.(?:jpe?g|png|gif)!Ui'}
          
          {["26-04-1974", "Сергей", "27-11-1977", "Юля"] | preg_grep : "/(\d{2})-(\d{2})-(\d{4})/" | print_r : true}
          
          Website: {'http://site.name'|preg_replace : '~^https?://~'}
          
          {'I love MODX' | preg_split : '/ /' | print_r : true}
          ваша задача тогда может быть решена просто как
          выбираем первое изображение из поля <b>content</b>
          {set $image = $_modx->resource.content|preg_get : '!http://.+\.(?:jpe?g|png|gif)!Ui}
            Александр Наумов
            14 апреля 2016, 12:00
            0
            Володя, спасибо!
            К сожаления, пока на Fenom не перешел, не могу пока от php 5.2… отказаться. Но после твоего комментария понял, что средствами MODX не решить, нужно делать сниппет.
            Алексей Федоров
            14 апреля 2016, 12:04
            0
            То есть при вызове сниппета такая конструкция не работает?
            <head>
            	<meta http-equiv="Content-Type" content="text/html; charset=[[++modx_charset]]" />
            	<meta name="description" content="[[*description]]" />
            	...
            	<meta property="og:type" content="article" />
            	<meta property="og:title" content="[[*pagetitle]]" />
            	<meta property="og:description" content="[[*description]]" />
            	<meta property="og:url" content="[[*uri]]" />
            	<meta property="og:image" content="[[+properties.image]]" />
            	...
            </head>
            Сниппет был переписан? Следуя логике, если в нем заменить first_img_src на image, то вызываться плейхолдер со ссылкой на первую картинку будет конструкцией с указанием на первый элемент массива
            [[+properties.image.0]]
              Александр Наумов
              14 апреля 2016, 12:58
              0
              Этот чанк вызывается напрямую в шаблоне, а не через сниппет pdoResources.
                Алексей Федоров
                14 апреля 2016, 14:00
                +1
                Я об этом и говорю)) Для текущей страницы необходимо указывать поле [[*pagetitle]], поскольку это системная настройка, но результат работы сниппета записывается в плейхолдер, а не в тв и так он должен работать (по краяней мере в том виде как указан на примере). Чтобы вызывать [[*properties.image]] нужно создать TV с именем properties.image и в него поместить значение [[+properties.image.0]] ([[+properties.first_img_src.0]]), но это выглядит как движение в обход.
      Андрей
      13 мая 2018, 19:46
      0
      <meta property="og:image" content="[[+properties.first_img_src.0]]">
      выдает пустоту.
      создал плагин с кодом из инструкции, поставил галочку напротив события onbeforedocformsave, пересохранил нужный документ, но все равно не работает.
      картинки в статье есть
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      11