Удобная вставка изображения в материал

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

Аватар пользователя miasik miasik 7 августа 2009 в 8:55

Попробовал несколько способов вставки изображения в материал.
1. Через сервисы, вроде имиджшака или радикала - просто вставка хтмл кода.
Достоинства - почти не требует настройки, привычно для пользователя. Картинка вставляется в любое место материала.
Недостатки - во время просмотра оригинала изображения пользователь уходит с сайта.
2. Через bueditor+imce
Достоинства - настраивается достаточно просто. Доступно для пользователя. Картинка вставляется в любое место материала.
Недостатки - отсутствует механизм автоматического создания,вставки превьюшек и подключения lightbox.
3. CCK+imagefield
Достоинства - настраивается достаточо просто. Доступно для пользователя. Автоматическое создание превьюшек. Автоматическое подключение lightbox
Недостатки - изображения отображаются только после материала.

Хочется ограничиться использованием bueditor+imce+lightbox, но получить еще автоматическое создание превьюшек. Такое возможно?
Или возможность вставки изображения в произвольное место материала при использовании способа 3.

Комментарии

Аватар пользователя kyky kyky 7 августа 2009 в 9:09

IMCE умеет делать превьюхи, убедитесь:
http://ufku.com/drupal/imce/demo

Лучшая связка = BUEditor + IMCE, ну разве что вместо BUEditor можно поставить FCKEditor.
Для отображения картинок в лайбоксе нужно будет либо дописывать руками классы, либо написать плагинчик для соот. редактора (если таковых ещё нет, в чём я сомневаюсь).

Или возможность вставки изображения в произвольное место материала при использовании способа 3
В произвольно место -- нет. К тому же дополнительная нагрузка из-за лишний полей.

Аватар пользователя iryston iryston 7 августа 2009 в 10:26

"miasik" wrote:
bueditor+imce+lightbox

Советую попробовать связку
bueditor+imce+highslide
у меня http://cominf.org/photo работает на ура.
Механизм автоматического создания, вставки превьюшек и подключения highslide присутствует.
Механизм автоматического создания настраивается через IMCE, вставки превьюшек - дополнительные кнопки для bueditor, подключение highslide на уровне темизации.

Аватар пользователя pyshustik pyshustik 7 августа 2009 в 14:34

bueditor+imce+lightbox можно при помощи етой связки скалировать большие изображения, ну а в ноде при нажатии на картинку с ефектом увеличения увеличивать в реальный размер?

Аватар пользователя rumzes rumzes 7 августа 2009 в 18:11

miasik wrote:

3. CCK+imagefield
Достоинства - настраивается достаточо просто. Доступно для пользователя. Автоматическое создание превьюшек. Автоматическое подключение lightbox
Недостатки - изображения отображаются только после материала.

Неправда Smile

Отображаться будет как настроите. Порядок отображения полей настраивается в CCK.

Аватар пользователя miasik miasik 8 августа 2009 в 20:07

"rumzes" wrote:
Неправда Smile Отображаться будет как настроите. Порядок отображения полей настраивается в CCK.

порядок - да. но мне нужно сделать вставку изображения в произвольное место текста.

Аватар пользователя miasik miasik 8 августа 2009 в 20:21

"kyky" wrote:
IMCE умеет делать превьюхи, убедитесь: http://ufku.com/drupal/imce/demo[/quote]я не писал что не умеет, я ищу - как сделать это просто Smile
в идеале:

  1. загрузить картинку
  2. создать для нее превьюшку
  3. вывести эту превьюшку необходимое место материала

а уже при клике по превьюшке - лайтбокс с полным размером <- это пока ищу как сделать

"gerboss" wrote:
еще один метод описан здесь http://drupal.ru/node/26272 выбирайте на свой вкус
для меня это слишком круто Sad

Аватар пользователя miasik miasik 9 августа 2009 в 1:36

перекопал кучу информации, перепробовал кучу модулей. до чего дошел:
обычная кнопка "вставить картинку" bueditor возвращает примерно вот такой код
<img src="/drupal/system/files/small_P7110257.jpg" width="78" height="90" alt="small_P7110257.jpg" />
с таким кодом lightbox не работает.
необходимо дописать перед этим кодом вот такой:
<a href="/drupal/system/files/P7110257.jpg" rel="lightbox">
что думаю дальше:
предположим, все превьюхи начинаются small_,medium_,large_
тогда из первой строки кода получаем значение src, из него вырезаем (если есть) названия превьюх и собираем полную строку необходимого кода.
<a href="/drupal/system/files/P7110257.jpg" rel="lightbox"><img src="/drupal/system/files/small_P7110257.jpg" width="78" height="90" alt="small_P7110257.jpg" />
тогда, автор материала может указать оригинал изображения и получит в материале оригинал, а может создать превьюху и получить в материале превьюху с выводом оригинала в лайтбокс.

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

Аватар пользователя iryston iryston 9 августа 2009 в 23:15

"miasik" wrote:
буду признателен, если кто-то напишет дополнение к кнопке или подскажет на чем и в какое место кнопки это надо писать

Ищите ответ тут

Аватар пользователя miasik miasik 10 августа 2009 в 8:10

"eagle" wrote:
"miasik" написал(а): буду признателен, если кто-то напишет дополнение к кнопке или подскажет на чем и в какое место кнопки это надо писать
Ищите ответ тут

видел подобное решение. но там 2 кнопки: 1я - вставка, 2я - обработка линка. хочется это сделать одной кнопкой.

Аватар пользователя gerboss gerboss 10 августа 2009 в 13:20

"miasik" wrote:
до чего дошел:...

как раз этот метод и реализован в http://drupal.ru/node/26272 там есть весь механизм.

у меня счас сделано по "мотивам" этого решения:
- в FCKeditor открывается сразу же окошко на вкладке Закачать
- через "Обзор" выбирается картинка
- по "Послать на сервер" закачивается на сайт
- если сразу после этого нажимается ОК, то картинка "сжимается" в определенные рамки и к ней приписывается открытие в полный размер через lightbox

Аватар пользователя v1adimir v1adimir 10 августа 2009 в 13:56

Это грустно, но для друпала до сих пор нет удобного для «обычных» пользователей и технически правильного загрузчика картинок. (

Imce не дружит с imagecache, image assist вставляет картинку с доменом в URL и т.д. и т.п...

Совершенно необъяснимно почему, ведь добавление картинок, с автоматическими thumb и lightbox'ом – это первое что просят пользователи.

Аватар пользователя miasik miasik 10 августа 2009 в 22:49

"v1adimir" wrote:
Совершенно необъяснимно почему, ведь добавление картинок, с автоматическими thumb и lightbox'ом – это первое что просят пользователи.
сурово Sad
"gerboss" wrote:
как раз этот метод и реализован в http://drupal.ru/node/26272 там есть весь механизм.
у меня счас сделано по "мотивам" этого решения:
- в FCKeditor открывается сразу же окошко на вкладке Закачать

что-же, прийдется разбираться с js и дописывать кнопку в bueditor самому Sad

Аватар пользователя miasik miasik 11 августа 2009 в 7:46

"mdinc" wrote:
потому что в друпал нет единного решения для одной задачи
а у юзера вот и разбегаются глаза и хватаются они за все подрят
потом гороздят высшку и падают с нее кода не могут разобраться
нельзя все изучать с наскока это вам не HTML

мне нужно вставлять изображения в текст. единственное решение предложил [user=gerboss]"http://drupal.ru/node/26272". но мне нужен buditor, значит прийдется делать самому. сделаю - выложу для всех.

Аватар пользователя miasik miasik 11 августа 2009 в 23:01

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

var Str = editor.active.getSelection();
src = Str.indexOf('src=')+5;
src2= Str.indexOf('\"',src);
link = Str.substring(src,src2);
size = new Array ("small_","medium_","large_");
for(i=0;i<size.length;i++)
   {
     index = link.indexOf(size[i]);
     if(index!=-1)
     link = link.replace(size[i],'');
   }
newStr = '<a href=\"'+ link +'\" rel=\"lightbox\">'+Str;
editor.active.replaceSelection(newStr);

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

Аватар пользователя iryston iryston 12 августа 2009 в 0:26

"miasik" wrote:
способ с двумя кнопками считаю не применимым

А как иначе дать возможность вставлять либо превью, либо полное изображение?

Аватар пользователя miasik miasik 12 августа 2009 в 7:51

"eagle" wrote:
А как иначе дать возможность вставлять либо превью, либо полное изображение?

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

Аватар пользователя miasik miasik 14 августа 2009 в 23:59

вот, отредактированный кусок drupal\sites\all\modules\bueditor\library\default_buttons_functions.js

//create and insert the html for the tag with user-supplied form values.
function eDefTagInsert(tag, form) {
try{
        //this is a submit event.
  var name, el, obj = eDefParseTag(BUE.active.getSelection(), tag)||{'attributes': {}};
  for (var i = 0; el = form.elements[i]; i++) {
    if (el.name.substr(0, 5) == 'attr_') {
      name = el.name.substr(5);
      if (name == 'html') obj.innerHTML = el.value;
      else obj.attributes[name] = el.value == '' ? (tag == 'img' && (name == 'src' || name == 'alt') ? '' : null) : el.value;
    }
  }
  BUE.dialog.close();
  if (typeof(obj.innerHTML) == 'string' || eDefNoEnd(tag)) {
    BUE.active.replaceSelection(eDefHTML(tag, obj.innerHTML, obj.attributes));
  }
  else {
    var html = eDefHTML(tag, '', obj.attributes);
    BUE.active.tagSelection(html.substr(0, html.length-tag.length-3), '</'+ tag +'>');
  }
  if(tag == 'img')
        {
                var Str = editor.active.getSelection();
                src = Str.indexOf('src=')+5;
                src2= Str.indexOf('\"',src);
                link = Str.substring(src,src2);
                size = new Array ("small_","medium_","large_");
                for(i=0;i<size.length;i++)
                   {
                         index = link.indexOf(size[i]);
                         if(index!=-1)
                         {
                                link = link.replace(size[i],'');
                                newStr = '<a href=\"'+ link +'\" rel=\"lightbox\">'+Str;
                                editor.active.replaceSelection(newStr);
                         }
                   }
        }
        }catch(e){};
}

я понимаю что код корявый и идея ужасная, но ничего лучше не могу.

Аватар пользователя pyshustik pyshustik 15 августа 2009 в 13:44

дайте ссылочку на сайт где это реализовано?
У меня странные вещи происходят, вставил кнопочку, слетела панель Bueditor, потом опера начала грузить сайт долго, но со временем все нормализовалось.

Аватар пользователя gerboss gerboss 20 августа 2009 в 17:35

кстати, попробовал модуль imagepicker - неплохая штука. и файлы по папкам юзверей записывает и главное что превьюшки автоматически создает, и остальные настройки дает править. поубирал из него лишнее, пробую заместо fck`ашного загрузчика картинок.

Аватар пользователя v1adimir v1adimir 25 августа 2009 в 15:26

miasik wrote:
я сейчас проверяю tinymce+image assist. пока все получается.
imagepicker как к редактору прикручивал?

Только имей в виду, что в визуальном режиме image assist записывает адрес изображения в полном виде, т.е. http://www.exmple.com/.... Если сайт потом планируется переносить на другой домен, то ожидают серьезные проблемы.

Аватар пользователя gerboss gerboss 25 августа 2009 в 10:58

к редактору imagepicker не прикручивается (насколько я понял). это отдельный модуль, он добавляет снизу поля ввода комментария свою секция - вставка изображения. через нее можно просмотреть уже загруженные на сервак фотки, выбрать из них или же закачать новую. можно указать размер превьюшки добавить описание и название фотки. но я последние позиции отключил,да и размер превьюшки сделал неизменным, что б люди не морочились. при вставке изображения можно указывать выравнивание, что именно вставлять в текст (полноразмерная фотка, превью или просто ссылка) и как открывать (если есть Lightbox, то можно указать открытие через него). здесь тоже можно выставить значения по умолчанию.
модуль мне понравился. каждому пользователю по своему каталогу (можно ограничения ставить) и фотки вроде как с сервака удаляются нормально, если нужно

Аватар пользователя miasik miasik 25 августа 2009 в 22:25

"v1adimir" wrote:
Только имей в виду, что в визуальном режиме image assist записывает адрес изображения в полном виде, т.е. http://www.exmple.com/.... Если сайт потом планируется переносить на другой домен, то ожидают серьезные проблемы.

так можно вставлять его тег
[img_assist|nid=11|title=Решетка|desc=|link=node|align=left|width=87|height=100]
причем он по умолчанию тег предлагает

а вот image picker - вставляет полный адрес Sad

Аватар пользователя miasik miasik 26 августа 2009 в 23:44

погонял image picker - понравился, пока все нормально. вставка полного адреса - отключается в настройках, после отключения он вставляет относительный путь от корня сайта. к сожалению нет возможности спрятать от пользователя выбор размера превьюшки и полной картинки.
т.к. отказался от image assist, то вернулся к bueditor.

Аватар пользователя gerboss gerboss 27 августа 2009 в 12:14

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

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

Аватар пользователя DenisVS DenisVS 10 октября 2011 в 21:20

Примерно та же проблема.
Нужно по ходу текста приводить иллюстрации. Пока нашёл 2 решения, несколько корявых:
1. Wysiwyg+tinymce+elFinder (FileField Sources)
Закачивать с помощью этого комбайна файлы, вставлять картинки.
2. Imagefield + любой Wysiwyg редактор. Закачивать с помощью Imagefield, сделать поле неотображаемым. Копировать ссылку на файл, вставлять картинки.

Недостаток первого способа — нужно вручную определять директории загрузки, копировать путь из свойств файла.
Недостаток второго — всё валится в кучу.
Недостаток обоих методов — как-то коряво всё.

Есть решение изящнее?

Аватар пользователя DenisVS DenisVS 10 октября 2011 в 22:12

Ну или хотя бы, как организовать систематизацию загружаемых изображений? Чтобы было разложено по папочкам.