Drupal: как обернуть встроенные изображения в дополнительную разметку - PullRequest
5 голосов
/ 17 сентября 2010

Мне нужно обернуть изображения в дополнительную разметку для дальнейшей стилизации CSS. Я хотел бы иметь что-то вроде этого: <p><span><img src="path/to/image" alt="alt"/></span></p>.

Изображения добавляются непосредственно на конкретный узел с использованием следующих модулей:

  1. http://drupal.org/project/insert
  2. http://drupal.org/project/image
  3. http://drupal.org/project/cck -> ImageField

Вот содержимое моего узла- [type] .tpl.php:

<div id="article">
    <div id="article-header">
        <h2><?php print $title; ?></h2>
        <?php if ($submitted): ?>
            <p class="created"><?php echo date("d. F Y - H:i", $created).t(' von ').$name; ?></p>
        <?php endif; ?>
    </div>

    <div class="article-body">
        <?php print $content; ?>
    </div>

    <?php if ($links): ?>
        <div class="extra-links">
            <?php print $links; ?>
        </div>
    <?php endif; ?>
</div>

<?php if($node->comment == 0 && isset($node->comment_count) && $node->comment_count < 1): ?>
    <div id="comments">
        <p class="note">Kommentare geschlossen</p>
    </div>
<?php endif; ?>

Думаю, мне нужно что-то сделать с $content. Но я действительно понятия не имею. Есть предложения?

1 Ответ

3 голосов
/ 17 сентября 2010

Если вы используете модуль вставки, то есть возможность добавить «Дополнительные классы CSS» к изображению в настройках для вставки в поле изображения.

Это добавит класс к <img> (но это не обернет диапазон вокруг <img>, как вы хотите). Используя этот класс, вы можете создавать собственные CSS, которые вам нужны.

У этого подхода есть некоторые оговорки

  1. Вам нужно будет использовать модуль фильтра WYSIWYG (http://drupal.org/project/wysiwyg_filter), чтобы предотвратить удаление классов из тега img (или вам нужно будет использовать полный формат html, который, очевидно, не очень хорошая идея, если не администраторы вводят контент на сайт)
  2. Вам необходимо разрешить атрибут класса для тега в настройках WYSIWYG. Однако в дополнительных параметрах убедитесь, что вы разрешаете разрешенные классы.
  3. Вы должны отключить HTML-фильтр, поскольку вы сейчас используете фильтр WYSIWYG

поэтому ваше правило для тега будет выглядеть примерно так IMG [SRC |! Название | альт | класс]. Убедитесь, что класс, который вы хотите, например. custom-css-class внесен в белый список в разделе расширенных правил для WYSIWYG

Редактировать: Хорошо, теперь я понимаю ваше требование лучше.

  1. Для полей изображений, которые НЕ являются встроенными (т.е. в области контента) вы можете переопределить content-field.tpl.php переименовав его в Содержание-поле- [FIELD_NAME] .tpl.php Вы можете обернуть поле изображения с любые теги, которые вы хотите в этом файле. Посмотри пожалуйста http://www.advantagelabs.com/drupal-colonoscopy-or-how-theme-cck-field-drupal-6

  2. Для изображений, которые встроены, но вы все еще хотите добавить обтекание HTML вы можете использовать http://drupal.org/project/customfilter Это потрясающий модуль (сложно использовать, но это работает !!). Вы можете искать для тега и добавить произвольный вещи вокруг этого. Увидеть http://drupal.org/node/210551 для Документация

...