ms2Gallery обновление превью

Доброе время суток!

Импортировал на сайт большое число ресурсов с изображениями.

По ряду ресурсов нужно обновить превью.

Скрипт из документации работает но для всего сайта. Это долго, из браузера не получается (timeout). Из консоли ещё не пробовал, но както жестоко для сервера.

Параметр array('parent' => 0) не помогает, как я понимаю это не id ресурса и для всех равен 0.

Вопрос! Как обновить превью для отдельных веток или шаблонов?

$modx->addPackage('ms2gallery', MODX_CORE_PATH . 'components/ms2gallery/model/');

$files = $modx->getIterator('msResourceFile', array('parent' => 0));
foreach ($files as $file) {
    $children = $file->getMany('Children');
    foreach ($children as $child) {
        $child->remove();
    }
    $file->generateThumbnails();
}
Роман
19 апреля 2017, 13:47
modx.pro
1
2 122
0

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

Олег
20 апреля 2017, 00:30
0
Насколько я помню — он равен 0 для всех оригинальных фотографий.
Не вижу ничего жесткого в обновлении через консоль :)
Вообще, вроде бы, видел кастомные варианты этого скрипта, но не смогу подсказать, где(
    Илья Уткин
    20 апреля 2017, 10:53
    3
    +1
    Я использую вот такой скрипт для генерации превьюшек ms2Gallery. Этот код вставляется в Console и запускается прямо из браузера.
      Роман
      20 апреля 2017, 11:09
      0
      Спасибо!
      Но как я понял, это тоже самое.
      Отдельную ветку обновить не получится.
      Решается проблема запуска в браузере.
      Вопросик для Console нужно обязательно Ace ставить? У меня проблемка с отображением поля ввода кода, оно зауженное (Firefox Ubuntu).
        Илья Уткин
        20 апреля 2017, 11:16
        0
        Чтобы обновить отдельную ветку, нужно выбрать необходимые ресурсы, к ним приджойнивать картинки по полю resource_id (вроде), и уже эти картинки обновлять. Готового решения нет, надо писать такую выборку самостоятельно.

        Ace необязательно, работает и без него, просто выглядит не очень красиво.
        Andrey
        16 марта 2019, 13:56
        0
        Спасибо за скрипт, как раз искал такой, чтобы задача не блокировалась хостингом на 10 секунде
        Роман
        21 апреля 2017, 15:25
        0
        Возможно не оптимально но работает.
        $adocs = $modx->runSnippet ('pdoResources' , array('parents'=>'13','limit'=>'200','templates'=>'23','tpl'=>'export_tpl' ));
        
        $docs=explode(",",trim($adocs,','));
        
        foreach($docs as $d){
        
        	$id = intval($d);
        
            if ( $resource = $modx->getObject('modResource', $id)) {
        
                    $properties = $resource->getProperties('ms2gallery');
        
        			if( $properties['media_source'] != 2 ){
        
        			  $properties['media_source'] = 2;//для заголовков
        			  $resource->setProperties($properties, 'ms2gallery');
        			  $resource->save();
        			}
        			  $files = $modx->getIterator('msResourceFile', array('resource_id' => $id,'parent' => 0 ));
        			  foreach ($files as $file) {
        
        					$children = $file->getMany('Children');
        					foreach ($children as $child) {
        						$child->remove();
        					}
        					$file->generateThumbnails();	
        
        			  }
        
        	}
        
        }
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          6