[Résolu] bloginfo(‘template_url’), comment l’utiliser ? (Créer un compte)

  • Statut : non résolu
14 sujets de 1 à 14 (sur un total de 14)
  • Auteur
    Messages
  • #474889
    gabier
    Participant
    Chevalier WordPress
    110 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress : 2.7.1
    – Thème utilisé : perso (en construction)
    – Extensions en place :
    – Nom de l’hebergeur : OVH
    – Adresse du site :

    Problème(s) rencontré(s) :

    Je souhaite utiliser une feuile de style différente pour les navigateurs IE6 et plus anciens (beaucoup plus restrictifs pour le CSS).
    J’ai donc essayé dans le header de faire un link vers les feuilles de style en fonction du navigateur.
    Quelque chose du genre

    if (($nom_nav== »MSIE ») and ($niveau<=6)){
    <link ... style_1.css
    else
    <link ... style.css

    Je me casse la tête avec ça depuis ce matin (peut-être y a-t-il plus simple et je réinvente la roue…)car je tombe sur deux problèmes nouveaux
    1) Je dois avoir une fonction php qui me donne le type de navigateur et son niveau. J’en ai une, récupérée sur le web, et qui marche très bien, y compris dans ma maquette de thème, mais je l’ai mise dans functions.php, et WordPress n’aime pas ça du tout. L’administrateur se plante au login. Alors comme c’est la première fois que je veux utiliser une fonction perso, je voudrais savoir où il faut les mettre et quelles règles il faut respecter.
    2) Pour mettre dans le j’ai voulu utiliser bloginfo(‘template_url’) qui conduit au répertoire de ma page de style « style_1 ». Mais ça ne marche pas, je ne sais pas pourquoi.
    Alors pour éclaicir le problème j’ai fait un petit code très simple, que j’ai mis dans le header

    $styleIE6blog=bloginfo(‘template_url’); $styleIE6blog= »$styleIE6blog/style_1.css »;
    print $styleIE6blog;
    $styleIE6= »http://localhost/Wordpress/wp-content/themes/CEM_New/style_1.css »;
    print « <br/>« ;
    print $styleIE6;
    $fichier=fopen($styleIE6, »r »);
    $texte=fread($fichier,50);
    print « <br/>
    print $texte;
    $fichier=fopen($styleIE6blog, »r »);
    $texte=fread($fichier,50);
    print « <br/>
    print $texte;

    D’un côté je récupère l’url de mon fichier par la fonction bloginfo(‘template_url’) et je la mets dans $styleIE6blog, de l’autre j’écris l’url en dur et je le mets dans $styleIE6.
    Ensuite j’imprime ces deux variables qui sont en principe identiques, et enfin je les utilise pour ouvrir le fichier et lire les 50 premiers octets.
    Résultat

    http://localhost/Wordpress/wp-content/themes/CEM_New/style_1.css
    http://localhost/Wordpress/wp-content/themes/CEM_New/style_1.css
    /* Theme Name: CEM_New Theme URI: http://www.cho
    Warning: fopen(/style_1.css) [function.fopen]: failed to open stream: No such file or directory in C:xampplitehtdocswordpresswp-contentthemesCEM_Newheader.php on line 33

    Warning: fread(): supplied argument is not a valid stream resource in C:xampplitehtdocswordpresswp-contentthemesCEM_Newheader.php on line 34

    1) Les 2 variables url semblent bien identiques
    2) Si j’ouvre le fichier tour à tour avec les 2 variables, celle en dur marche très bien, tandis que celle obtenue à partir de bloginfo(‘template_url’) conduit au plantage de la lecture pour adresse erronnée.
    Que me mets donc bloginfo() dans la chaîne pour qu’elle ne soit pas reconnue, et que ça ne se voie pas qund je fais un « print » ?

    🙂 Gabier

    #694480
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions

    Bonjour,

    vous pensez qu’il y a beaucoup de visiteurs sur vos sites ,qu’ils utilisent IE6 ou même plus vieux ?
    C’est le widget  » wassup » qui vous le dit ?

    Déjà mettez votre version de WordPress à jour, WP 2.7.1 a des failles de sécurités,passer sous WP 2.8.7.

    votre blog est chez OVH ou en local ?

    en visitant un autre site,je vu dans le code source de la page ceci

    <![endif]–

    #694481
    gabier
    Participant
    Chevalier WordPress
    110 contributions
    Lupi wrote:
    vous pensez qu’il y a beaucoup de visiteurs sur vos sites ,qu’ils utilisent IE6 ou même plus vieux ?
    C’est le widget  » wassup » qui vous le dit ?

    Je n’ai pas wasup ni ses statistiques détaillées car actuellement mon site n’est pas sous WordPress. mais il y a environ 10000 visiteurs par mois, or il y a encore environ 10% des navigateurs qui sont IE6. Je ne peux tout de même pas les ignorer …

    Lupi wrote:
    Déjà mettez votre version de WordPress à jour, WP 2.7.1 a des failles de sécurités,passer sous WP 2.8.7.

    Oui, ça viendra… Si la MAJ automatique marchait, on serait plus réactifs …

    Lupi wrote:
    votre blog est chez OVH ou en local ?

    Local

    Lupi wrote:
    en visitant un autre site,je vu dans le code source de la page ceci

    <![endif]–

    Ben oui, il met le lien en dur, c’est quand même pas très propre, alors que dans WordPress il ya en principe toutes les fonctions qu’il faut pour avoir les liens du blog, de la CSS, etc …
    Car ça veut dire que le jour ou j’installe à distance, il faut changer le code, et si je change de répertoire, il faut aussi changer le code.

    🙂 Gabier

    #694482
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions
    gabier wrote:
    Lupi wrote:
    vous pensez qu’il y a beaucoup de visiteurs sur vos sites ,qu’ils utilisent IE6 ou même plus vieux ?
    C’est le widget  » wassup » qui vous le dit ?

    Je n’ai pas wasup ni ses statistiques détaillées car actuellement mon site n’est pas sous WordPress. mais il y a environ 10000 visiteurs par mois, or il y a encore environ 10% des navigateurs qui sont IE6. Je ne peux tout de même pas les ignorer …

    Moi si je les ignore, les gens doivent mettre à jour leurs configurations,un petit mot sur le site pour dire que le site est optimisé pour tel ou tel navigateur ou que ceux qui ont IE6 ne pourront pas pleinement profiter du blog,ça je veux bien faire mais pas me prendre la tête avec style.css,c’est assister les gens et ce n’est pas bon !
    C’est mon avis.

    gabier wrote:
    Lupi wrote:
    Déjà mettez votre version de WordPress à jour, WP 2.7.1 a des failles de sécurités,passer sous WP 2.8.7.

    Oui, ça viendra… Si la MAJ automatique marchait, on serait plus réactifs …

    Vous parlez de mise à jour automatique ? La msie à jour par ftp fonctionne très bien alors pourquoi s’en passer 😉

    gabier wrote:
    Lupi wrote:
    votre blog est chez OVH ou en local ?

    Local

    D’accord. eT OVH ????

    gabier wrote:
    Lupi wrote:
    en visitant un autre site,je vu dans le code source de la page ceci

    <![endif]–

    Ben oui, il met le lien en dur, c’est quand même pas très propre, alors que dans WordPress il y a en principe toutes les fonctions qu’il faut pour avoir les liens du blog, de la CSS, etc …
    Car ça veut dire que le jour ou j’installe à distance, il faut changer le code, et si je change de répertoire, il faut aussi changer le code.

    🙂 Gabier

    Peut être mettre …/themes/cordobo-green-park-2/ie6.css ?

    #694483
    gabier
    Participant
    Chevalier WordPress
    110 contributions
    Lupi wrote:
    Moi si je les ignore, les gens doivent mettre à jour leurs configurations,un petit mot sur le site pour dire que le site est optimisé pour tel ou tel navigateur ou que ceux qui ont IE6 ne pourront pas pleinement profiter du blog,ça je veux bien faire mais pas me prendre la tête avec style.css,c’est assister les gens et ce n’est pas bon !
    C’est mon avis.

    Moi pas. Tout le monde n’a pas les connaissances pour savoir ce que ça signifie d’avoir un navigateur comme si ou comme ça.:o

    Lupi wrote:
    Vous parlez de mise à jour automatique ? La msie à jour par ftp fonctionne très bien alors pourquoi s’en passer 😉

    Oui mais c’est long et pendant ce temps là le site est indisponible 🙂

    Lupi wrote:
    D’accord. eT OVH ????

    Pas encore présentable en WordPress car je suis parti de scratch.

    Lupi wrote:
    Peut être mettre …/themes/cordobo-green-park-2/ie6.css ?

    ça ne marche pas.
    Et puis il n’y a pas que là que j’ai besoin du chemin. Par exemple si je veux appeler des archives (par exemple celles de Septembre 2008), par

    href= »http://monsiteWordpress/?m=200809″

    Alors qu’est-ce que je mets pour être indépendant du répertoire de mon thème ?
    Non vraiment, bien sûr en attendant je vais le mettre en dur, mais la vraie solution ça serait de pouvoir utiliser les « template tags » il me semble qu’ils ont été faits pour ça, non ?:wp:

    🙂 Gabier

    #694484
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions
    gabier wrote:
    1-Moi pas. Tout le monde n’a pas les connaissances pour savoir ce que ça signifie d’avoir un navigateur comme si ou comme ça.:o
    2-Oui mais c’est long et pendant ce temps là le site est indisponible 🙂
    3-Pas encore présentable en WordPress car je suis parti de scratch.
    4-ça ne marche pas.
    Et puis il n’y a pas que là que j’ai besoin du chemin. Par exemple si je veux appeler des archives (par exemple celles de Septembre 2008), par

    href= »http://monsiteWordpress/?m=200809″

    Alors qu’est-ce que je mets pour être indépendant du répertoire de mon thème ?
    Non vraiment, bien sûr en attendant je vais le mettre en dur, mais la vraie solution ça serait de pouvoir utiliser les « template tags » il me semble qu’ils ont été faits pour ça, non ?:wp:

    🙂 Gabier

    1- C’est pourquoi je vous dis qu’il faut mettre un mot qui dirait de mettre à jour son navigateur,comme vous les dîtes : « tout le monde n’a pas … » si personne ne leur dit,comment ils vont le savoir ??

    2-Long ???? Vous plaisantez ,j’espère,je ne fais que comme ça , moi j’ai essayé 1 fois en automatique,c’est aussi long,et le risque est plus grande de faire foiré son blog.

    3- A vous de voir,je n’ai jamais fait de site en local,toujours directement sur l’hébergeur,je trouve que c’est perdre son temps,on le fait là puis il faut le transférer.

    4- Au départ c’est pour appeler un style.css pouir IE6 maintenant vous me parlez des archives,c’est différent.
    Je ne vous ai pas dit ,de ne pas utiliser les template tag,je vous donnais juste le code que j’ai trouvé sur un thème par hasard,en le voyant,j’ai pensé à votre question, c’est tout.

    #694485
    gabier
    Participant
    Chevalier WordPress
    110 contributions

    Bonsoir Lupi,

    Désolé si je me suis mal exprimé et que je vous ai fait perdre votre temps. Mon sujet est bien l’utilisation du template tag bloginfo(‘template_url’) ou get_bloginfo(‘template_url’). J’ai donné le contexte pour être concret.

    Mon problème précis est que je n’arrive pas à récupérer les infos et à les réutiliser comme chaîne de caractère. J’aimerais trouver quelqu’un qui les a déjà utilisés dans le même but, ou quelqu’un qui connaît le mode d’emploi.
    Car si j’applique le Codex ça ne marche pas…
    Si personne ne peut me renseigner j’essaierai d’éplucher le code de la fonction bloginfo() pour savoir ce qu’elle renvoie exactement.
    En tout cas merci pour tout le temps que vous passez a essayer de comprendre ce que nous voulons…

    🙂 Gabier

    #694486
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions

    je ne perds jamais mon temps 😉
    mais j’ai peur que vous perdiez le votre juste pour 10 ou 15% d’utilisateurs « obsolètes » .

    c’est bizarre que les codes du codex ne fonctionne pas,il n’est pas indiqué code pour une ancienne version de WordPress ?

    #694487
    gabier
    Participant
    Chevalier WordPress
    110 contributions
    Lupi wrote:
    c’est bizarre que les codes du codex ne fonctionne pas,il n’est pas indiqué code pour une ancienne version de WordPress ?

    Ce n’est pas qu’il ne fonctionne pas. Si j’emploie la fonction dans mon thème quelque part, elle va bien afficher le chemin du répertoire qu’il faut, comme l’a prouvé mon test, mais si au lieu de cela je veux l’utiliser pour concaténer ce chemin et le nom de mon fichier, c’est ça qui ne marche pas.
    Par exemple un « echo bloginfo(‘template_url’) » m’affichera bien sur l’écran « http://chemin_du_répertoire_du_thème » mais un ‘echo bloginfo(‘template_url’). »/IE6.css » ‘ affichera un message d’erreur qu’il n’a pas trouvé le fichier.

    Ceci dit je ne suis pas pressé, en attendant je code le chemin en dur.

    🙂 Gabier

    #694488
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions
    #694489
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions

    Vous connaissez ce site http://browsershots.org/
    il permet de tester votre site sous différents navigateurs,j’ai testé le mien c’est l’horreur, des erreurs 500,des pages blanches,etc..

    #694490
    gabier
    Participant
    Chevalier WordPress
    110 contributions
    Lupi wrote:
    Vous connaissez ce site http://browsershots.org/
    il permet de tester votre site sous différents navigateurs,j’ai testé le mien c’est l’horreur, des erreurs 500,des pages blanches,etc..

    Non mais j’ai installé IE_Mult sur mon ordinateur, il permet d’éxécuter IE 3, 4.01, 5.01, 5.5 et 6. Je me limite à 6 pour l’instant. Oui IE c’est l’horreur mais il faut vivre avec.

    Sinon j’ai résolu mon problème. Comme d’habitude, la réponse est évidente si on ne s’égare pas pour toutes sortes de raisons.
    Je pensais que bloginfo() et get_bloginfo() étaient identiques. La confusion vient de ce que les 2 sont utilisés pour afficher des caractéristiques du blog.

    Or si on lit bien le Codex pour les 2 :
    bloginfo() « displays » …
    get_bloginfo() « returns » …

    Donc c’est get_bloginfo() qu’il faut employer car bloginfo() ne retourne rien du tout, il affiche. J’ai été trompé parce que si je faisais « print bloginfo(‘template_url’) », j’avais bien un affichage du chemin, non pas parce que print récupérait l’info (en fait print n’affichait rien) mais parce que bloginfo() l’affichait lui-même.
    Je croyais avoir aussi testé get_bloginfo() mais j’avais certainement fait une autre faute à ce moment là.

    Moralité, en employant soigneusement get_bloginfo(), ça marche nickel. Et ma feuille de style IE6 marche aussi.

    Merci pour avoir assuré le répondant, ça aide à chercher.

    🙂 Gabier

    #694491
    Anonyme 2
    Participant
    Maître WordPress
    10588 contributions

    pas de quoi,ravi pour toi.

    #694492
    piekes
    Membre
    Maître WordPress
    724 contributions

    Plusieurs problèmes différents évoqués dans ce fil… Je vous livre les solutions que j’utilise en production, sur des sites WP institutionnels qui font dans les 5000 visites / jour. Pas la vérité avec V, juste ma pratique.

    Les CSS

    Dès que tu travailles pour un « client » quelconque, la prise en charge d’IE6 devient incontournable. Encore heureux si on ne me demande pas de supporter IE 5.5. Je connais quelques grosses entreprises, un hôpital près de chez moi, par exemple, qui ont tous leurs PC sous Windows 2000. Même IE6 ne s’installe pas sur ce système.

    Pour la détection des navigateurs et l’utilisation de feuilles de style appropriées, une solution incontournable, les commentaires conditionnels.

    <link rel="stylesheet" href=" » type= »text/css » media= »screen » />
    <!--[if lt IE 7]>-->
    <link rel="stylesheet" type="text/css" href="/ie.css » />



    <link rel="stylesheet" href="/econtact.css » type= »text/css » media= »screen » />

    Remarquez au passage que je charge sélectivement des css non seulement en fonction du navigateur (Ici, tous les IE inférieurs à 7) mais aussi de la page (ou de la catégorie). Pas la peine de charger toutes les pages avec ce qui ne sert qu’une fois.

    Les chemins

    Toutes les fonctions get_ renvoient une variable PHP et n’affichent… rien. On utilise donc ainsi get_bloginfo pour former le chemin de la feuille de style pour IE6, comme ci-dessus. Il y a pas mal de paramètres possibles, comme le montre le Codex : http://codex.wordpress.org/Function_Reference/get_bloginfo

    Ceci étant, répéter les appels à bloginfo n’est certainement pas très efficace : lecture répétée des valeurs dans la base de données. Certains préfèrent donc coder les url en dur. Mais c’est casse-pied quand on développe sur un serveur local pour transférer ensuite le site sur un serveur de production.
    Je préfère donc une troisième méthode, qui consiste à déclarer tous les chemins comme des constantes dans wp-config.php Comme ceci :

    #
    define(‘WP_HOME’, ‘http://www.*****.fr/mini_cr/histarts’);
    #
    define(‘WP_SITEURL’, ‘http://www.*****.fr/mini_cr/histarts’);
    #
    define(‘TEMPLATEURL’, ‘http://www.*****.fr/mini_cr/histarts/wp-content/themes/hda’);
    #
    define(‘TEMPLATEPATH’, ‘D:/mini_cr/histarts/wp-content/themes/hda’);
    #
    define(‘STYLESHEETPATH’, ‘D:/mini_cr/histarts/wp-content/themes/hda’);

    Je fais ensuite des appels de la façon suivante (petit extrait d’une sidebar) :

    <div id="menuDivers">
    <ul>
    <li class="top_space12"><a href="/rubrique/actus »>Actualités</a></li>
    <li><a href="/rubrique/men »>Instructions officielles</a></li>
    <li><a href="/rubrique/fiches_pedago »>Fiches pédagogiques</a></li>
    <li><a href="/createurs »>Lexique des peintres, écrivains, sculpteurs…</a></li>
    <li> <a href="/rubrique/musees »>Musées internationaux</a></li>
    </ul>
    </div> <!-- div menuDivers -->
    <p id="rss">
    <a href="/feed/rss »><img src="/images/rss.jpg » alt= »Flux RSS des actualités »/></a>
    </p>
    </div> <!-- div sidebar -->

    Voilà, c’était un peu long, mais j’espère que ça pourra aider quelqu’un.

14 sujets de 1 à 14 (sur un total de 14)
  • Vous devez être connecté pour répondre à ce sujet.