Pour le premier point, symfony est parfait notamment grâce à l'implémentation des "slots" dans les templates.
Voilà comment j'ai procédé.

J'ai créé un composant dans le module front de mon plugin, pour pouvoir le réutiliser ailleurs si besoin:

// plugins/.../modules/front_nairus/actions/components.class.php
class FrontNairusComponents extends sfComponents
{
  public function executeJavascripts( sfWebRequest $request )
  {
  }
}

// plugins/.../modules/front_nairus/templates/_javascripts.php
<?php use_helper('Partial');?>
<?php slot('nairusJs'); ?>
  <script src="/NairusPlugin/js/functions.js"></script>
<?php end_slot(); ?>

Puis dans le layout principal il suffit d'appeler le slot comme ça en bas de page:

<?php include_slot('nairusJs'); ?>

Arrivé ce stade, il m'a semblé important, pour rendre mon plugin plus autonome et plus souple, de permettre à l'utilisateur d'activer la librairie jQuery nécessaire via le serveur CDN.

Mais pourquoi, charger jQuery via un serveur externe ?

Tout simplement parce si l'utilisateur est déjà allé sur un site qui charge jQuery via ce même serveur, le fichier sera déjà dans le cache de son navigateur et la page sera donc plus rapide à charger.

Mais afin d'éviter de rendre son site inutilisable si pour une raison ou une autre le serveur CDN ne répond pas, il faut pouvoir charger le fichier js nécessaire en local.

D'abord j'ai ajouté la configuration du chargement de jQuery dans le fichier app.yml de mon plugin:

# plugins/.../config/app.yml
all:
  nairusPlugin:
    jQuery:
      load: false # set true if you want to load the jQuery cdn or files of the plugin
      local: /nairusPlugin/js/jquery-1.4.4.min.js
      cdn: http://code.jquery.com/jquery-1.4.4.min.js

Ensuite j'ai passé cette configuration au composant et modifié la vue comme ceci:

// plugins/.../modules/front_nairus/actions/components.class.php
class FrontNairusComponents extends sfComponents
{
  public function executeJavascripts( sfWebRequest $request )
  {
    $this->jQuery = sfConfig::get('app_nairusPlugin_jQuery');
  }
}

// plugins/.../modules/front_nairus/_javascripts.php
<?php use_helper('Partial');?>
<?php slot('nairusJs'); ?>
  <?php if( $jQuery['load'] == true):?>
    <script src="<?php echo $jQuery['cdn'];?>"></script>
    <script>!window.jQuery && document.write(unescape('%3Cscript src="<?php echo $jQuery['local'];?>"%3E%3C/script%3E'))</script>
  <?php endif; ?>
  <script src="/nairusPlugin/js/functions.js"></script>
<?php end_slot(); ?>

Voilà, tout est dit!
Have fun!!

A++ ;)

NairuS