2010-04-06 3 views
0

Привет, новичок в использовании Drupal, и наткнулся на блок в моем прогрессе. Я использую CCK для добавления новых типов контента в свои формы. Мне было интересно, есть ли способ добавить к форме, которая сгенерирована, чтобы я мог содержать элементы, а также вставлять визуальный код html, например, правила главы и т. Д. Я пробовал hook_form_alter(), и мне это, похоже, не помогает в моих усилиях. Я проходил настройку файлов tpl.php и т. Д. И не добился прогресса. Пожалуйста, если в межсетевых сетях есть кто-нибудь, кто хорошо разбирается в этом вопросе, вам будет очень благодарен ваш совет.Добавить HTMl в CCK в Drupal

Вот лишь пример того, что я хотел бы сделать в виде: 1. Содержать поля элементов внутри DIV в 2. Добавьте HTML контент в виде

ответ

0

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

+0

Благодарим за отзыв, но вопрос? Где бы существовала функция темы? – Romelus96

0

hook_form_alter не поможет вам изменить форму редактирования, содержащую поля cck, поскольку поля cck добавляются после вызова hook_form_alter.

Вы должны теме своей формы, как это:

Создайте модуль и положить эту реализацию крюка в нем:

 
function mymodule_theme($existing, $type, $theme, $path) { 
    'your_form_id' => array(
     'arguments' => array('form' => NULL), 
     'template' => 'my_template', 
    ) 
} 

Затем создайте файл с именем my_template.tpl.php в директории модуля.
Теперь пустой кеш.

В этом файле вы можете сделать элементы формы отдельно, например:

 
<?php 
print drupal_render($form['a_form_element']); 
print '<h2>blah blah blah...</h2>'; 
print drupal_render($form['another_form_element']); 
// this one is for rendering all the remaining items, like hiddens: 
print drupal_render($form); 

Использование Devel модуль в процессе разработки. Он содержит много полезных инструментов, которые значительно облегчают процесс разработки.

+0

Благодарим вас за ответ. У меня все еще возникают проблемы с отображением элементов на странице. Я получаю это сообщение об ошибке на самой странице формы: Ошибка анализа: ошибка синтаксиса, неожиданный T_DOUBLE_ARROW в .../sites/all/modules/test/test.module в строке 3 Концептуально не уверен, как этот сниппет будет работать для определенных форм, в отличие от каждой страницы сайта. массив ( 'аргументы' => Array ('форма' => NULL), 'шаблон' => 'my_template', ) } Есть ли что-то, что я делаю неправильно? – Romelus96

+0

Пожалуйста, вставьте весь код в http://drupalbin.com/ и отправьте ссылку. Я посмотрю на это. – farzan

0

Raw HTML CCK поле (Drupal 6) - без фильтров, форматов или редактор

Simple Fix! Просто используйте текстовый формат для нефильтрованного HTML. Затем преобразуйте его обратно в html в поле .tpl, когда узел построен.

Формат обычного текстового формата в поле CCK преобразует HTML-теги в специальные символы сущности (это было бы сделано так, чтобы он читался как код на странице вместо фактических тегов html). Он хранит строку, закодированную с помощью php's htmlspecialchars ($ text, ENT_QUOTES, 'UTF-8') внутри функции check_plain() drupal.

Самый чистый простейший способ его декодирования, находится в поле tpl файла . Это позволяет избежать перехвата вызовов, проблем с ордерами на крючках, ошибок цикла и проблем с производительностью. Это делается путем добавления файлов tpl к базовым темам: hq_base, odyssey_base и odyssey_admin. Вот как drupal расшифровывает простой текст в форме редактирования cck: print html_entity_decode (strip_tags ($ text), ENT_QUOTES); Примечание. Html_entity_decode превращает php-теги в комментарии html, когда он декодирует обратно в html. Ниже приведены примеры файлов с правильным соглашением об именах, чтобы дать управление php по полям:

content-field.tpl.PHP

контента поле- [your_field_name] .tpl.php

контент-field.tpl.php является копией с ССК вно в тематических папках, это вно переопределение чтобы сделать его доступным в теме, и его не следует изменять (если вы не хотите менять все поля в теме). Файл, специфичный для поля, также является копией tpl, он будет работать после того, как файл переопределения будет там. Затем декодировать до html в поле tpl файл:

• // print $ item ['view'];

print html_entity_decode (strip_tags ($ item ['view']), ENT_QUOTES);

Drupal версия Примечание: В TPL файлы немного отличаются в Drupal 7 и Drupal 8. Но html_entity_decode() является функцией PHP, которая не будет изменяться в зависимости от Drupal версии.

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