Pregunta

El resultado predeterminado de la API de formulario de Drupal es:

<input id="edit-submit" class="form-submit" type="submit" value="Save" name="op"/>

¿Cómo hago un tema para que me llegue:

<button id="edit-submit" class="form-submit" type="submit">
  <span>Save</span>
</button>

Necesito la etiqueta span interna para poder usar la técnica CSS de puertas correderas.

Supongo que necesito anular theme_button ($ element) de form.inc pero mis intentos hasta ahora no han tenido éxito.

¿Fue útil?

Solución

La idea básica para crear un tema de form_foo si está usando un tema PHP simple (como Chameleon), es escribir una función llamada theme_form_foo ().

También puede crear un elemento (como este botón) específicamente, declarando una función de tema solo para él. Ver https://api.drupal.org/api/drupal /developer%21topics%21forms_api_reference.html/7

Tenga en cuenta que, con D6, en ambos casos deberá declarar la función en el registro de temas, de lo contrario, Drupal no notará esta anulación. Esto no es necesario en D5. Si está utilizando phptemplate, también lo necesitará, aunque PHPtemplate se encarga del registro fuera del caso de formularios: http://drupal.org/node/132442#theme-registry

La documentación para esto está disponible en a.d.o. : http://api.drupal.org/api/file/developer/topics/forms_api.html

Otros consejos

Ahora tengo una función similar a

function mytheme_button($element) {
  return "<button><span></span></button>"; # lots of code missing here for clarity
}

Para que funcione, simplemente borré el caché y Drupal lo notó y lo usó automáticamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top