Обновление всех превью товара MS2

Скрипт для обновления всех превью товаров:

<?php
define('MODX_API_MODE', true);
require 'index.php';		// Если файл лежит не в корне - здесь нужно указать верный путь
$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_INFO);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

if (!isset($parents)) {$parents = 0;}		// Можно указать список категорий для поиска товаров
if (!isset($resources)) {$resources = '';}	// Можно указать конкретный список товаров

$pdo = $modx->getService('pdoFetch');
$condition = array('parents' => $parents);
$files = $pdo->getCollection('msProduct',
	array(
		'msProduct.class_key' => 'msProduct',
	),
	array(
		'class' => 'msProduct',
		'parents' => $parents,
		'resources' => $resources,
		'innerJoin' => array(
			'msProductFile' => array(
				'alias' => 'msProductFile',
				'on' => array(
					'msProduct.id = msProductFile.product_id',
					'msProductFile.parent' => 0,
					'msProductFile.type' => 'image',
				)
			)
		),
		'select' => array(
			'msProductFile' => 'all'
		),
		'sortby' => 'msProduct.id'
	)
);

echo '<pre>';
echo $pdo->getTime();
foreach ($files as $row) {
	$file = $modx->newObject('msProductFile');	
	$file->fromArray($row, '', true, true);
	
	$children = $file->getMany('Children');
	foreach ($children as $child) {
		$child->remove();
	}
	$file->generateThumbnails();
	
	// Обновляем thumb и image товара
	if ($product = $file->getOne('Product')) {
		$product->updateProductImage();
	}
}

echo microtime(true) - $modx->startTime;

Файл предназначен для запуска из корня сайта, желательно из консоли — так как может занимать много времени.
После использования файл нужно удалить, чтобы его не нашли злоумышленники.

Обновлено 23.01.2014

Версия для ms2Gallery:
<?php
define('MODX_API_MODE', true);
require 'index.php';

$modx->getService('error','error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$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();
}

echo microtime(true) - $modx->startTime;

Следующая заметка
Вывод рекомендуемых товаров в корзине
Предыдущая заметка
Fancybox и галерея MS2


Комментарии ()

  1. Василий Наумкин 08 июля 2013, 19:47 # 0
    Ты удаляешь все превьшки в цикле, а генерируешь одну новую за циклом.

    Гоню. Напишу чуть позже рабочий сниипет для обновления, а то правда, регулярно спрашивают.
    1. Александр Мелихов 08 июля 2013, 19:51 # 0
      Но в
      class msProductFileGenerateProcessor
      именно так и делается…
      if ($file = $this->modx->getObject('msProductFile', $id)) {
      			$children = $file->getMany('Children');
      			/* @var msProductFile $child */
      			foreach ($children as $child) {
      				$child->remove();
      			}
      			$file->generateThumbnails();
      		}
      понимание не пришло ко мне(
      1. Александр Мелихов 08 июля 2013, 19:54 # 0
        Класс, буду ждать!
        1. Василий Наумкин 09 июля 2013, 05:45 # 0
          Вот, держи готовый, уже 2 раза исправленный сниппет =)

          Проверил у себя, работает как надо.
          1. Александр Мелихов 09 июля 2013, 11:53 # 0
            Радуешь, как всегда)
            Надо все-таки разобраться в модксе и пдо чтобы не дергать по пустякам.
            1. Александр Мелихов 09 июля 2013, 12:11 # 0
              Василий, стыдно писать, но осталась проблема — путь к шрифту из массива JSON етот сниппет воспринимает не так, как кнопка из админки (шрифт ватермарки ставится стандартный), я для себя сам разберусь, пишу просто чтобы на будущее осталось максимально полное решение проблемы.
              1. Александр Мелихов 09 июля 2013, 12:46 # 0
                Ура, разобрался, шрифт надо класть в core/model/phpthumb/fonts ето дефолтная папка для шрифтов
                1. Василий Наумкин 09 июля 2013, 12:56 # 0
                  Молоток!

                  Я и не пробовал со шрифтами, если честно.
        2. Александр Мелихов 09 июля 2013, 13:56 # 0
          Приложу к сниппету Василия свой под названием renewImgs, запускается через 33 костыля, пока работает можно попить кофе, зато свой))). Обновляет превьюшки всех товаров, однако, чтобы не улететь в таймаут, прикрутил разделение по кускам, разделяйте в зависимости от мощей сервака, удачи)
          <?php
          $begin = 1;
          $end = 15;
          $query = $modx->newQuery('msProduct');
          $query->where(array(
             'class_key:=' => 'msProduct',
             'AND:id:>=' => $begin,
             'AND:id:<=' => $end
          ));
          $goods = $modx->getCollection('msProduct', $query);
          foreach ($goods as $good){
          	$id = $good->id;
          	$modx->runSnippet('generateThumbs',
          	 array(
                      'id' => $id
                  )
          	);
          }
          return "Обновлено c $begin по $end";
          UPD можно убрать первые 2 строчки и вызывать с параметрами, чтобы не ковырять его каждый раз)
        3. Василий Наумкин 08 июля 2013, 20:07 # 0
          Сниппет для обновления превьюшек generateThumbs:
          $condition = array('product_id' => $id, 'parent' => 0, 'type' => 'image');
          $files = $modx->getCollection('msProductFile', $condition);
          foreach ($files as $file) {
          	$modx->removeCollection('msProductFile', array('parent' => $file->id));
          	$file->generateThumbnails();
          }

          Для работы нужно указать $id товара:
          [[!generateThumbs?
          	&id=`5`
          ]]
          1. Воеводский Михаил 09 июля 2013, 09:39 # 0
            Василий, спасибо за полезный сниппет. И за многое другое :)
            Размести это сниппет в готовые решения, пжл. Намного удобнее будет искать.
            1. Василий Наумкин 09 июля 2013, 13:00 # 0
              Перенес и отредактировал.
              1. Юрий Эффа 06 ноября 2013, 09:56 # 0
                Василий, такая же проблема, как здесь:
                Добавил размер в Источниках файлов,
                Изменил ms2_product_thumbnail_size на нужный мне размер,
                Прогнал товары с добавленным в шаблон товара сниппетом generateThumbs.
                На странице товара в админке превью отображаются в нужном мне размере, но на сайте в плейсхолдер thumb выводится ссылка со старым размером картинки.

                з.ы. «программа поощерения автора» задисаблена?) а я хотел…
                1. Юрий Эффа 06 ноября 2013, 10:04 # 0
                  Ага… разобрался)
                  Сносим [[+thumb]], вставляем вместо него [[+235x235]] (он же новый размер превью), добавляем в вызов сниппета msProducts: &includeThumbs=`235x235`, пляшем ))
                  1. Василий Наумкин 06 ноября 2013, 10:14 # 0
                    Добавил операцию в скрипт, можно проверять:
                    // Обновляем thumb и image товара
                    if ($product = $file->getOne('Product')) {
                    	$product->updateProductImage();
                    }
          2. Алексей Карташов 08 июля 2013, 22:18 # 0
            У вас в коде ошибка.
            Вместо
            foreach ($images as $image) {
            $children = $file->getMany('Children');
            надо так:
            foreach ($images as $image) {
            $children = $image->getMany('Children');
            Может у тебя на сайте и норм, но здесь написано не верно. Может в этом всё дело?
            1. Василий Наумкин 09 июля 2013, 05:44 # 0
              Там все немного сложнее, я тоже не сразу въехал: нужно изначально отобрать картинки с parent = 0 и работать только с ними.

              То есть, если нужно сразу обновить картинки товара, то используем не getMany(), а getCollection() с условием.

              Вот правильный код.
              1. Алексей Карташов 09 июля 2013, 12:49 # 0
                Понял) Через несколько дней сяду за e-mag, буду плотнее разбираться.
            2. Николай 09 июля 2013, 14:39 # 0
              А как можно обновить превьюшеки у всех товаров? На сайте порядка 600 товаров, и тут захотелось сделать не 5 товаров в ряд а 4, другой размер картинок… Через msProduct передать все айди через запятую?
                1. Николай 09 июля 2013, 15:06 # 0
                  Василий, подскажи что я делаю не так
                  kedr2.ruyou-show.ru/catalog/x-ray/ward-x-ray/series-easyslide/
                  Первый товар, все картинки ранее были 130х130. Я сделал 200х200. Указал это в настройках ms2, и в источниках файлов. В ручную нажал «обновить прервью» в товаре в админке. Там все стало нормально, а на сайте ссылка почему то ведет все равно на 130х130… Кэш чистил…
                  1. Василий Наумкин 09 июля 2013, 16:43 # 0
                    А вызов сниппета ты изменил? Параметр includeThumbs, который?
                    1. Николай 09 июля 2013, 16:49 # 0
                      Хм, а у меня там вывод идет через фильтры… Может туда необходимо добавить этот параметр?

                      [[!mFilter?
                      &resources=`[[!msProducts?parents=`[[*id]]`&returnIds=`1`]]`
                      &includeTVs=`1`
                      &includeMS=`1`
                      &includeTVList=`filter1,filter2,filter3,filter4,filter5,filter6,filter7,filter8,filter9,filter10`
                      &tpl=`g_prod_item`
                      ]]
                      1. Николай 09 июля 2013, 17:24 # 0
                        Добавил
                        &includeThumbs=`200x200`
                        , все равно не поменялось ничего.
                        1. Василий Наумкин 09 июля 2013, 17:28 # 0
                          Значит, не судьба.
                          1. Николай 10 июля 2013, 02:07 # 0
                            Забавно, в админке прервьюшка создается нормально, но основную картинку он так же пытается брать из 130х130

                            kedr2.ruyou-show.ru/123.PNG
                    2. Николай 09 июля 2013, 15:40 # 0
                      При чем, если
                      kedr2.ruyou-show.ru/assets/images/products/192/130x130/60aac1acf0832d27db3e2dc28df8f09b.jpg вместо этого в браузер прописать
                      kedr2.ruyou-show.ru/assets/images/products/192/200x200/60aac1acf0832d27db3e2dc28df8f09b.jpg это, то картинка работает…
                  2. Василий Столейков 30 октября 2013, 10:54 # 0
                    Проблема, не обновляются превьюшки ни одним из скриптов…
                    При использовании скрипта из статьи, следующая ошибка:
                    [pdoTools] Could not load collection of "msProduct": Error 42S22: Unknown column 'modResource.id' in 'order clause'
                    Общий вывод следующий:
                    [2013-10-30 08:52:26] (ERROR @ /preview.php)
                    
                    [pdoTools] Could not load collection of "msProduct": Error 42S22: Unknown column 'modResource.id' in 'order clause'
                    0.0001180: xPDO query object created
                    0.0022109: innerJoined msProductFile as msProductFile
                    0.0002279: Added selection of msProductFile: SQL_CALC_FOUND_ROWS `id`, `product_id`, `source`, `parent`, `name`, `description`, `path`, `file`, `type`, `createdon`, `createdby`, `rank`, `url`, `properties`, `hash`
                    0.0244060: Processed additional conditions
                    0.0262089: Added where condition: msProduct.class_key=msProduct, msProduct.parent:IN(2,38,39,40,43,41,42,44,65,66,67,14,77,27,29,8994,88,26,89,9036,9010,9011,9012,9013,9014,19,20,9009,16,22,82,80,79,81,83,9383,9382,9380,9381,9379,84,9385,9386,9,9384,17,21,11,925,9388,9389,9390,9391,9392,9393,9394,9395,9424,9404,9428,9406,8978,8979,8976,8977,23,9397,9398,9400,9401,9399,9402,9403,9396,9410,9407,9425,9409,9426,9411,9427,9412,9418,9419,9413,9420,9416,9422,9414,9423,9417,8991,8987,8989,8988,8992,8986,8990,8984,8985,8981,8980,8982,45,46,47,48,49,50,51,52,53,54,55,56,924,57,58,59,60,61,62,63,64,69,70,71,72,74,73,68,75,76,926,927,928,15,9095,9103,9108,85,9015,9037,9070,8173,8578,8787,8794,8582,8790,8792,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8392,8393,8394,8395,8396,8397,8398,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8579,8581,8580,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8746,8747,8748,8749,8750,8751,8752,8753,8754,8755,8756,8757,8758,8788,8789,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8795,8796,8932,8933,8934,8935,8940,8941,8942,8943,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8936,8937,8938,8939,8944,8945,8946,8947,8583,8584,8785,8786,8759,8760,8761,8762,8763,8764,8765,8766,8767,8768,8769,8770,8771,8772,8773,8816,8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,8829,8830,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,8784,8797,8798,8831,8832,8833,8834,8835,8836,8837,8838,8839,8840,8841,8842,8843,8799,8800,8801,8802,8803,8804,8844,8845,8846,8847,8848,8849,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8850,8851,8852,8853,8854,8855,8856,8857,8858,8859,8860,8791,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917,8918,8919,8920,8921,8793,8922,8923,8924,8925,8926,8927,8928,8929,8930,8931,9317,9346,9106,9123,9141,9143,9145,9147,9209,9099,9131,9331,9332,9333,9334,9351,9352,9353,9354,9355,9356,9113,9133,9134,9135,9136,9137,9138,9139,9140,9149,9150,9151,9152,9153,9154,9155,9156,9124,9223,9224,9225,9226,9227,9228,9229,9230,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9248,9249,9250,9252,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9142,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9144,9157,9158,9159,9161,9162,9163,9164,9165,9166,9167,9168,9169,9170,9210,9211,9212,9213,9214,9215,9100,9114,9115,9116,9117,9118,9119,9129,9130,9132,9198,9199,9200,9201,9202,9324,9339,9340,9341,9181,9186,9191,9216,9104,9111,9357,9360,9362,9363,9364,9365,9366,9367,9368,9369,9359,9370,9371,9372,9373,9374,9361,9375,9376,9377,9378,9182,9183,9184,9185,9187,9188,9189,9190,9192,9193,9194,9195,9196,9197,9217,9218,9219,9220,9221,9222,9120,9121,9122,9125,9126,9127,9128,9203,9204,9205,9206,9207,9208,9110,9251,9256,9253,9254,9255,9000,9001,9002,9003,9004,9005,9006,9007,9008,9016,9029,9030,9031,9032,9033,9034,9035,9038,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055,9056,9057,9058,9060,9061,9062,9063,9064,9065,9066,9059,9071,9093,9094,9069,9067,9068,8995)
                    0.0000460: Sorted by modResource.id, DESC
                    0.0007350: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `msProductFile`.`id`, `msProductFile`.`product_id`, `msProductFile`.`source`, `msProductFile`.`parent`, `msProductFile`.`name`, `msProductFile`.`description`, `msProductFile`.`path`, `msProductFile`.`file`, `msProductFile`.`type`, `msProductFile`.`createdon`, `msProductFile`.`createdby`, `msProductFile`.`rank`, `msProductFile`.`url`, `msProductFile`.`properties`, `msProductFile`.`hash` FROM `modx_site_content` AS `msProduct` JOIN `modx_ms2_product_files` `msProductFile` ON  ( msProduct.id = msProductFile.product_id AND `msProductFile`.`parent` = 0 AND `msProductFile`.`type` = 'image' )  WHERE  ( `msProduct`.`class_key` = 'msProduct' AND `msProduct`.`parent` IN (2,38,39,40,43,41,42,44,65,66,67,14,77,27,29,8994,88,26,89,9036,9010,9011,9012,9013,9014,19,20,9009,16,22,82,80,79,81,83,9383,9382,9380,9381,9379,84,9385,9386,9,9384,17,21,11,925,9388,9389,9390,9391,9392,9393,9394,9395,9424,9404,9428,9406,8978,8979,8976,8977,23,9397,9398,9400,9401,9399,9402,9403,9396,9410,9407,9425,9409,9426,9411,9427,9412,9418,9419,9413,9420,9416,9422,9414,9423,9417,8991,8987,8989,8988,8992,8986,8990,8984,8985,8981,8980,8982,45,46,47,48,49,50,51,52,53,54,55,56,924,57,58,59,60,61,62,63,64,69,70,71,72,74,73,68,75,76,926,927,928,15,9095,9103,9108,85,9015,9037,9070,8173,8578,8787,8794,8582,8790,8792,8174,8175,8176,8177,8178,8179,8180,8181,8182,8183,8184,8185,8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217,8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233,8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8324,8325,8326,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,8364,8365,8366,8367,8368,8369,8370,8371,8372,8373,8374,8375,8420,8421,8422,8423,8424,8425,8426,8427,8428,8429,8430,8431,8432,8433,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459,8460,8461,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490,8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506,8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8570,8571,8572,8573,8574,8575,8576,8577,8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600,8601,8602,8603,8604,8605,8606,8249,8250,8251,8252,8253,8254,8255,8256,8257,8258,8259,8260,8261,8262,8263,8264,8265,8266,8267,8268,8269,8270,8271,8272,8273,8274,8275,8276,8277,8278,8376,8377,8378,8379,8380,8381,8382,8383,8384,8385,8386,8387,8388,8389,8390,8391,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8392,8393,8394,8395,8396,8397,8398,8289,8290,8291,8292,8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,8308,8309,8310,8311,8312,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322,8323,8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,8411,8412,8413,8414,8415,8416,8417,8418,8419,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475,8476,8477,8478,8479,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8579,8581,8580,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8619,8620,8621,8622,8623,8624,8625,8626,8627,8641,8642,8643,8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8667,8668,8669,8670,8671,8672,8673,8674,8675,8676,8677,8678,8679,8680,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710,8711,8712,8713,8727,8728,8729,8730,8731,8732,8733,8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8654,8655,8656,8657,8658,8659,8660,8661,8662,8663,8664,8665,8666,8681,8682,8683,8684,8685,8686,8687,8688,8689,8690,8691,8692,8693,8694,8628,8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,8639,8640,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8746,8747,8748,8749,8750,8751,8752,8753,8754,8755,8756,8757,8758,8788,8789,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8795,8796,8932,8933,8934,8935,8940,8941,8942,8943,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962,8963,8964,8965,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8936,8937,8938,8939,8944,8945,8946,8947,8583,8584,8785,8786,8759,8760,8761,8762,8763,8764,8765,8766,8767,8768,8769,8770,8771,8772,8773,8816,8817,8818,8819,8820,8821,8822,8823,8824,8825,8826,8827,8828,8829,8830,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870,8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8774,8775,8776,8777,8778,8779,8780,8781,8782,8783,8784,8797,8798,8831,8832,8833,8834,8835,8836,8837,8838,8839,8840,8841,8842,8843,8799,8800,8801,8802,8803,8804,8844,8845,8846,8847,8848,8849,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8850,8851,8852,8853,8854,8855,8856,8857,8858,8859,8860,8791,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917,8918,8919,8920,8921,8793,8922,8923,8924,8925,8926,8927,8928,8929,8930,8931,9317,9346,9106,9123,9141,9143,9145,9147,9209,9099,9131,9331,9332,9333,9334,9351,9352,9353,9354,9355,9356,9113,9133,9134,9135,9136,9137,9138,9139,9140,9149,9150,9151,9152,9153,9154,9155,9156,9124,9223,9224,9225,9226,9227,9228,9229,9230,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9248,9249,9250,9252,9264,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9142,9275,9276,9277,9278,9279,9280,9281,9282,9283,9284,9285,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298,9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314,9315,9316,9144,9157,9158,9159,9161,9162,9163,9164,9165,9166,9167,9168,9169,9170,9210,9211,9212,9213,9214,9215,9100,9114,9115,9116,9117,9118,9119,9129,9130,9132,9198,9199,9200,9201,9202,9324,9339,9340,9341,9181,9186,9191,9216,9104,9111,9357,9360,9362,9363,9364,9365,9366,9367,9368,9369,9359,9370,9371,9372,9373,9374,9361,9375,9376,9377,9378,9182,9183,9184,9185,9187,9188,9189,9190,9192,9193,9194,9195,9196,9197,9217,9218,9219,9220,9221,9222,9120,9121,9122,9125,9126,9127,9128,9203,9204,9205,9206,9207,9208,9110,9251,9256,9253,9254,9255,9000,9001,9002,9003,9004,9005,9006,9007,9008,9016,9029,9030,9031,9032,9033,9034,9035,9038,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055,9056,9057,9058,9060,9061,9062,9063,9064,9065,9066,9059,9071,9093,9094,9069,9067,9068,8995) )  ORDER BY modResource.id DESC "
                    0.0016789: Could not process query, error #1054: Unknown column 'modResource.id' in 'order clause'
                    0.0415869: Total time
                    13 369 344: Memory usage
                    0.1484591960907
                    Как ещё обновить превьюшки у товаров?
                    P.S. Магазин был перенесён из Shopkeeper для Evo.
                    1. Василий Наумкин 30 октября 2013, 11:08 # 0
                      Ага, починил.

                      Обнови скриптик и попробуй снова.
                      1. Василий Столейков 30 октября 2013, 11:16 # 0
                        Ураа! Наконец-то сработало! Спасибо огромное, Василий!
                    2. Юрий Эффа 06 ноября 2013, 13:34 # 0
                      Создал файл res-ice.php с кодом из первого поста. в корне сайта, запускаю, получаю:
                      [2013-11-06 13:31:26] (ERROR @ /res-ice.php)
                      Could not load class: pdoFetch from pdofetch.
                      [2013-11-06 13:31:26] (ERROR @ /res-ice.php)
                      Problem getting service pdoFetch, instance of class pdoFetch, from path 
                      Fatal error: Call to a member function getCollection() on a non-object in /var/www/u------/public_html/------.ru/res-ice.php on line 13
                      1. Василий Наумкин 06 ноября 2013, 13:56 # 0
                        Could not load class: pdoFetch from pdofetch.
                        Что бы это могло быть? Даже не знаю…

                        Может у тебя не установлен pdoTools? Или установлен, но ты его давно не обновлял?
                        1. Юрий Эффа 06 ноября 2013, 16:44 # 0
                          Установлен: 1.7.1-pl
                          1. Василий Наумкин 06 ноября 2013, 16:45 # 0
                            А какая версия доступна в репозитории?
                            1. Юрий Эффа 06 ноября 2013, 17:12 # 0
                              1.8.7-pl )) Обновился, скрипт заработал. Спасибо.
                              Но больше мне помог фунцкионал возможности вставки изображений разных размеров вместо thumb.
                              Например, страница каталога товаров с большими изображениями, а доп.товары типа «также покупают» на странице товара — с маленькими.
                              Василий, ещё раз спасибо)
                              1. Василий Наумкин 06 ноября 2013, 17:16 # 0
                                thumb и image — это исключительно для быстрого вывода в списке товаров и в админке.

                                На здоровье!
                      2. Даниил 13 ноября 2013, 06:37 # 0
                        Не работает обновление превьюшек, ну ни в какую! pdoTools 1.8.8 стоит. Сниппет не обновляет, как ни вызывай. Предложенный файл выдает следующий код и также ничего не обновляет
                        0.0001299: xPDO query object created
                        0.0016770: innerJoined msProductFile as msProductFile
                        0.0001771: Added selection of msProductFile: SQL_CALC_FOUND_ROWS `id`, `product_id`, `source`, `parent`, `name`, `description`, `path`, `file`, `type`, `createdon`, `createdby`, `rank`, `url`, `properties`, `hash`
                        0.0000281: Processed additional conditions
                        0.0003550: Added where condition: msProduct.class_key=msProduct
                        0.0000451: Sorted by msProduct.id, 
                        0.0005250: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `msProductFile`.`id`, `msProductFile`.`product_id`, `msProductFile`.`source`, `msProductFile`.`parent`, `msProductFile`.`name`, `msProductFile`.`description`, `msProductFile`.`path`, `msProductFile`.`file`, `msProductFile`.`type`, `msProductFile`.`createdon`, `msProductFile`.`createdby`, `msProductFile`.`rank`, `msProductFile`.`url`, `msProductFile`.`properties`, `msProductFile`.`hash` FROM `modx_site_content` AS `msProduct` JOIN `modx_ms2_product_files` `msProductFile` ON  ( msProduct.id = msProductFile.product_id AND `msProductFile`.`parent` = 0 AND `msProductFile`.`type` = 'image' )  WHERE `msProduct`.`class_key` = 'msProduct' ORDER BY msProduct.id "
                        0.0673342: Total rows: 1036
                        0.0771642: Total time
                        13 893 632: Memory usage
                        [2013-11-13 06:23:16] (INFO @ /prev.php)
                        
                        Removed msProductFile instance with primary key 4621
                        
                        [2013-11-13 06:23:16] (INFO @ /prev.php)
                        
                        Removed msProductFile instance with primary key 4620
                        
                        [2013-11-13 06:23:16] (INFO @ /prev.php)
                        
                        Removed msProductFile instance with primary key 4623
                        
                        [2013-11-13 06:23:16] (INFO @ /prev.php)
                        
                        Removed msProductFile instance with primary key 4622
                        
                        Ну итд, фраза Removed msProductFile instance with primary key NNNN повторяется далее очень много раз
                        1. Василий Наумкин 13 ноября 2013, 07:05 # 0
                          Removed msProductFile говорит о том, что старая превьюшка была удалена.

                          Если бы после этого не создавались новые превьюшки — у тебя бы пропали все картинки на сайте. Я так понимаю, этого не происходит, а значит скрипт работает как положено.

                          Скорее всего, ты не изменил настройки в источнике файлов, или еще что-то подобное.
                          1. Даниил 13 ноября 2013, 07:42 # 0
                            Настройки 100% изменил, выставил zc в 0. Если вручную запихиваю изображение в товар, то с новыми превьюшками закачивается, с измененными настройками! А через скрипт совсем ничего не обновляется( Можт он где-то кэшируется параметр этот thumbnails или еще чего? Уже даже такой бред в голову лезет, уже все перепробывал
                            1. Даниил 13 ноября 2013, 08:13 # 0
                              Странное дело, стал подкидвать скрипту конкретные ID директорий, и он начал генерировать таки превьюшки! Причем как то тоже странно, за один проход может не у всех товаров сгенерировать, какие-то пропускает… Приходится иногда раза 2-3 для одной директории запустить О.о
                              1. Даниил 13 ноября 2013, 08:31 # 0
                                Кажется я начинаю понимать чего этому скрипту нехватало… Судя по всему его не устраивала большая вложенность коталогов. У меня например вот так это выглядит
                                Или опять бред несу, как думаете, Василий? Ограничен ли скрипт по глубине вложенности ресурсов?
                                1. Василий Наумкин 13 ноября 2013, 08:32 # 0
                                  Если parents = 0, то нет, не ограничен.
                                  1. Даниил 13 ноября 2013, 08:48 # 0
                                    Тогда тем более странно, с parents = 0 он у меня так и не начал работать… Ну ничего, в любом случае выход был найден и проблема решена. Спасибо за помощь) Есть еще проблема с тормозами Wayfinder, которые появились после установки MS2 (никаких рекурсий в чанках нет, даже при вызове без параметров все тормозит жутко), но это наверное в соответствующей теме спрошу, не буду тут флудить
                        2. Василий Столейков 14 апреля 2014, 12:12 # 0
                          Никак не могу вспомнить как я раньше это делал… :(
                          У меня есть:
                          1. перенесённые товары с ево в таблицу modx_site_content. Поля class_key и другие параметры проставлены.
                          2. Нужные параметры из тв-шек вставлены в таблицу modx_ms2_products. В том числе и из тв-шки image в поле image.
                          3. Как мне сгенерировать превьюшки для всех товаров?
                          Как я понял, этот скрипт берёт изображения из таблицы modx_ms2_product_files, где parent = 0 и type = image.
                          Как мне перевести картинки из modx_ms2_products.image в таблицу modx_ms2_product_files?
                          P.S. Или я думаю не в том направлении? Откуда генерируются превьюшки?
                          1. Василий Наумкин 14 апреля 2014, 12:17 # +1
                            Превьюшки генерируются из загруженных файлов, которые находятся в msProductFile.
                            1. Василий Столейков 15 апреля 2014, 12:24 # 0
                              Ок, спасибо, понял… Получается нужно их сначала загрузить товарам, а потом уже использовать этот скрипт генерации превьюшек.
                              Мне нужно было немного другое — перенос картинок товаров с старого сайта на новый. А потом уже похоже после этого нужно будет заняться генерацией превьюшек…
                              Буду копать дальше, спасибо за ответ!
                              1. Василий Наумкин 15 апреля 2014, 13:03 # +1
                                Возможно, тебе будет проще выгрузить всё в csv, залить картинки на сервер, прописать в csv к ним пути и импортировать этим скриптом.
                                1. Василий Столейков 15 апреля 2014, 13:06 # 0
                                  Ок, так и сделаю. Этот вариант оставлял на последний — всё свои костыли пытался доделать… Спасибо!
                          2. Владимир Flame 18 августа 2014, 15:54 # 0
                            А можно такой скрипт сделать для msgallery2?
                            1. Василий Наумкин 18 августа 2014, 15:56 # 0
                              В конце заметки всё написано.
                              1. Владимир Flame 21 августа 2014, 17:02 # 0
                                прошу прощения, не заметил.
                                но тут нюанс: у меня используется водяной знак. настройки в источниках файлов:
                                [{«w»:120,«h»:90,«q»:90,«zc»:«1»,«bg»:«000000»,«fltr»:«wmi|watermark.png|BR|100»},{«w»:360,«h»:270,«q»:90,«zc»:«1»,«bg»:«000000»]}

                                при обновлении превью из админки водяной знак накладывается, но при обновлении через скрипт нет.
                                1. Василий Наумкин 21 августа 2014, 17:32 # 0
                                  Потому что при запуске из админки и из корня сайта путь до картинки выходит разный.
                                  1. Владимир Flame 21 августа 2014, 18:14 # 0
                                    хм. как быть при этом?
                                    запуск из админки с подключенным index.php из корня все равно не влияет на водяные знаки.
                                    1. Василий Наумкин 21 августа 2014, 18:31 # 0
                                      Мне некогда с этим разбираться.

                                      Если есть желание — могу помочь платно.
                            2. Богдан 24 ноября 2014, 19:48 # 0
                              У меня скрипт заработал из консоли только после добавления в начало файла строки:
                              ini_set('memory_limit', '30M' );
                              До этого не генерились превьюшки, так как расширению PHP GD не хватало памяти. При чем через веб все работало нормально. Сервер настроен по инструкции Василия.
                              Добавление новых комментариев отключено.