Как добавить дополнительные классы в поле даты в представлениях?

7

Я использую Drupal 7 . Я создал вид, который использует поле даты. Я хотел бы создать дополнительные классы для поля даты для этого конкретного представления.

Например,

<div class="field-content">
 <span class="date">10</span>
 <span class="month">June</span>
 <span class="year">2011</span>
 <span class="time"> 8:00 </span>
</div>

Теперь у меня есть код:

<div class="field-content">
 <span class="date-display-single">10 June 2011, 8:00</span>
</div>

Как я могу сделать это шаг за шагом?


источник

Ответы:

3
  1. Вам необходимо установить модуль токенов (последняя бета-версия включает в себя полевые токены) и модуль пользовательских форматеров с http://drupal.org/project/custom_formatters .

  2. Затем включите его на странице модулей.

  3. Зайдите в админ-> структура-> форматеры.

  4. Добавьте новый форматер, введите имя, которое вам нравится.

  5. Формат: HTML + токены

  6. Тип поля: Дата

  7. Formatter:

    <span class="day">[node:source:field-datefieldname:custom:j]</span>
    <span class="month">[node:source:field-datefieldname:custom:F]</span>
    <span class="year">[node:source:field-datefieldname:custom:Y]</span>
  8. Сохранить

Теперь вы создали собственный форматер даты, который вы можете использовать по своему усмотрению!

Джон
источник
4

Вы можете сделать это без каких-либо дополнительных модулей.

  1. Добавьте поле даты. Исключите это с дисплея. Выберите custom и напишите d в поле (как в php date for the day). Измените «Настройки стиля» - Настройте поле HMTL (установлено на none) и Настройте поле и упаковщик меток HTML (установите на none).Поле даты Drupal
  2. Добавьте поле даты еще раз. Исключите это также с дисплея. Выберите custom и напишите M в поле (как в php date для месяца). Измените «Настройки стиля» - Настройте поле HMTL (установлено на none) и Настройте поле и упаковщик меток HTML (установите на none).
  3. Добавьте поле даты еще раз. Исключите это также с дисплея. Выберите custom и напишите Y в поле (как в дате php для года). Измените «Настройки стиля» - Настройте поле HMTL (установлено на none) и Настройте поле и упаковщик меток HTML (установите на none).
  4. Снова добавьте поле даты (ПОСЛЕДНЕЕ ВРЕМЯ!). НЕ ИСКЛЮЧАЙТЕ ЭТОГО ИЗ ОТОБРАЖЕНИЯ. Выберите custom и напишите G: i (как в php date для часов и минут). Измените «Настройки стиля» - Настройте поле HMTL (установлено на none) и Настройте поле и упаковщик меток HTML (установите на none).
  5. Перепишите результаты этого последнего поля даты. Используя шаблоны замены, вы можете написать что-то вроде этого:

    <div class="date">
      <span class="day">
        [created]
      </span>
      <span class="month">
        [created_1]
      </span>
      <span class="year">
        [created_2]
      </span>
    </div>

Результаты переписывания Drupal

Дэвид Пол
источник
1
Это похоже на отличный метод для созданной даты, но, похоже, вы не можете выбрать «Пользовательский формат», если используете поле модуля «Дата», добавляемое к типу контента?
Марк
1
@ Марк, если вы столкнулись с этой проблемой, вы можете добавить свои форматы даты, используя / admin / config / региональный / date-time, затем на шагах 1-3 вы выбираете подходящий формат из выпадающего списка вместо пользовательского.
Webdrips
3

Достаточно быстрое (если вы можете написать php), но немного хакерское решение - переопределить шаблон для этого поля (см. Основы тематики Views ), обработать необработанное значение даты с помощью php, чтобы вынуть отдельные части, а затем склеить их вместе с HTML на ваш выбор.

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

marcvangend
источник
1

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

Если бы вы спросили, как добавить классы к полю в целом, ответ будет примерно таким:

  1. Нажмите на поле в интерфейсе Views.

  2. Разверните набор полей «Настройки стиля».

  3. Установите флажок «Настроить поле HTML», затем флажок «Создать класс CSS».

  4. Введите желаемый класс.

Возможно, этого решения будет достаточно. В противном случае, я желаю вам удачи.

tim.plunkett
источник
2
Спасибо за ответ, но ваше решение помогает только изменить класс для всего поля, оно не позволяет мне создавать отдельные кусочки даты.
1
Затем, написание пользовательского форматера, вероятно, является единственным реальным вариантом, к тому времени, когда дата попадает на слой темы полностью обработанным, см. Функцию Helper для получения необработанных и визуализированных данных поля .
tim.plunkett
1

Это действительно легко, (как только вы знаете, как)

Используйте настраиваемое поле набора отображения

Зайдите в админ / структура / дс / поля

(В меню: Структура -> Показать набор -> Поля)

Нажмите добавить поле кода

Для моего случая использования я ввел следующее

метка

Что-нибудь

юридические лица

Узел

Поле предела

Не заполнено

Код поля

<div>
  <span class="mf-month">[node:created:custom:M]</span> 
  <span class="mf-day">[node:created:custom:d]</span>
</div>

знак

проверено

После того как вы создали поле, перейдите на страницу управления отображением для типа контента и режима просмотра, который вы настраиваете, и выберите новое настраиваемое поле.

Скриншот настройки выше

Скриншот страницы настроек

Хим
источник