Объединение выводов картинки ресурса
Здравствуйте!
Возможно кто-то сталкивался с вопросом. Пока не удалось добиться результата.
Стоит задача настроить новую галерею, я ратую за ms2Gallery, но пока не могу добиться показательного результата. Основная проблема — объединение выводов картинок ресурса. То есть чтобы несколько тысяч картинок добавленных старым способом выводились наряду с новыми ресурсами. где картинки добавлены новым способом. Пока тестирую всё на тестовом сайте, поэтому вариации как проба — возможны любые.
Старый вывод использует TV и getResource, впрочем нормально работает с Pdo
В крайнем случае, найти автоматизированный способ переместить все старые картинки в галерею, в соответствующих ресурсах.
Буду благодарен за подсказки и любую помощь!
Возможно кто-то сталкивался с вопросом. Пока не удалось добиться результата.
Стоит задача настроить новую галерею, я ратую за ms2Gallery, но пока не могу добиться показательного результата. Основная проблема — объединение выводов картинок ресурса. То есть чтобы несколько тысяч картинок добавленных старым способом выводились наряду с новыми ресурсами. где картинки добавлены новым способом. Пока тестирую всё на тестовом сайте, поэтому вариации как проба — возможны любые.
Старый вывод использует TV и getResource, впрочем нормально работает с Pdo
[[!getPage? &element=`getResources` &parents=`2` &tpl=`article.tpl` &includeContent=`1` &includeTVs=`1` &processTVs=`1` &limit=`30` &hideContainers=`1`]
На первом этапе решения проблемы экспериментировал с тем, что бы подобрать такой вывод, который сможет выводить и картинки из TV, и картинки из Ms2G.В крайнем случае, найти автоматизированный способ переместить все старые картинки в галерею, в соответствующих ресурсах.
Буду благодарен за подсказки и любую помощь!
Комментарии: 5
Лично я бы работал бы с базой напрямую.
1) Делаем выборку по нужному тв в phpmyadmin
2) Выгружаем это в csv.
3) Смотрим, что база хранит все картинки в таблице ms2_resource_files
4) Нам нужны поля: a)resource_id, b)source, c)path, d)file,e)name, и f)active
a) — из импорта пункта b
b) — если все картинки хранятся в одной папке — копируем источник файлов от ms2gallery, настраиваем его и указываем нужные пути к старой папке. Указываем id нового источника файлов
c) путь от этой папки, или просто /, если лежат в корне.
d) из импорта — имя файла. (если имя файла лежит в подпапке, обрезаем макросами или формулой excel)
e) Тоже, что и d, только без расширения.
f) 1
e) type поле можно поставить Image.
После чего — заливаем в админку (в phpmyadmin есть импорт csv) и используем скрипт перегенерации превьюшек:
Запускать лучше из консоли сервера, так как, в зависимости от количества загруженных файлов, может понадобиться какое-то время для работы.
Источник
1) Делаем выборку по нужному тв в phpmyadmin
2) Выгружаем это в csv.
3) Смотрим, что база хранит все картинки в таблице ms2_resource_files
4) Нам нужны поля: a)resource_id, b)source, c)path, d)file,e)name, и f)active
a) — из импорта пункта b
b) — если все картинки хранятся в одной папке — копируем источник файлов от ms2gallery, настраиваем его и указываем нужные пути к старой папке. Указываем id нового источника файлов
c) путь от этой папки, или просто /, если лежат в корне.
d) из импорта — имя файла. (если имя файла лежит в подпапке, обрезаем макросами или формулой excel)
e) Тоже, что и d, только без расширения.
f) 1
e) type поле можно поставить Image.
После чего — заливаем в админку (в phpmyadmin есть импорт csv) и используем скрипт перегенерации превьюшек:
<?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;
Просто скопируйте и вставьте в файл в корне сайта (или измените путь к index.php).Запускать лучше из консоли сервера, так как, в зависимости от количества загруженных файлов, может понадобиться какое-то время для работы.
Источник
Благодарю Александр! Попробую сделать на Вашем примере
Получается надо создать папку с айди ресурса, положить туда оригинал и рядом создать папки превьюшек. Перенести запись оригинала в БД и генерировать вышеприведённым скриптом превьюшки.
Как то моно генерировать сами папки, хеш и свойства оригинала? ({«size»:13844,«width»:220,«height»:200,«bits»:8,«mime»:«image\/jpeg»})
Как то моно генерировать сами папки, хеш и свойства оригинала? ({«size»:13844,«width»:220,«height»:200,«bits»:8,«mime»:«image\/jpeg»})
Папки для превьюшек создавать не надо, скрипт сам создаст. И без хеша и свойств тоже можно вроде как обойтись.
Есть способ перенести картинки по папкам по названию айди ресурса?
Есть способ перенести картинки по папкам по названию айди ресурса?
Возможно кому-то однажды пригодиться…
Для переноса картинок я приспособил следующие инструменты
— Подготовил csv. Для этого оставил только два поля: id и путь к старым картинкам
— Загрузил csv на сервер, и нужно дополнительно почистить файл от символов переноса каретки
— Теперь необходимо выполнить скрипт, который создаст нужные каталоги и перенесёт нужные картинки в эти каталоги. В позаимствованном скрипте разбора csv, использовал только два первых значения: Host и Group, для первых двух полей в строке. Скрипт запускаю от рута, предварительно выставлены права +x.
Довольно шустро было разобрано около 9 тысяч строк и скопировано столько же картинок.
— Осталось сгенерировать превью, используя скрипт которым поделился Александр.
Для переноса картинок я приспособил следующие инструменты
— Подготовил csv. Для этого оставил только два поля: id и путь к старым картинкам
— Загрузил csv на сервер, и нужно дополнительно почистить файл от символов переноса каретки
tr -d "\r" < test.csv > test2.csv
— Теперь необходимо выполнить скрипт, который создаст нужные каталоги и перенесёт нужные картинки в эти каталоги. В позаимствованном скрипте разбора csv, использовал только два первых значения: Host и Group, для первых двух полей в строке. Скрипт запускаю от рута, предварительно выставлены права +x.
#!/bin/bash
INPUT=test2.csv
OLDIFS=$IFS
IFS=";"
[ ! -f $INPUT ] &while read Host Group itItemType itKey itValueType itDescription itDelay itHistory itTrends itDataType itUnits itMultiplier itDelta itFormula itParams itSnmpCom itSnmpOid itApplication
do
mkdir -p assets/images/resources/"$Host"
cp "$Group" assets/images/resources/"$Host"/
done < $INPUT
IFS=$OLDIFS
Довольно шустро было разобрано около 9 тысяч строк и скопировано столько же картинок.
— Осталось сгенерировать превью, используя скрипт которым поделился Александр.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.