Добавить класс в поле изображения в Drupal 7 - PullRequest
2 голосов
/ 11 марта 2011

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

Ответы [ 3 ]

19 голосов
/ 08 ноября 2011

Приведенный выше ответ поможет, если вам нужна только ориентация на CSS. Но мне нужно было добавить класс в тег IMG, точка. Вот как я решил проблему. Это, вероятно, не лучший способ, и, конечно, не единственный, но это действительный «путь Drupal» и работает. Откройте файл template.php для вашего шаблона.

Вставьте следующую функцию, которую вам нужно будет изменить и настроить для вашего сценария использования. Например, вы должны заменить <TEMPLATENAME> на имя вашего шаблона и добавить или вычесть классы по желанию, и другие вещи, как вы увидите.

function <TEMPLATENAME>_preprocess_image(&$variables) {
    // If this image is of the type 'Staff Photo' then assign additional classes to it:
    if ($variables['style_name'] == 'staff_photo') {
        $variables['attributes']['class'][] = 'lightbox';
        $variables['attributes']['class'][] = 'wideborder';
    }
}

Я создал оператор "if", чтобы определить, когда класс должен быть добавлен к изображению, но вам придется настроить его так, как вам нравится - вы можете полностью его исключить, если вы хотите, чтобы класс был на ВСЕХ изображениях поля изображения или вы могли бы сказать «если drupal_is_front_page () "если вы хотите, чтобы он применялся только на первой странице и т. д.

В МОЕМ случае я создал стиль изображения (Конфигурация> Мультимедиа> Стили изображения) для Фото сотрудников и добавил условие if, чтобы применять мои предпочтительные классы только к изображениям этого указанного стиля изображения. Я думаю, что это отличный способ сделать это, но вы можете делать то, что вам нравится.

Теперь, когда я просматриваю узел, который содержит поле изображения со стилем изображения "Staff Photo", классы волшебным образом появляются в теге IMG, и это как раз то, что мне нужно.

1 голос
/ 25 декабря 2012

Если использовать эту функцию, то Drupal добавляет класс, но выдает ошибку «Замечание: неопределенный индекс: имя_стиля в template_preprocess_image ..» на первой странице.

Я вставил "_style" и буду в порядке.

function <TEMPLATENAME>_preprocess_image_style(&$variables)  {
    // If this image is of the type 'Staff Photo' then assign additional classes to it:
    if ($variables['style_name'] == 'staff_photo') {
        $variables['attributes']['class'][] = 'lightbox';
        $variables['attributes']['class'][] = 'wideborder';
    }
}
1 голос
/ 12 марта 2011

Если вы используете CCK, почти наверняка есть класс, уже связанный с изображением (или, по крайней мере, класс в div, который его оборачивает).CCK оборачивает почти все в классе.Попробуйте щелкнуть правой кнопкой мыши на изображении и щелкнуть Inspect Element для двойной проверки.

Если вам действительно нужно добавить класс, вы можете использовать модуль Theme Developer , чтобы узнать, какая функция темы илифайл шаблона для переопределения.Посмотрите экран Theme Developer для более подробной информации .

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