Переписать вывод поля CCK без использования шаблонов

7

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

Есть ли модуль, который позволил бы подобную функциональность для вкладки «Поля отображения» типа контента? Мне нужно немного изменить вывод поля для тизера и тела, но я не хочу создавать полный шаблон.

В настоящее время я использую Contemplate для этого, но это сложнее, чем мне нужно, и ненужно сложно, если вы не знакомы с Drupal PHP API. Также раздражает, что мне нужно изменять шаблон каждый раз, когда я добавляю дополнительное поле к типу контента, мне действительно нужно переписать только несколько полей, а не все тело или тизер.

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

Злой ученый
источник

Ответы:

5

Похоже, вы ищете модуль пользовательских форматеров , очень похожий на Contemplate, но специально для создания полевых форматеров, которые будут использоваться на странице настроек отображения или в представлениях.

Пользовательские средства форматирования могут быть созданы как с токенами, так и с чистым кодом PHP.

Кроме того, пользовательские средства форматирования могут быть экспортированы как собственные Drupal Hooks или в формате экспортируемых пользовательских функций.

Расшифруйте
источник
4

Если вы просто хотите настроить разметку, стоит попробовать Semantic CCK .

Semantic CCK был создан, чтобы дать пользователям возможность настраивать вывод HTML полей CCK. Отчасти он был вдохновлен крайне рекомендуемым модулем Semantic Views, который предоставляет те же функциональные возможности для Views.

Drupal 7

В настоящее время разрабатывается версия Semantic CCK для Drupal 7: Semantic Fields .

tim.plunkett
источник
2

Использование модуля Contemplate не рекомендуется, поскольку он помещает PHP-код в базу данных, что обычно считается уязвимостью безопасности и неэффективной.

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

Просмотрите реализацию hook_field_formatter_info () других модулей, чтобы увидеть, как она работает. В Drupal 6 он напрямую связан с hook_theme (), в то время как Drupal 7 использует hook_field_formatter_view () .

c4rl
источник
0

Я боролся с этой же проблемой уже некоторое время.

Я не могу / не хочу использовать ...

  1. Созерцайте по посредственным причинам архитектуры.
  2. Display Suite, который потрясающий, но излишний и не допускает простых изменений полей.
  3. Пользовательские форматеры, так как он снова заканчивается PHP в базе данных для нескольких полей значений.
  4. Шаблон поля, потому что я просто добавляю строку текста с элементом.
  5. Семантический CCK, потому что это только изменяет элементы и классы.
  6. hook_preprocess или другие решения, основанные на коде, потому что они мне нужны.

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

Похоже, вам нужны пользовательские форматтеры.

doublejosh
источник
н / м эта функциональность была добавлена ​​в Semantic CCK 1.4
doublejosh
Вы нашли простое в обращении решение с хорошей производительностью? в drupal6 хорошим решением было часто использовать ['view'] объекта узла и комбинировать его с некоторым форматированием шаблона узла. очень чистый вывод и удобный из-за использования ['view'] в 90% всех случаев использования. в Drupal 7 у нас снова есть божества, потому что render () производит много накладных расходов ...
Похоже, Display Suite, а затем drupal.org/project/ds
doublejosh
Пользовательские средства форматирования хранят информацию в базе данных, но модуль - это просто утилита, поэтому, как только вы создали средство форматирования в базе данных, вы экспортируете его, и у вас больше не будет проблемы с кодом в базе данных :)
Decipher
0

Модуль Token Field позволяет вам комбинировать поля, используя их токены.

Keva
источник
0

Я бы использовал модуль Token Filter , чтобы указать значения токенов в полях CCK с входными фильтрами. Вот выдержка об этом со страницы проекта модуля:

... очень простой модуль, позволяющий сделать значения токенов доступными в качестве входного фильтра.

bkildow
источник