Как сделать drupal известным, отправляя настраиваемый контент

Я знаю, что это не drupal-форум, но, поскольку я не получаю там никакого ответа, я решил попробовать здесь.

Я создаю веб-сайт, который принимает от пользователей индивидуальный контент. Итак, если на то пошло, у этого сайта есть форма и настраиваемый модуль. Вместо использования темы администратора эта форма помещается в настраиваемый шаблон, который создается так, чтобы иметь единообразный вид с остальными страницами. В результате о создании элементов формы с помощью hook_form не может быть и речи. Вот в чем мои проблемы. Поскольку в этой форме используется настраиваемая тема, я не уверен, что я могу сделать, чтобы drupal узнал, что пользователь отправляет новые данные содержимого при отправке формы?

  • Нужно ли мне использовать ту же строку запроса, что и на странице отправки контента на странице администратора, например -? Q = node / add / page для атрибута действия html-формы? (ИЛИ)

  • единственный способ - сопоставить URL-адрес с моей пользовательской функцией и вызвать внутри нее какой-то хук?

Спасибо


person Andrew    schedule 08.05.2010    source источник


Ответы (1)


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

Не использовать Drupal FAPI - очень плохая идея. Он решает за вас так много проблем, и отказ от него будет первым шагом, если вы хотите открыть брешь в безопасности на своем сайте. Фреймворк для разработки, такой как Drupal, не имеет большого значения, если вы не используете его API.

Изменить:
Первое, что нужно сделать, это перейти к Справочник по FAPI. Здесь вы можете узнать почти все о FAPI.

Вы можете использовать шаблон, если хотите, это просто базовая тематика Drupal, но я бы не советовал этого делать. Было бы намного легче поддерживать, если бы вы создали функции тематики для всех элементов и использовали бы вместо этого, вы могли бы просто перебрать все элементы и визуализировать их, как это делает Drupal, вместо того, чтобы редактировать файл шаблона, каждый из которых вам нужно, чтобы изменить форма. Возможно, сейчас это потребует больше усилий, но за эту работу есть награда: более чистый и удобный в сопровождении код.

В коде это выглядит примерно так:

$form['item'] = array(
    ...
    '#theme' => 'theme_function',
);

При этом элемент будет отображаться с использованием функции theme_function. Вы можете увидеть пример такой функции темы для текстовых полей.

person googletorp    schedule 08.05.2010
comment
Можно ли использовать шаблон вместо функции? Потому что моя форма довольно сложна, в ней более 40 элементов, и мне, вероятно, нужно будет добавить больше в будущем. Я был бы рад, если бы вы дали мне указатель на ссылку, которую вы предложили, потому что та, которую я нашел на сайте drupal, мало что говорит мне о #theme. - person Andrew; 08.05.2010