Changer un lien dans un noeud avant de l'afficher

Bonjour,
j’essaye de personnaliser un module de simplenews pour ajouter des contenus du site à la newsletter.
J’ai un besoin très particulier de devoir changer les liens des noeuds afin que l’utilisateur soit redirigé sur un autre site quand il clique sur le titre du noeud.
Daans le module, j’ai un fichier theme.inc
Dans ce fichier j’ai une fonction qui affiche les champs conformément au theme :

/**
* Each selected node goes true this function to create a nice body.
*/
function theme_scs_node_output($node) {
  $output = '';

  $build = node_view($node['node'], $node['view_mode']);
  unset($build['#contextual_links']); //remove the edit link and etc.

  $output = '<div id="newsletter_node_' . $build['#node']->nid . '">';
  $output .= '<div>' . drupal_render($build) . '</div>';
  $output .= '</div>';
 
  return $output;

 

drupal_render va donc imprimer les infos.
Seulement j’ai besoin d’abord de changer le lien du titre, mais je n’arrive pas à parcourir les données pour savoir quel champs modifier.

j’ai essayé :

foreach ($build['links'] as $key => $value)
  {
    $info .= $key . '/' . $value .'-------------------------------- ';
  }
return $info;

qui me sort :

theme/links__node————————————————
#pre_render/Array————————————————
#attributes/Array————————————————

node/Array————————————————————

j’en deduis qu’il faut que je rentre dans node pour avoir le lien…
avec $build[‘links’][‘node’] :

theme/links__node__node————————————————
#links/Array————————————————
#attributes/Array————————————————

j’en deduis qu’il faut rentrer dans #links pour avoir le lien…
avec $build[‘links’][‘node’][‘#link’]
ben j’ai rien qui s’affiche..

j’ai des lacunes pour parser des elts objet ou array donc je suis coincé…

merci de m’éclairer !

#

Bonjour,

dans ces cas là, la fonction var_dump est bien pratique, car elle affiche tout le contenu des objets

tu peux par exemple faire :

<pre>
var_dump($node);
</pre>

ou

<pre>
var_dump($build);
</pre>

#

oui j’avais pensé à ça, mais ça ne marche pas dans cette fonction.

function theme_scs_node_output($node) {

        $build = node_view($node['node'], $node['view_mode']);
        $info = var_dump($build);
    return $info;

pas d’erreur mais rien en sortie…..ça provient du fait que l’on soit dans un fichier de theme non ?

#

je pense qu’il ne faut pas faire

  $info = var_dump($build);
  return $info;

mais plus simplement

  var_dump($build);

Bien sur, ça va un peu «casser» le thème, mais c’est pour son bien ;-)

#

j’ai essayé mais ça ne sort rien du tout, pas d’erreur d’ailleurs non plus…..

Syndiquer le contenu