Table des matières

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 :

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

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 :

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.