По умолчанию API форм Drupal выводит:
<input id = "edit-submit" class = "form-submit" type = "submit" value = "Save" name = "op"/>
Как мне это оформить, чтобы получить:
<button id = "edit-submit" class = "form-submit" type = "submit">
<span>Save</span>
</button>
Мне нужен внутренний тег span, чтобы я мог использовать технику CSS раздвижных дверей.
Думаю, мне нужно переопределить theme_button ($ element) из form.inc, но мои попытки пока не увенчались успехом.






Основная идея оформления form_foo, если вы используете простую тему PHP (например, Chameleon), - это написать функцию с именем theme_form_foo ().
Вы также можете создать тему для одного элемента (например, этой кнопки), объявив функцию темы только для него. См. https://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7
Обратите внимание, что с D6 в обоих случаях вам нужно будет объявить функцию в реестре тем, иначе Drupal не заметит этого переопределения. В D5 это не обязательно. Если вы используете phptemplate, он вам тоже понадобится, хотя PHPtemplate заботится о реестре вне случая форм: http://drupal.org/node/132442#theme-registry
Документация по этому поводу доступна на сайте a.d.o. : http://api.drupal.org/api/file/developer/topics/forms_api.html
Теперь у меня есть функция вроде
function mytheme_button($element) {
return "<button><span></span></button>"; # lots of code missing here for clarity
}
Чтобы заставить его работать, я просто очистил кеш, и Drupal это заметил и использовал автоматически.