Sujet : Hoa_Head - Episode 1

Hey !

Présentation du Package Hoa_Head

Hoa_Head est un assistant de vue (merci Hywan pour la description simplifiée) pour générer une balise <head> avec ses balises enfant.



Objectifs

- Générer des balises à la volée :

  • titre de page,description,mots clé,fichier JS,code JS,fichier CSS,code CSS,favicon,auteur

  • clé de référencement pour les moteurs de recherche: google, bing, yahoo,etc...

  • etc... voir la doc W3C sur l'ensemble des possibilitées...

- Ajouter de règles suivant le navigateur

  • <!--[if lte IE 5>...<![endif]-->

  • <!--[if lte IE 6>...<![endif]-->

  • <!--[if lte IE 7>...<![endif]-->

  • etc... voir doc W3C...

- Utiliser des outils divers

  • Générateur de mots clé pertinents suivant un ensemble de textes

  • Analyseur de média: iphone, smartphone, wap, mobile, etc...



La structure des fichiers qui pour le moment n'est qu'une proposition

Element/Abstract.php
Element/Head.php
Element/Link.php
Element/Meta.php
Element/...

Rule/Abstract.php
Rule/Default.php.php
Rule/IE5.php
Rule/IE6.php
Rule/IE7.php
Rule/...

Tool/Keyword.php
Tool/Media.php
Tool/...

Head.php
Exception.php


Idée d'utilisation (inspiré de Hoa_Form)

import('Head.~');

$head = Hoa_Head::getInstance();

$head->addElements(array(

        'metaTitle'       => array(
            'type'        => Hoa_Head::ELEMENT_META,
            'attribute'   => array(
                'name'    => 'title',
                'content' => 'Package Hoa_Head'
            )
    ),
        'metaDescription' => array('type' => Hoa_Head::ELEMENT_META, 'attribute' => array('name' => 'description','content' => 'Package Hoa_Head')),
        'metaKeyword' => array('type' => Hoa_Head::ELEMENT_META, 'attribute' => array('name' => 'keyword', 'content' => 'Package Hoa_Head')),

        'linkGlobal'      => array(
            'type'       => Hoa_Head::ELEMENT_LINK,
            'attribute'  => array(
                'href'     => 'global.css'
            )
    ),

    'linkPrint'      => array(
            'type'       => Hoa_Head::ELEMENT_LINK,
            'attribute'  => array(
                'href'     => 'style-cleaner.css',
                'media'     => 'print'
            ),
            'rule' => array(
                'name' => 'IE7'
      )
    )

));

$head->addElement(array(
    'type'       => Hoa_Head::ELEMENT_LINK,
    'attribute'  => array(
        'href'   => 'print.css'
    )
));


Exemple de la portion de code HTML généré à passer a la vue

<!-- HEAD -->
<meta name="title" content="Package Hoa_Head" />
<meta name="description" content="Package Hoa_Head" />
<meta name="keyword" content="Package Hoa_Head" />
<link rel="stylesheet" type="text/css" href="global.css" media="screen" charset="utf-8" />
<link rel="stylesheet" type="text/css" href="print.css" media="print" charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style-cleaner.css" media="screen" charset="utf-8" />
<!-- /HEAD -->


A la recherche d'idées... (je vous fait confiance)

Voilou smile

Dernière fois dit par tetardo (10 Jul. 2009 16:11)

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

2

Re : Hoa_Head - Episode 1

Hey :-),

Pour les liens (<link />) il y a des choses à faire avec les routeurs de Hoa_Controller. La version 0.4.3b introduit les routeurs d'écriture (ils parsent mais ils savent reconstituer les URLs maintenant), c'est en test donc pas trop exposé. Mais ça serait intéressant.

Sinon, il faudrait inclure dans les médias CSS, les CSS media queries (voir la spécification CSS3 media queries et une démonstration de Daniel Glazman). Ce serait intéressant et on serait en avance sur notre temps.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

3

Re : Hoa_Head - Episode 1

Hey,

J'ai regardé les médias CSS et effectivement c'est pas mal et pas très dur a mettre en place. je vais donc ajouter cette fonctionnalité la.

J'ai également regardé une lib trouvée sur google Code: Minify!
http://code.google.com/p/minify/
Minify est une application réalisée en PHP5 qui peut réaliser de nombreuses opérations, comme :
- Combiner plusieurs fichiers CSS
- Combiner plusieurs fichier Javascript
- La compression de leur contenu en supprimant les espaces inutiles et commentaires
- D'utiliser les résultats d'encodage avec HTTP (gzip / deflate) qui est utile pour permettre l'optimisation de mise en cache côté client

Je potasse, je postasse ^^

Des idées supplémentaires ?

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !

4

Re : Hoa_Head - Episode 1

Minify serait plus un assistant pour la vue. Mais mon stage chez Mozilla m'apporte beaucoup d'idées concernant la couche vue et je ne regrette d'avoir attendu avant de l'avoir attaquer. Je pense qu'on va taper sur du paradigme composant et ça risque d'être sympa wink.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

5

Re : Hoa_Head - Episode 1

Hey,

J'annonce le premier dev de Hoa_Head pour ce weekend.
L'envi de coder me démange...

Je suis preneur d'idées de dernières minutes...

Le code c'est comme le paic citron, quand il y en a plus... il y en a encore !