[РЕШЕНО] Вывод alt под фотами в поле body

Аватар пользователя marat M

Тексты кладем с помощью CKEditor. В текст (поле body) включаем фоты с помощью IMCE, присваиваем при этом каждой alt и класс. Как вывести под каждой фотой относящийся к ней alt?
Тестово попробовал переопределить вывод всех картинок в template.php:

<?phpfunction my_theme_image($variables) {
  $attributes = $variables['attributes'];
  $attributes['src'] = file_create_url($variables['path']);
  foreach (array('width', 'height', 'alt', 'title') as $key) {
    if (isset($variables[$key])) {
      $attributes[$key] = $variables[$key];
    }
  }
  return '<img' . drupal_attributes($attributes) . ' /><div class = "field-alt">подпись</div>';
}?>

В итоге под каждой картинкой на странице появилась подпись, кроме той, что нужно - в теле материала, поле body.
Что не так?

Тип материала:
Версия Drupal:
0 Спасибо

Комментарии

Аватар пользователя bumble
bumble 2 месяца назад
marat M написал:
Что не так?

Картинки в форматированном тексте не используют рендеринг из шаблона. Они сохранены и выводятся из базы данных, и обрабатываются фильтрами.

Соответственно, правильно - написать свой текстовый фильтр, в котором парсить и выводить HTML изображений нужным образом.

0 Спасибо
Аватар пользователя Сетегном
Сетегном 2 месяца назад

Попробовал поискать, по идее jCaption готовое решение под запрос.

0 Спасибо
Аватар пользователя marat M
marat M 2 месяца назад

спасибо, пойду юзать...

0 Спасибо
Аватар пользователя marat M
marat M 2 месяца назад 1

Нарыл следующее: подключаем плагин Templates, в нем уже есть три предустановленных шаблона, потом можно добавить еще своих. Один из дефолтных - как раз вставка картинки с заголовком и описанием! Почти профит, дальше поработаю стилями и т.п. Ориентировался на сюда - http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Templates Если кому интересно, тему не закрою, отпишу потом подробно, когда сделаю как надо.

Аватар пользователя Сетегном
Сетегном 2 месяца назад

Шаблоны штука такая, нужно всегда не забыть в модуль заглянуть, если ли там готовые. В Insert, например, саму вставку легко уже входящим в него шаблоном настроить. Мне интересно, что в итоге получиться... Это не путём предложенным bumble будет, не фильтр?

0 Спасибо
Аватар пользователя marat M
marat M 2 месяца назад

не, не фильтр. чую я в шаблонах силу.

0 Спасибо
Аватар пользователя marat M
marat M 2 месяца назад

Да, jCaption неплохо, спасибо, но он работает с title или alt. Мне же нужно сохранить title, сделать из alt подпись к снимку и добавить еще строку - автор фото. Помимо стилизации всего этого.

0 Спасибо
Аватар пользователя marat M
marat M 2 месяца назад 1

Итак. Добавляем в редактор плагин "Шаблоны".
Качаем плагин отсюда: https://ckeditor.com/addon/templates. Будет написано, куда его класть и что куда вписать.
Плюс качаем две зависимости: https://ckeditor.com/addon/dialog и https://ckeditor.com/addon/dialogui.
В файле ckeditor.config.js включаем использование плагинов (шаблонов и зависимостей) в функции CKEDITOR.editorConfig = function(config):
config.extraPlugins = 'dialogui';
config.extraPlugins = 'dialog';
config.extraPlugins = 'templates';
Создаем папку (если таковой еще нет) ИМЯ_ТЕМЫ/js (к примеру) для кастомных скриптов.
Копируем дефолтный скрипт с тремя предопределенными шаблонами (ckeditor/plugins/templates/templates/default.js), кладем в свою папку ИМЯ_ТЕМЫ/js. Переименовываем файл, например, в custom.templates.js. С этим файлом будем работать, добавляя в него свои шаблоны.
Указываем местонахождение кастомного скрипта в файле ckeditor.config.js:
config.templates_files = [ Drupal.settings.basePath + 'sites/all/themes/ИМЯ_ТЕМЫ/js/custom.templates.js' ];
Кстати, этот config.templates_files - массив, т.е. можно добавить еще файлов с шаблонами.
Про чистку кэша не забываем.
В админке, в настройках CKEditor (Редактировать профиль CKEditor->ВНЕШНИЙ ВИД РЕДАКТОРА) ставим галочку здесь: "Plugin file: templates". Там же перетаскиваем кнопку выбора шаблонов ("Templates") в тулбар.
Теперь в этом профиле редактора появится кнопка выбора шаблонов.
Немного изменив дефолтный шаблон "Image and Title", получим искомое - фото с двумя подписями, одна пойдет на описание, другая - на автора фото.
Средствами CSS позиционируем. Ура.