interprétation personalisé des pages

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonsoir,

Je suis administrateur d'un assez gros site et nous envisageons de migrer sous drupal au cours de l'été. Il nous reste cependant quelques points à éclarcir.

J'ai vu que drupal permer de poser des "hook". Est il possible d'en mettre un de telle façon qu'il puisse changer à la volée le contenu d'une page(avant sa mise en cache de préférence)?

Je m'explique. mettons que j'ai créé un objet, disons VIDEO, qui est stocké dans sa table à part dans la db. Si je veux l'insérer dans le corp de la page, puisje mettre par exemple "#VIDEO#id-de-la-vidéo#" et faire ensuite un scrpt qui détecte cette chaine et la remplace par la fameuse vidéo?

ou peut être y a til une autre méthode plus aisée?

merci de votre aide.

Version de Drupal : 

Il doit être possible d'utiliser cette méthode avec Token : http://drupal.org/project/token.

Sinon, il est toujours possible d'intégrer du code directement à tous les niveaux, soit sous forme de module, soit sous forme de fichier template (node.tpl.php par exemple pour tes contenus de type video).

Il faudrait plus de détails pour se prononcer de façon plus précise.

En fait ce dont tu parles s'appelle un filtre. Le principe est qu'un module peut fournir autant de filtre que tu le désires, et que tu peux associer ces filtres en une liste ordonnée appelée "format d'entrée". Le nom est un peu débile j'en conviens, ça devrait plutôt s'appeler "format de texte" c'est d'ailleurs comme cela que c'est appelé en Drupal 7.

Bref. Si tu fabriques un modules et que dans ce module tu ajoutes un hook_filter, tu peux ainsi avoir un filtre qui transforme ta chaine #VIDEO#id-de-la-video en le markup XHTML qui va bien (ou ce que tu veux d'ailleurs). Ensuite tu ajoutes ce filtre au format d'entrée utilisée pour ton contenu et c'est gagné.

Ca c'est un de mes filtres pour transformer un markup perso de type <wp>drupal</wp> en lien vers le site wikipedia pour le terme de la balise.

function tom_module_filter($op, $delta= 0, $format= -1, $text= '') {
  if ($op == 'list')
    return array (
      0 => t('Wikipedia markup filter')
    );
  switch ($op) {
    case 'description':
     return t('Use <wp>term</wp> to link term to wikipedia');
    case 'prepare' :
      return $text;
    case 'process' :
      return preg_replace('@\<wp\>(.*?)\</wp\>@se', "_mon_module_process_wikipedia_tag('$1')", $text);
  }
}

function _mon_module_process_wikipedia_tag($text) {
  return "
      <a target='_blank' href='http://fr.wikipedia.org/wiki/$text'>
      $text
      </a>";
}