Drupal : afficher les champs CCK dans un block

Photo de Jérémy

Par Jérémy Chatard le mardi 10 février 2009

Drupal CCK fields in blocks
/**
 * On teste si l'on se trouve sur
 * une URL de type node :
 * node/1
 * arg(0) = node
 * arg(1) = 1 (le nid du noeud)
 * !arg(2) pour détecter que nous ne
 *   ne sommes pas sur le formulaire d'édition
 */
if (arg(0) == "node" && is_numeric(arg(1)) && !arg(2)) {
  // Chargement du noeud
  $one_node = node_load(arg(1));

  // Champs Voir aussi du noeud, ici des liens
  // On vérifie que le premier champ n'est pas vide
  // car CCK créé toujours une première valeur, même
  // s'il n'y a rien dedans.
  if ($one_node->field_voir_aussi[0]["url"] != "") {

    // Pour chacun des liens de notre noeud
    foreach ($one_node->field_voir_aussi as $link) {
      // On extrait les attributs du lien
      $options = array(
        'attributes' => unserialize($link["attributes"]))
      );
      // On l'ajoute dans la chaîne
      $links .= "\t<li>" . l($link["title"], $link["url"], $options . "</li>\n";
    }
  }

  // On vérifie que notre chaîne de caractères
  // n'est pas vide
  if (trim($links)) {
    // On construit le début de la structure HTML
    // qui va autout des liens
    $output .= "<ul>\n";
    $output .= $links;
    // On referme notre liste
    $output .= "</ul>";

    // On affiche notre liste de liens
    print $output ;
  }
}

Ecrit par Jérémy le mardi 10 février 2009 — Tags : Drupal

comments powered by Disqus