Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai un pti problème relatif au système MVC (que je ne maîtrise pas encore à fond).
Mon but serais de pouvoir avoir en <title> (qui lui, pointe sur le $this->view->title) une donnée contenu dans ma table sql (qui a été sélectionner par id).
Donc j'ai essayé au niveau du contrôleur :
$id = $this->_getParam('id'); // on récupère l'id en GET $actu = new Actu(); $this->view->actu = $actu->getActuById($id); $this->view->title = $this->actu->news_titre; // << Mise du résultat "news_titre" dans la variable du title
Mais celà me donne une erreur :
Notice: Undefined property: ActuController::$actu in C:\wamp\www\dev\application\controllers\ActuController.php on line 39 Notice: Trying to get property of non-object in C:\wamp\www\dev\application\controllers\ActuController.php on line 39
Ce que je peux faire, c'est mettre le title dans ma page phtml, mais le problème c'est que dans mon layout.phtml le title est déjà déclaré, donc cela ne fonctionne pas et même si sa fonctionnerais sa serais pas W3C.
Solution existante ? Oui je suppose !
Merci à tous d'avoir pris le temps de lire mon post
Dernière modification par Mr.MoOx (19-01-2009 09:46:47)
Hors ligne
Salut,
$this->view->actu = $actu->getActuById($id);
Ce serait donc :
$this->view->title = $this->view->actu->news_titre;
et non
$this->view->title = $this->actu->news_titre;
Après concernant les balises title, meta et compagnie, je me permet d'être fénéant et de te coller une explication que j'avais déjà donné à une autre personne :
Sinon, concernant le chargement des ressources (css/js), les balises title et meta, et le doctype, une bonne méthode serait d'utiliser les aides de vue (helpers) proposées par Zend.
Il suffit d'afficher dans ton layout :Code:
<head> <?php echo $this->headTitle(); echo $this->headMeta(); echo $this->headLink(); echo $this->headScript(); ?> </head>et ensuite de paramétrer les contenus communs de ces "placeholder" dans ton layout, et les autres, qui sont particuliers à chaque page, dans les vues directement.
Ex:
En début de Layout tu pourrais avoir :Code:
echo '<?xml version="1.0" encoding="UTF-8" ?>'; echo $this->doctype(); // Ajout des balises Meta communes $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8') ->appendHttpEquiv('Content-Language', 'fr-FR'); // ajout des css communes $this->headLink()->appendStylesheet($this->baseUrl . '/styles/layout/layout.css') ->appendStylesheet($this->baseUrl . '/styles/layout/header.css') ->appendStylesheet($this->baseUrl . '/styles/layout/footer.css'); // ajout des scripts JS communs $this->headScript()->appendFile($this->baseUrl . '/scripts/ajax/lib/prototype.js') ->appendFile($this->baseUrl . '/scripts/ajax/effects/scriptaculous.js');Et ensuite par exemple dans ta vue "contact.phtml" :
Code:
$this->headTitle($this->_('Mon site, contactez-nous')); //$this->headMeta()->appendName('description', ''); //$this->headMeta()->appendName('keywords', ''); // configuration des css particulieres a utiliser $this->headLink()->appendStylesheet($this->baseUrl . '/styles/index/contact.css');De cette manière, tu indiques le titre à placer dans ton placeholder "headTitle()", tu ajoutes (Append) des balises meta "description" et "keywords" à afficher dans le placeholder "headMeta()", tu ajoutes des ressources css à charger dans le placeholder "headLink()" et enfin tu ajoutes des ressources javascript dans le placeholder "headScript()".
Et donc, tu ne configures dans tes vues, que les ressources nécessaires à ces dernières, et tu évites aussi de surcharger la page en ne chargeant pas toutes les ressources des autres pages (uniquement les ressources communes dans le layout).
*** Pour le doctype, tu peux ajouter dans ton bootstrap :Code:
$doctypeHelper = new Zend_View_Helper_Doctype(); $doctypeHelper->doctype('XHTML1_STRICT');puis ensuite au début de ton layout comme dans l'exemple précédent :
Code:
<?php echo $this->doctype() ?>Si tu changes ton doctype, il changera donc pour toutes tes pages.
C'est un peu flou au début, mais tout ceci est très logique.
Encore une fois, je t'invites à lire la doc qui explique assez bien ces choses là :
http://framework.zend.com/manual/fr/zend.view.html
Toi tu aurais donc dans ta vue :
$this->headTitle($this->title);
A+ benjamin.
Dernière modification par Delprog (16-01-2009 19:23:48)
Hors ligne
Très clair ! Problème réglé et merci 100x pour tes explications !!!!!!!!
Hors ligne
Je rajoute mon astuces.
J'ai un plugin 'viewSetup'. Entre autre, il s'occupe du titre :
dispatchLoopStartup :
$view->JQuery()->enable(); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headLink()->appendStylesheet($view->baseCss('main')); $view->headScript()->appendFile($view->baseJs('menu')); $view->headTitle()->setSeparator(' - '); $view->headTitle('MON APP', 'PREPEND');
postDispatch :
if (count($view->headTitle()->getValue()) == 0) { $view->headTitle($view->title); }
En gros, ca affiche dans title le titre de mon app.
Si dans la vue on place un paramètre 'title', il est concaténé avec '-'.
Globalement, on peut dire que ca représente un 'chemin' la pluspart du temps
Hors ligne
Salut,
J'avais quelque chose de similaire pour des appli dont le titre n'est pas primordiale.
Concernant des sites optimisés pour le référencement, j'ai abandonné ce système et j'affiche un titre par défaut paramétré dans un .ini (par ex.) dans le cas où il n'y a pas du tout de titre, mais je ne l'ajoute pas systématiquement, car les titres doivent être très précis et sont assez limités en nombre de caractères.
Bon après, il est vrai que le nom du site ou de la société et conseillé en tout début de titre de chaque page. Mais ça laisse libre le paramétrage du titre global.
A+ benjamin.
Hors ligne
Delprog a écrit:
Salut,
Bon après, il est vrai que le nom du site ou de la société et conseillé en tout début de titre de chaque page. Mais ça laisse libre le paramétrage du titre global.
ça n'a pas grand chose à voir avec le ZF mais bon...
Il faut placer en début de la balise title les mots-clés des requêtes sur les quelles on souhaite se positionner.
Par exemple un titre :
"Renault Clio d'occasion - OccasCar2000" est plus intéressant que "OccasCar2000 - Renault Clio d'occasion".
Vous serez alors mieux positionné sur la requête "renault clio occasion"
Les moteurs de recherche, en tout cas Google, considèrent que les 1ers mots sont les plus importants donc je ne conseillerais pas de commencer la balise title par le nom de votre boite.
De toutes façons je pense qu'avec le temps une requête faite sur le nom de votre société affichera naturellement votre site en tête de liste.
Mais bon, le référencent naturel n'étant pas une science exacte je ne vais pas trop m'attarder dessus.
Cordialement,
Kaimite
Hors ligne
En ayant des notions en référencement, je +1 la réponse de Kaimite :')
Hors ligne
Salut,
Les moteurs de recherche, en tout cas Google, considèrent que les 1ers mots sont les plus importants donc je ne conseillerais pas de commencer la balise title par le nom de votre boite.
Ce n'est pas tout à fait juste
Google recherche aussi une logique dans les zones chaudes.
La duplicité des titres sur chaque page est fortement déconseillée je suis d'accord et le titre doit résumer parfaitement le contenu de la page en question.
Cependant, il est bon d'identifier sa société en tout début de titre et de changer les mots qui suivent uniquement.
Généralement on prend le mot clé le plus lourd et on tente (pas facile du tout :p) de le répéter deux fois dans le titre (les deux occurences non collées).
De cette manière le moteur fait un lien entre la société et les mots clés qui suivent dans le titre, le contenu de la page et biensûr les autres zones chaudes.
Après il est possible que les règles aient évoluées, à ce moment là je vais me renseigner
Ces remarques sont inspirées du bouquin de Olivier Andrieu (Abondance), et après avoir écris différentes études et rapports sur le référencement, j'ai toujours respecté cette règle.
Maintenant, je vais faire le tour et me renseigner pour me mettre à la page (si nécessaire :p)
A+ benjamin.
Hors ligne
Bonsoir,
Je pense qu'il n'y a pas de règles d'or au niveau du référencement naturel et le seul qui puisse dire exactement quoi faire c'est notre ami Google.
Pour ma part j'ai suivi une formation web rank metrics. Mais bon, on est en tout cas tous d'accord sur le fait qu'il est très important d'avoir une balise title différente sur chaque page et qui reflète fidèlement le contenu de la page.
L'explication fournie par les formateurs était la suivante :
"Quand les fondateur de Google ont créés leur algo ils se sont basé sur leurs connaissances et références. Dans un rapport d'étudiant les éléments les plus importants sont toujours cités en premier, ils sont donc considéré que les 1ers mots du site étaient les plus importants"
Explication valable pour la balise title et également le contenu du site, les xxx premiers mots (je ne sais plus le nombre exact) sont ceux qui seront considérés comme importants. De même l'ordre des balises META dans le code source est important.
La balise title doit être la plus proche possible du debut du code :
Il vaut mieux la mettre juste après le head :
<head> <title>xxxxxxxxxxxxxxx</title>
est préférable à
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>xxxxxxxxxxxxxxx</title>
Mais j'avoue que là ça va devenir une "bataille d'expert" et je ne suis pas assez calé pour la continuer (et je ne suis pas sur que ce soit le lieu).
Bonne soirée @ vous
Cordialement,
Kaimite
Hors ligne
Salut,
Explication valable pour la balise title et également le contenu du site, les xxx premiers mots (je ne sais plus le nombre exact)...
Ce sont les 30 à 50 premiers termes.
Il n'y a pas de "bataille" hein
Il y aurait tant de chose à dire sur ce sujet. Sur la dernière synthèse sur le référencement que j'ai écris, je n'ai pas réussi à faire mieux que 40 pages. Donc je ne vais évidemment pas m'engager dans une conversation détaillée sur le sujet, mais c'est quand même toujours intéressant d'en discuter :p (en gardant biensur certaines choses un peu secrètes, c'est un travail de titan de tout regrouper et d'avoir testé et approuvé ou non les techniques).
Je pense qu'il n'y a pas de règles d'or au niveau du référencement naturel et le seul qui puisse dire exactement quoi faire c'est notre ami Google.
La chose essentielle à retenir, et beaucoup de personnes l'oublie, c'est que le référencement naturel est avant tout un travail de bon sens et de logique, mais aussi et surtout de loyauté. Il y a des règles, qui sont reprises et déformées à l'infinie. Mais les règles de Google sont simples, de la logique.
Souvent, une personne qui construit son site avec bon sens, en se mettant à la place de l'utilisateur/lecteur, optimise naturellement (titre, cohérence, hiérarchie, mise en exergue des mots importants, liens, etc.) son site sans connaitre les règles de l'optimisation pour le référencement.
Après il est certain qu'elles ne sont pas que visuelles, et qu'il y a des règles techniques à respecter, qui sont elles, plus précises et universelles.
Les règles que tu cites sont la base de l'optimisation. Il y en a des dizaines d'autres.
Effectivement la balise <title> est sans doute aujourd'hui la plus importante. Mais ce qui compte aussi c'est d'avoir une cohérence entre chaque partie. Je ne pense pas que le positionnement change en plaçant le nom de la société avant ou après le titre.
La logique veut que le nom de la société soit placée avant et que la suite définisse l'activité de cette entité. Mais cette logique est purement de bon sens, ce n'est pas universel, et influence certainement peu le positionnement (du moment que le titre est bien optimisé).
Après les méthodes de base (un squelette en quelques sortes) peuvent être figées et utilisées à l'infini, du moment qu'on les a éprouvées.
De mon côté je suis toujours le même schéma:
- nom de domaine : moins important aujourd'hui, surtout un nom de domaine propre chez un hébergeur de confiance, et si possible (pas facile) un mot clé dedans
- titre : "nom de société, terme important quelques mots pertinents et re terme important" (tout ça formant une phrase cohérente et ayant du sens pour un humain). Placée juste en dessous de la balise <head>
- phrase d'accroche : phrase <h1> pertinente toujours placée le plus haut possible dans le site, en premier dans le code, contenant un lien pointant vers une page de contenu traitant du sujet donné par ce lien
- menu : court et bien construit, contenant des liens textuels et des termes pertinents résumant parfaitement les pages cibles
- texte visible : 100 mots minimum avec hiérarchie (balises <hn>) et mise en exergue (gras, lien) des termes importants. Une bonne densité décroissante des mots clés les plus importants définis au tout départ. Contenant des liens propres, libellé du lien = url (si possible)
- pied de page : reprend le menu + eventuellement plan du site + phrase pertinente sur l'activité (précédé du nom de la société)
- sujets chaud : si possible news ou infos en rapport avec l'activité et traitant des sujets chauds dans le domaine
- backlinks : peu nombreux mais de grande qualité.
- sous-domaines : si une page traite d'un sujet unique non redondant sur le reste du site et contient suffisamment d'informations, en faire un sous-domaine. Ne pas abuser du nombre de sous-domaines.
Et optimiser au moins 4/5 pages de cette manière.
On pourrait rentrer dans le détail de chacun de ses points, mais c'est un plan.
Et ensuite d'autres techniques que je ne citerai pas ici, c'est déjà bien suffisant pour être totalement hors sujet ZF :p
Si ça peut donner une idée à certains qui auraient l'idée folle d'aller sur un forum ZF pour avoir ce genre de réponses :p
A+ benjamin.
Dernière modification par Delprog (12-02-2009 09:48:05)
Hors ligne
Il n'y a pas de bataille c'était juste l'expression (d'ailleurs mise entre guillemets).
En tout cas je vois que tu maitrise bien le sujet et je retiendrais particulièrement :
[...] c'est que le référencement naturel est avant tout un travail de bon sens et de logique, mais aussi et surtout de loyauté.
J'ai eu aujourd'hui un coup de téléphone d'un client qui a suivi une formation sur le webmarketing et qui me pose des question (sans vraiment les comprendre) pour vérifier que le site qu'on va leur livré a été bien fait, avec une super question : "vous avez mis des mots clés dans les balises alt des images ?"
M'enfin, on va pas les refaire
Cordialement,
Kaimite
Hors ligne
Haha, parfois c'est très drôle.
Dans la même trempe cette semaine (pas de rapport avec le référencement) :
"J'ai constaté que nos adresses e-mails ne sont pas protégées contre le spam, pouvez-vous en faire des images ?"
Pas de problème je fais.
Après coup : "Ok super, mais il faudra remettre les liens mailto !"
Sinon, les mots clés sont autorisés dans les balises alt, simplement ça n'aura pas beaucoup de poids sur le positionnement. Un peu plus aujourd'hui, mais ça ne fera pas de très grande différence. De plus, nous n'avons pas la certitude que tous les moteurs utilisent cette balise (pour d'autre ce sera title par ex.) dans leurs algorithmes.
Ce qu'il faut faire en fait, c'est respecter les recommandations du W3C, et utiliser un attribut pour ce pour quoi il est prévu et ne pas essayer d'en détourner le rôle premier.
Attribut alt dans les images (obligatoire en xhtml strict d'ailleurs), texte de substitution lorsque l'image est absente. Attibut title dans les ancres (liens) pour afficher une légende (info-bulle) au survole du lien, etc...
Après vient la question de la sémantique, mais c'est un énorme débat, et on ne saura jamais qu'elle est son importance dans le positionnement.
A+ benjamin.
Hors ligne