Выбор первых картинок из контента
Вариант с использованием properties. Используется в плейсхолдере например так
<img src="[[+properties.first_img_src.0]]" >
Плагин нужно выставить для события OnBeforeDocFormSave
Плагин перезаписывает последнюю актуальную картинку на момент сохранения ресурса, под словом актуальную я имею в виду то, что делается проверка на корректность файла, и если он действительно существует, то только тогда произойдет действие.
Если картинки не найдено — то будет записан null
{"first_img_src":null}если контент вообще пустой -то ничего не произойдет вообще.
Код можно как угодно доработать, зависит от логики реализации.
Код плагина:
<?php
if ($modx->event->name == 'OnBeforeDocFormSave') {
//get current content for resource
$content = $resource->getContent();
if (!empty($content)){
//get first image in content
$doc = new DOMDocument();
$doc->loadHTML($content);
$xml = simplexml_import_dom($doc);
$images = $xml->xpath('//img');
foreach ($images as $img) {
//also avaliable in array $img['alt'] и $img['title]
$file_headers = @get_headers($img['src']);
if ($file_headers[0] != 'HTTP/1.1 404 Not Found') {
$first_img_src = $img['src'];
break;
}
}
//get properties
$properties = $resource->get('properties');
//here you can check for empty $first_img_src and set default noImage photo
//save or override first_img_src
$properties['first_img_src'] = $first_img_src;
$resource->set('properties', $properties);
}
}В комментариях предлагается использовать так же парсер MODX http://bezumkin.ru/sections/tips\_and\_tricks/2192/#comment-17960
0
👍
👎
❤️
🔥
😮
😢
😀
😡
3 041
22.11.2013 16:31:14