Ressources

Chaque widget Pxxo se veut indépendant et même extérieur à l'application qui l'utilise. Or, un widget utilise en plus de son template, des fichiers annexes comme des images, des feuilles de styles (CSS), des scripts (Javascript). Tout ceci représente les ressources du widget.

Les ressources sont stockées dans le répertoire de thèmes du widget. Elle sont de 2 types :

  • statique : les fichiers binaires (typiquement des images)
  • dynamique : les fichiers textes (HTML, JS, CSS, XML, etc…)

Toutes les ressources dynamiques sont considérées comme des fichiers “templates”. Par convention le nom du fichier est suffixé par le type du contenu à produire précédé de .php, exemple : index.php.html, style.php.css, script.php.js.

Qu'elles soient dynamiques ou statiques toutes les ressources sont générées ou recopiées dans le répertoire des ressources (par convention nommé rsc). C'est ce répertoire, qui sera public, qui est accessible par les navigateurs web.

Moteur de template

Le moteur de template est depuis Pxxo 5, celui du Zend Framework à savoir Zend_View.

Variables utilisables dans un template

  • toutes les variables de la classe PHP d'un widget sauf les variables privées.
  • toutes les variables générées par les méthodes putData et putWidget
  • quelques variables spéciales (Self)

Méthodes utilisables dans un template

Accès aux helpers

Tous les helpers fournit par Zend_View sont théoriquement utilisables dans les templates.

Accès aux méthodes de la classe

La variable Self est disponible dans les templates : elle donne accès à l'instance de la classe ayant exécuté le template.

Exemple :

 
Objet :
 
<?php 
class Exemple Pxxo_Widget {
    function __construct() {
        parent::Pxxo_Widget(array(), __FILE__);
        $this->setTemplateRaw('defaut', '----');
    }
    function defaut() {
        // ...
    }
    function ma_fonction() { 
        return 'OK';
    }
}
?>
 
Template : defaut.php.html
 
<?php 
 
echo $this->Self->ma_fonction(); 
 
?>

Trier des ressources

On peut trier les ressources via un poids. Cela est utile notamment pour les fichiers javascript qui doivent être chargés dans un ordre donné. La ressource à laquelle on associe le plus gros poids est chargée en premier.

Exemple :

 
  $id = $this->putScript('second.php.js');
  $this->Resources->get($id)->setWeight(3000);
 
  $id = $this->putScript('premier.php.js');
  $this->Resources->get($id)->setWeight(4000);

Regrouper des ressources

Les ressources de type CSS ou Javascript peuvent regroupées en un seul fichier. Cela permet d'améliorer nettement les performances.

Le groupement de ressources est actif si :

  • le widget n'a aucun parent
  • MinifyLevel possède le drapeau P_M_COMBINE (anciennement la variable StripSpacesMode était utilisée)

Accès aux méta données d'une ressource

Il est parfois nécessaire de connaître en détail les caractéristiques des ressources d'un widget (js,css). Une information importante pour les identifier est le nom du fichier utilisé pour générer la ressource. Cette information peut être récupérée avec la méthode getFilename() dont voici un exemple d'utilisation :

$prototype_js_url = "/";
foreach($this->Resources as $r)
{
  if ($r->getFilename() == 'prototype.js')
  {
    $prototype_js_url = $r->get();
    break;
  }
}

Ce code va rechercher l'url de la ressource du widget $this dont le nom de fichier est prototype.js.

fr/doc/pxxo/reference/resources.txt · Dernière modification: 2008/07/10 09:13 par kerphi
 
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Powered by PHP Driven by DokuWiki
©2003-2008 Pxxo