Add this as a plugin (OnDocFormSave). Saves the first MoreGallery image or cropimage into a TV (could be a hidden one) for quicker access.
<?php
/*
mgThumb by pepebe
---------------------------------------------
saves the first image in a galley inside a tv
trigger OnDocFormSave
Initial idea: https://gist.github.com/christianseel/557a1e0f2a1f502ce1c5
Changelog:
2014-05-20 - Initial release by christianseel
2014-05-21 - Fork and a minor fix
2015-06-20 - Added option to include crop images
2015-06-21 - Corrected a bug that crept in while cleaning up the code.
$templates - array with ids of all templates this plugin should use
$crop - Name of your cropimage. Set to false if you want to use the image itself.
$basename - if you are using a media resource for your tv, set this to true
$tvId - Id of the TV where you want to store your image
*/
$templates = array(2);
$crop = '1 zu 1'; // Name of your crop. Set to false if you don't want to have a crop image.
$basename = true;
$tvId = 22; // Add the name/id of your Thumbnail TV here
// Only trigger this plugin for resources with templates included in the array
if( !in_array( $resource->get('template') , $templates ) ){
return;
}
$c = $modx->newQuery('mgImage');
$c->where(array(
'resource' => $resource->get('id')
));
$c->sortby('sortorder', 'ASC');
$c->limit('1');
$image = $modx->getObject('mgImage', $c);
$output = "";
if($image){
if(!$crop) {
$props = $image->toArray();
$output = $props['file_url'];
}
else {
$props = $image->getCropsAsArray();
if(isset($props[$crop])){
$output = $props[$crop]['thumbnail_url'];
}
else {
return;
}
}
}
else {
return;
}
if(!empty($output)){
if($basename){
$output = basename($output);
}
$resource->setTVValue($tvId, $output);
$resource->save();
}