Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

CKEditor image resize


LePeR

Recommended Posts

Добрый день. ocStore 1.0.1, есть ли возможность автоматического уменьшения вставляемого изображения в текст, т.е. не изменения размеров, а именно ресайзинга самого изображения. Дело в том, что картинки все равно грузятся полноразмерными, а хотелось бы чтобы при редактировании создавалась уменьшенная копия. Спасибо.

Надіслати
Поділитися на інших сайтах


Попробую поднять тему и частично ответить на свой же вопрос. Вероятно нужно в контроллере той страницы, которая выводит текст, заранее вбитый в ckeditor (как правило поле таблицы description), написать обработчик, который искал бы тег img ,брал бы из него src, width и height, преобразовывал с помощью tool->image->resize и переписывал бы этот тег вместе с новым src, только бы кто-нибудь подсказал как из description выдернуть img src, понимаю что копать надо в сторону preg_match_all. Заранее спасибо.

Надіслати
Поділитися на інших сайтах


А вот и код. Можно использовать в любом контроллере где используется ckeditor для сохранения произвольной верстки в базе. Любое уменьшенное изображение, добавленное через редактор ckeditor теперь на фронт-энде грузится не полностью, а уменьшается через model_tool_image->resize. Таким образом увеличиваем скорость загрузки страниц с произвольным текстом и изображениями (делал для модуля новостей)

$entity = html_entity_decode($news_info['description']);
preg_match_all('/<img.*?width\:[^>]+>/i',$entity,$res);
foreach ($res[0] as $rest) {
preg_match('/(?<=src\=\"\/image\/)(.*)(?=\"\sstyle)/i',$rest,$oldsrc);
preg_match('/(?<=width\:\s)(.*)(?=px\;\sh)/i',$rest,$pwidth);
preg_match('/(?<=height\:\s)(.*)(?=px\;\sm)/i',$rest,$pheight);
$newlink = $this->model_tool_image->resize($oldsrc[0],$pwidth[0],$pheight[0]);
$newrest = $rest;
$newrest = preg_replace('/(?<=src\=\")(.*)(?=\"\sstyle)/i',$newlink,$newrest);
$newrest = preg_replace('/width(.*)(?=margin)/i',' ',$newrest);
$newrest = preg_replace('/height(.*)(?=margin)/i',' ',$newrest);
$entity = str_replace($rest,$newrest,$entity);
}
$this->data['description'] = $entity;

P.S. Для уменьшаемых изображений обязательно указание размера, а также margin любой толщины.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.