Добавление класса в поле Drupal через jQuery выводит неправильный цикл

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

Для этого мне нужно, чтобы каждый класс поля отражал содержимое поля. Вот код, который я использую:

Drupal.behaviors.burgerRating = {
attach: function (context, settings) {
    var burgerRating = $('.field-name-field-rating2').text();
    $('.field-name-field-rating2').addClass(burgerRating);
    }
}

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

Что я получаю, это:

<div class="field-name-field-rating2 rating-1 rating-5 rating-8">
<div class="field-name-field-rating2 rating-1 rating-5 rating-8">
<div class="field-name-field-rating2 rating-1 rating-5 rating-8">

Вместо:

<div class="field-name-field-rating2 rating-1">
<div class="field-name-field-rating2 rating-5">
<div class="field-name-field-rating2 rating-8">

Я думаю, мне нужно, чтобы это работало с.this() или.each(), но я не могу заставить его работать.

Любая помощь? Благодарю.

1 ответ

Решение

Зачем делать это в Javascript? Вы можете:

Форматтер - это способ отображения поля. Это зависит от типа поля (текст, номер, taxonomy_reference,...). Если ваше рейтинговое поле является текстовым, вам нужно создать свой форматер для текстового поля. После его создания все текстовые поля могут использовать этот форматер.

Вы должны связать этот форматер с вашим полем на вкладке отображения вашего типа контента.

Это удивительная система, вы также можете добавить форму настроек для вашего форматера (hook_field_formatter_settings_form)

Другие вопросы по тегам