Картинка для микроразметки?
Здравствуйте!
Пользуюсь инструкцией: Выбор первых картинок из контента, решил взять ссылку на первую картинку и вывести ее в микроразметку
Думаю, что нужно делать сниппет mainРicture, который из массива возьмет нужную мне ссылку и выводить ее так
Хотел спросить, можно ли средствами MODX не делая сниппет решить проблему?
Пользуюсь инструкцией: Выбор первых картинок из контента, решил взять ссылку на первую картинку и вывести ее в микроразметку
<meta property="og:image" content="">
. Конструкция [[+properties.image]], которая работает через сниппет, здесь [[*properties.image]] — не работает.Думаю, что нужно делать сниппет mainРicture, который из массива возьмет нужную мне ссылку и выводить ее так
<meta property="og:image" content="[[mainРicture]]">
.Хотел спросить, можно ли средствами MODX не делая сниппет решить проблему?
Комментарии: 11
Конструкция [[+properties.image]], которая работает через сниппет, здесь [[*properties.image]] — не работаетА почему она должна работать? Первое — имя плейсхолдера, в который сниппет поместил найденное значение, второе — имя TV. Если такой переменной шаблона не создать заранее, то она и не будет ничего выводить. Вызывать нужно так, как указано в примере по ссылке:
<meta property="og:image" content="[[+properties.first_img_src.0]]">
Кстати, [[+properties.image]] на странице по ссылке в упор не нашел.
Алексей, в поле 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]]
Я запутался) Первая картинка выводится на той же странице, где расположена или на другой через pdoRecources? То есть одна или нужно выборку первых картинок сделать? А то второй вариант даже не предполагал, ведь разметка Open Graph, насколько мне известно, используется преимущественно для разметки видео на странице, т.е. выводится только одна картинка в meta.
Open Graph формирует сообщение, когда пользователь нажимает кнопку поделиться статьей в соцсетях таких как Вконтакте, Facebook, Google+. Такое сообщение может иметь десяток параметров, в том числе и характеристики видео для передачи их в соцсети. Но основные это title, description, url, image.
У себя я стараюсь делать, что бы каждая статья имела картинку, во время загрузки картинка нарезается на разные размеры для разных нужд и массив с ссылками на разные размеры храниться в поле properties
В данном случае я хочу одну из ссылок на картинку публиковать при создании страницы:
У себя я стараюсь делать, что бы каждая статья имела картинку, во время загрузки картинка нарезается на разные размеры для разных нужд и массив с ссылками на разные размеры храниться в поле 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>
Отправил Василию PR — github.com/bezumkin/pdoTools/pull/203
добавляет PCRE модификаторы, можно будет делать следующее
добавляет 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}
Володя, спасибо!
К сожаления, пока на Fenom не перешел, не могу пока от php 5.2… отказаться. Но после твоего комментария понял, что средствами MODX не решить, нужно делать сниппет.
К сожаления, пока на Fenom не перешел, не могу пока от php 5.2… отказаться. Но после твоего комментария понял, что средствами MODX не решить, нужно делать сниппет.
То есть при вызове сниппета такая конструкция не работает?
<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]]
Этот чанк вызывается напрямую в шаблоне, а не через сниппет pdoResources.
Я об этом и говорю)) Для текущей страницы необходимо указывать поле [[*pagetitle]], поскольку это системная настройка, но результат работы сниппета записывается в плейхолдер, а не в тв и так он должен работать (по краяней мере в том виде как указан на примере). Чтобы вызывать [[*properties.image]] нужно создать TV с именем properties.image и в него поместить значение [[+properties.image.0]] ([[+properties.first_img_src.0]]), но это выглядит как движение в обход.
Да, тоже вариант!
Спасибо за идею.
Спасибо за идею.
<meta property="og:image" content="[[+properties.first_img_src.0]]">
выдает пустоту. создал плагин с кодом из инструкции, поставил галочку напротив события onbeforedocformsave, пересохранил нужный документ, но все равно не работает.
картинки в статье есть
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.