CkEditor не уменьшает изображения

Главные вкладки

Аватар пользователя alexboy alexboy 5 марта 2016 в 12:32

В настройках плагина CKEditor выставляю ограничение на размер 100x100
ckeditor
Потом при размещении ноды в поле body вставляю большое изображение, но оно не уменьшается. Как тогда в восьмом друпале добиться автоматического уменьшения больших изображений в статьях?

Комментарии

Аватар пользователя alexboy alexboy 5 марта 2016 в 15:10
1

Чтобы уменьшались изображения, нужно пропатчить модуль /core/modules/editor
Патч взял отсюда: патч
Патчил этим способом: способ
Уже пропатченный модуль: Editor

А вот как сделать, чтобы эти уменьшенные изображения увеличивались по клику, пока не разобрался.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 5 марта 2016 в 16:04
1

@alexboy, красавчик!

alexboy wrote:

А вот как сделать, чтобы эти уменьшенные изображения увеличивались по клику, пока не разобрался.

Вот это не очень понял. Этот патч исправляет только срач с именованием свойств и разделителем. А изображение во время загрузки уменьшаются на самом деле (о чем и заявлено)

<?php
// /core/modules/file/file.module, function file_validate_image_resolution()
$image->scale($width$height);
$image->save();
?>

поэтому если нужно несколько размеров одного изображения, лучше пока использовать Resize imce (и тогда возможно будет полезна эта тема).

Если же нужно, чтобы когда пользователь кликал по изображению оно увеличивалось, то это уже надо смотреть соответствующий джаваскрипт (возможно есть среди плагинов к ckeditor-у, либо взять сторонний, и подсунуть ему адреса изображений в нужном виде).

Аватар пользователя alexboy alexboy 6 марта 2016 в 8:05

vaplas wrote:

поэтому если нужно несколько размеров одного изображения, лучше пока использовать Resize  imce (и тогда возможно будет полезна эта тема).

Не знаю может я чего-то не понял, но Imce у меня закачивает изображение только в одну папку users/user1 и если в настройках выставляю ограничение на размер 100x100, то при загрузке он изменяет изображения почему-то под 1024x1024, выходит такое сообщение:
"Размеры изображения были изменены для соответствия максимально допустимым размерам в 1024x1024 пикселей."
Причём если высота изображения была не 1024, то он подгоняет его путём наложения, т.е. удваивает оригинальное изображение. Пробовал устанавливать ограничение 300x300, но то же самое.

vaplas wrote:

Если же нужно, чтобы когда пользователь кликал по изображению оно увеличивалось, то это уже надо смотреть соответствующий джаваскрипт (возможно есть среди плагинов к ckeditor-у, либо взять сторонний, и подсунуть ему адреса изображений в нужном виде).

Да именно это и нужно. Для восьмёрки плагинов к ckeditor-у я не нашёл. Вроде бы я представляю как это можно реализовать с помощью стороннего скрипта, например highslide.com
Для этого мне нужно два варианта одного изображения: оригинальное и уменьшенное изображение. Уменьшенное я получаю с помощью CKEditor, но проблема, в том, что он никуда не закачивает оригинальное изображение. Плюс ко всему надо подставить класс highslide, чтобы в итоге получилась такая конструкция:

<a href="large-image.jpg" class="highslide" onclick="return hs.expand(this)">
    <img src="thumbnail.jpg" alt="Highslide JS"
       title="Click to enlarge" height="100" width="100" />
</a>

Вручную при размещении материала я могу конечно вставить эту конструкцию, но хотелось бы реализовать это автоматически. Чтобы пути к обоим изображениям (оригинальному и уменьшенному) и класс highslide подставлялись автоматически (чтобы после нажатия кнопки ckeditor и загрузки изображения такая конструкция вставлялась автоматически). Причём чтобы это работало не только при размещении материалов, но и в комментариях, чтобы таким способом ограничить других пользователей на закачку больших изображений, чтобы по всему сайту все изображения были одного размера, ну а большие в вою очередь увеличивались по клику и красиво разворачивались.

Но как правильно реализовать это средствами друпала затрудняюсь (я только второй месяц как перешёл на него).

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 6 марта 2016 в 16:24
1

alexboy wrote:

Imce у меня закачивает изображение только в одну папку users/user1 и если в настройках выставляю ограничение на размер 100x100, то при загрузке он изменяет изображения почему-то под 1024x1024, выходит такое сообщение:

Странно, у меня закачивает в любые папки и с размерами корректно работает (drupal 8.05 и imce 8.x-1.0-rc2).

alexboy wrote:

Для восьмёрки плагинов к ckeditor-у я не нашёл.

Все посмотрел? CKedtior - это отдельный мир, прикрутка его плагинов к друпалу гуглится. Накрайняк, хотя бы виджет, где задаются два изображения, из которых он сам формирует нужный html.

Еще можно использовать старинный трюк создания отдельного поля изображения с неограниченным количеством значений, повесить на него формат ColorBox, в текст вставлять заглушки, а потом менять их в каком-нибудь препроцессор, сниппет, твиг фильтр или функцию, или даже через джаваскрипт с повторным инициализацией colorbox.

Или подождать, пока пройдет пара серьезных инициатив по media в drupal, после которых все станет сильно проще и приятней. Но до этого еще пара месяцев.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 9 марта 2016 в 3:07
1

Прикольный модуль Bricks (видео). Т.е. можно создать в нем свой Image с Colorbox (или image style со ссылкой на оригинал + скрипт), а потом выводить в несколько колонок, либо через css.

Аватар пользователя alexboy alexboy 12 марта 2016 в 14:49
1

vaplas wrote:

Все посмотрел? CKedtior - это отдельный мир, прикрутка его плагинов к друпалу гуглится. Накрайняк, хотя бы виджет, где за даются два изображения, из которых он сам формирует нужный html.

Я посмотрел там и нашёл пару подходящих плагинов для CKedtior, например вот этот: Lightbox, но вот только инструкции по установке на восьмой друпал нет: документация
Пробовал по этому способу, но ничего не получилось: способ
Сам скрипт lightbox.js скопировал в папку: \core\modules\ckeditor\js\plugins
В папке \core\modules\ckeditor\Plugin\CKEditorPlugin создал файл lightbox.php с содержимым

<?php

/**
 * @file
 * Contains \Drupal\ckeditor\Plugin\CKEditorPlugin\lightbox.
 */

namespace Drupal\ckeditor\Plugin\CKEditorPlugin;

use 

Drupal\ckeditor\CKEditorPluginBase;
use 
Drupal\editor\Entity\Editor;

/**
 * Defines the "lightbox" plugin.
 *
 * @CKEditorPlugin(
 *   id = "lightbox",
 *   label = @Translation("Drupal link"),
 *   module = "ckeditor"
 * )
 */
class lightbox extends CKEditorPluginBase {

  

/**
   * {@inheritdoc}
   */
  
public function getFile() {
    return 
drupal_get_path('module''ckeditor') . '/js/plugins/lightbox/plugin.js';
  }

  
   function 

getButtons() {
    return array(
      
'Code' => array(
      
'label' => t('Image'),
        
'image' => drupal_get_path('module''ckeditor') . '/js/plugins/lightbox/icon.png',
      )
    );
  }
  
  
/**
   * {@inheritdoc}
   */
  
public function getLibraries(Editor $editor) {
    return array(
     
    );
  }

  

/**
   * {@inheritdoc}
   */
  
public function getConfig(Editor $editor) {
    return array(
     
    );
  }
 
}
 
?>

Пробовал и как модуль отдельный устанавливать. Долго мучался, но ничего не получилось. Иконка появляется, её перетаскиваю, но CKeditor ломается и вообще пропадают все остальные иконки.

vaplas wrote:

Прикольный модуль Bricks (видео). Т.е. можно создать в нем свой Image с Colorbox (или image style со ссылкой на оригинал + скрипт), а потом выводить в несколько колонок, либо через css.

Да, интересный модуль. При размещении материалов он позволяет реализовать уменьшение изображений как я хочу, но вот для комментариев всё же нужна кнопка для Ckeditor. И ещё я никак не могу разобраться с его темизацией. После установки модуля Bricks_bootstrap в папке \modules\bricks_bootstrap\templates появился файл brick--columns.html.twig, я его перемещал в папку со своей темой, но ничего не изменилось. Я его удалял вообще и тоже ничего не изменилось. Какой тогда файл шаблона отвечает за темизацию кирпичей непонятно. И как темизировать поля в этих кирпичах? К примеру я там создал поле field_image и поле с таким же названием у меня уже есть к типу материала ноды. Если раньше для темизации стандартных полей я использовал файл field--field_image.html.twig, то какой использовать для Bricks?
Пробовал brick--field--field_image.html.twig и brick--columns--field--field_image.html.twig, но эти варианты не действуют.

В общем с темизацией bricks и установкой плагина для ckeditor пытаюсь разобраться, но пока не получается...

Аватар пользователя alexboy alexboy 22 мая 2016 в 23:44
1

C темизацией модуля brick разобрался.
Для темизации отдельного набора кирпича (brick bundle), например с машинным именем columns нужно переименовать файл eck-entity.html.twig в папке \modules\eck\templates в файл eck-entity--brick--columns.html.twig и скопировать в папку со своей темой.
Например, для темизации дополнительного поля field_image в наборе кирпичей columns нужно создать файл field--brick--field_image--columns.html.twig.

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 23 мая 2016 в 0:03

Походу гореть мне в аду, за то, что на Bricks подбил. Его создатель явно решил забить на дальнейшее развитие (по крайней мере открытое). Но, @alexboy, респект - сказал, что будешь разбираться и разобрался! Хоть я и надеялся, что на другие варианты переключишься :).

Наверняка все уже видели, но для целостности оставлю здесь ссылку на этот основательный обзор.