Aide pour un echo avec trop de guillemets :)

IronMarie
Invité n'ayant pas de compte PHPfrance

10 mai 2011, 11:20

Bonjour,

Je souhaiterais avec mon code :
Si on est sur la page d'accueil, on affiche un paragraphe en "h2", sinon en h1.
L'identification de la page d'accueil ne pose pas problème. Là où je n'y arrive pas, c'est à la concaténation des fonctions Wordpress dans mon code HTML. J'ai du mal avec les guillemets et concaténation. Je vous mets le code tel quel :
<?
$url=$_SERVER["REQUEST_URI"];
$urlhompage="/";
if ($url==$urlhompage)

echo ' <h2 class="entry-title full-title"><a href="<?php the_permalink() ?>" title="Permanent link to <?php the_title_attribute() ?>" rel="bookmark" rev="post-<?php the_ID(); ?>"><?php the_title() ?></a></h2> ';

else

echo ' <h1 class="entry-title full-title"><a href="<?php the_permalink() ?>" title="Permanent link to <?php the_title_attribute() ?>" rel="bookmark" rev="post-<?php the_ID(); ?>"><?php the_title() ?></a></h1> ';

?>
Merci beaucoup !!!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 mai 2011, 11:33

salut,

avant toute chose, les balises php c'est <?php la version courte que tu utilise n'est plus l'option par défaut de php5 et tu peut avoir de grosse surprise lors de migration de version donc autant directement l'utiliser :)

pour ce qui est de ton problème, je pense que cela vient du fait que du met du php au milieu d'une chaine de caractère.
Par exemple
echo ' <h2 class="entry-title full-title"><a href="<?php the_permalink() ?>" title="Permanent link to <?php the_title_attribute() ?>" rel="bookmark" rev="post-<?php the_ID(); ?>"><?php the_title() ?></a></h2> ';

avec ça c'est sur que the_permalink(),the_title_attribute() et the_title() ne seront pas interprétées, d'ailleurs si tu regarde le code source html de la page généré par code tu verra que le lien est <?php the_permalink() ?> et non le retour de la fonction.

Il faut donc effectivement utiliser la concaténation ou simplement fermer la chaine de caractère, afficher le retour de la fonction et ensuite commencer l'affichage d'une nouvelle chaine.

ceci dit je peux me planter et il peut y avoir un eval de la sortie standard avant envoie au navigateur mais cela serais assez tordu :d

@+
Il en faut peu pour être heureux ......

ViPHP
ViPHP | 2577 Messages

10 mai 2011, 11:51

Bonjour,

Un éditeur avec de la coloration syntaxique aide bien.
echo ' <h2 class="entry-title full-title"><a href="' , the_permalink() , '" title="Permanent link to ' , the_title_attribute() , '" rel="bookmark" rev="post-' , the_ID() '">' , the_title() , '</a></h2> ';
Il est aussi possible de faire plusieurs "echo" pour faciliter la lecture.
echo ' <h2 class="entry-title full-title">';
echo '<a href="' , the_permalink() , '" title="Permanent link to ' , the_title_attribute() , '" rel="bookmark" rev="post-' , the_ID() '">' ;
echo the_title();
echo  '</a>' ;
echo '</h2> ';

IronMarie
Invité n'ayant pas de compte PHPfrance

10 mai 2011, 13:50

Bonjour,

Donc le code que je vous ais mis n'est effectivement pas concaténé comme je l'ai précisé. Donc oui, dans le code source, je le vois tel quel...

Merci pour l'echo, cependant il ne fonctionne pas. J'essaie de le débuger, mais j'ai encore des blems de guillemets

IronMarie
Invité n'ayant pas de compte PHPfrance

10 mai 2011, 13:57

c'est la ligne
echo '<a href="' , the_permalink() , '" title="Permanent link to ' , the_title_attribute() , '" rel="bookmark" rev="post-' , the_ID() '">' ;
qui pose problème (j'ai opté pour les échos plus visibles :) )

IronMarie
Invité n'ayant pas de compte PHPfrance

10 mai 2011, 13:59

Il manquait la virgule !!!

ViPHP
ViPHP | 2577 Messages

10 mai 2011, 14:01

Bonjour,

Il manque une virgule après the_ID()

Edit : Je donne des script faux et en plus je suis lent^^

IronMarie
Invité n'ayant pas de compte PHPfrance

10 mai 2011, 16:13

Non super !
Pour la virgule j'ai pu vite voir qu'il la manquait
Mais j'ai toujours eu du mal à concaténer :)
Bon, je retourne en cuisine moi