Question

J'ai un problème vraiment stupide qui m'a coûté une charge de temps déjà.

J'ai créé un modèle de contenu avec une URL là-dedans. Quand je regarde le code HTML pour cela, je vois un gros « maxlength = 256 » dans la balise form. Je voudrais étendre la longueur de ce champ, parce que mon client souhaite entrer des liens très longs (plus de 500 caractères). Toute idée comment je peux changer? Quand je fais une recherche générique par le code que je vois tant de occurences de 256, mais la longueur peut-être tout aussi bien dans la base de données quelque part. J'ai bien sûr fait le champ de base de données une plus longue varchar (1024 retenti poétique pour moi), de sorte que quelque chose que je n'ai pas à vous soucier.

Je pense qu'il est stupide, mais a toujours raison, le client comme nous le savons.

J'utilise Drupal 6,14.

Était-ce utile?

La solution 2

Yahoooooo! Je l'ai fixé, grâce aux pages Drupal utiles: http://drupal.org/node/300705

Je me suis dit que je pouvais modifier la forme après qu'il a été généré complètement. La solution présentée par Erik est bon, mais il ne semble pas fonctionner pour les champs CCK. Dans mon cas, la solution d'Erik aurait pu travailler si elle n'a pas été pour cette étape de génération qui doit se produire en premier.

Mon nouveau code est le suivant:

function longerfield_form_alter(&$form, &$form_state, $form_id) {
      $form['#after_build'][] = 'longerfield_after_build';
    }

function longerfield_after_build($form, &$form_state) {
  // This is for a node reference field:
  $form['field_page_boeken'][0]['data']['url']['#maxlength'] = 1024;
  return $form;
}

Maintenant, je vois aussi qu'il est laid, surtout parce qu'il pourrait y avoir d'autres éléments de formulaire ici (incrémenter seulement de 0), mais il fonctionne pour le premier élément! Yippeee!

Autres conseils

Vous voulez utiliser un hook_form_alter () dans votre templete.php ou un module personnalisé.

Il ressemblera à quelque chose comme ceci:

MODULE_form_alter(&$form, &$form_state, $form_id) {
  if($form_id = 'name_of_form_you_want_to_alter') {
    form['name_of_url_field']['#maxlength'] = 500;
  }
}

Il suffit de remplacer le module avec le nom de votre thème (si template.php) ou le remplacer par le nom de le module sur mesure votre utilisant.

Pour trouver l'identifiant de la forme, inspecter l'élément avec Firebug. Même chose pour l'id du champ URL.

Faites-moi savoir si vous avez besoin de plus de détails.

EDIT:. Comme l'a souligné, il semble que vous ne pouvez pas appeler crochets à partir du niveau de thème

La meilleure façon de s'y prendre est de créer un petit module personnalisé pour votre site. Vous pouvez l'appeler quelque chose comme SITENAME_customizations.

Tout ce que vous avez besoin est un simple fichier nommé MODULENAME.info qui .info ressemblera à quelque chose comme ceci:

name = SITE customizations
description = "Customizations"

Vous aurez également besoin d'un fichier MODULENAME.module, ce qui est là, vous pouvez inclure votre appel hook_form_alter.

PS. Assurez-vous que vous ne fermez pas votre balise PHP (?>) dans votre fichier .module.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top