Mise en place URL canonique dans le head de ma page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mise en place URL canonique dans le head de ma page

Re: Mise en place URL canonique dans le head de ma page

par nathy » 19 sept. 2009, 11:55

Bonjour, finalement j'ai trouvé une solution pas des plus propres mais elle fonctionne.

Voici mon code:
$canonicalurl = strip_tags( $db_product->f("tag"));
	$canonical = '<link rel="canonical" href="' . $canonicalurl . '" />';
	$mainframe->addCustomHeadTag( $canonical );
C'est correct, cela s'affiche. Cependant, l'affichage est permanent et même si la variable $canonicalurl est nulle ma page contient un tag de type <link rel="canonical" href="" /> donc ce n'est pas tout à fait OK.

Il me reste donc une dernière chose à faire et je n'y arrive pas non plus: Je ne voudrais afficher
$mainframe->addCustomHeadTag( $canonical );
UNIQUEMENT si $canonicalurl contient quelque chose[/b] (c'est à dire si la table contient un enregistrement non nul)

Je n'arrive pas à paramétrer cela correctement.

Quelqu'un pourrait il me venir en aide ?

Merci,
Nathalie

Re: Mise en place URL canonique dans le head de ma page

par shizu » 17 sept. 2009, 08:29

Bonjour,

Avez-vous essayé de modifier le code de la fonction qui génère le head de votre page ?
function getHead() {
                $head = array();
                $head[] = '<title>' . $this->_head['title'] . '</title>';
                foreach ($this->_head['meta'] as $meta) {
                        if ($meta[2]) {
                                $head[] = $meta[2];
                        }
                        $head[] = '<meta name="' . $meta[0] . '" content="' . $meta[1] . '" />';
                        if ($meta[3]) {
                                $head[] = $meta[3];
                        }
                }
                foreach ($this->_head['custom'] as $html) {
                        $head[] = $html;
                }
               
                return implode( "\n", $head ) . "\n";
        }
Par exemple, en y ajoutant un
foreach($this->_head['canonical'] as $link) {
     //ici quelques tests divers, et...
     $head[] = '<link rel="' . $link[0] . '" href="' . $link[1] . '" />';
}
(tout dépend bien sur de la structure de la variable $this->_head)

Si vous aviez déjà essayer, quel en fut le résultat ?


A bientôt.

Mise en place URL canonique dans le head de ma page

par nathy » 16 sept. 2009, 22:51

Bonsoir,

cela fait presque 2 mois que je me bats avec quelques lignes de code et j'en fais appel à vous pour un peu d'aide.

J'aimerais générer une url canonique dans le head pour certaines de mes pages, du type <link rel="canonical" href="L'URL" />

Mes métas sont par exemple générés de cette manière:
$mainframe->prependMetaTag( "description", strip_tags( $db_product->f("metatag")) );


Maintenant, je voudrais que lorsque "description" est remplcé par "canonical" le code dans le head donne bien
<link rel="canonical" href="http://www.monsite.com/pagecanonique.html" />
Le script qui insère les métas dans le head de la page est comme ceci:
function getHead() {
		$head = array();
		$head[] = '<title>' . $this->_head['title'] . '</title>';
		foreach ($this->_head['meta'] as $meta) {
			if ($meta[2]) {
				$head[] = $meta[2];
			}
			$head[] = '<meta name="' . $meta[0] . '" content="' . $meta[1] . '" />';
			if ($meta[3]) {
				$head[] = $meta[3];
			}
		}
		foreach ($this->_head['custom'] as $html) {
			$head[] = $html;
		}
		
		return implode( "\n", $head ) . "\n";
	}


L'url canonique dans ma DB se nomme 'canonique'. Le champ dans la table est créé et fonctionne.

Je voudrais savoir s'il est possible de modifier certains bouts de code afin que lorsque je code:
$mainframe->prependMetaTag( "canonical", strip_tags( $db_product->f("canonique")) );

J'ai dans le head de ma page
<link rel="canonical" href="url contenue dans le champ canonique">
??

J'avoue avoir tout essayé en 2 mois mais sans succès. Peut-être un de vous voit il une solution à mettre en place ?

Merci d'avance pour vos réponses.
Nathalie