Faire un template pour SourceML
Cette page décrit comment changer l'affichage de SourceML.
Vue d'ensemble
SourceML est développé sur Symfony. Ce framework propose une structure en bundles pour organiser le code. Pour modifier l'affichage, on va utiliser le mécanisme d'héritage des bundles, ce qui nous permettra de développer les modifications dans des bundles dédiées, sans toucher aux fichiers d'origine de SourceML.
SourceML se compose de plusieurs bundles. Deux d'entre eux, principalement, peuvent être surchargés pour modifier l'affichage :
- Le bundle Dj3c1tAppBundle, qui sert de base à l'application et est responsable de la mise en page générale du site.
- Le bundle Dj3c1tSourceMLBundle qui génère l'affichage des morceaux, des players, les pages de présentation des auteurs...
Générez les nouveaux bundles
Rendez-vous en ligne de commande dans le dossier de votre installation de SourceML et utilisez la commande de génération de bundle :
bin/console generate:bundle
Générez deux bundles, par exemple AcmeAppTemplateBundle et AcmeSourceMLTemplateBundle.
Indiquez l'héritage
Dans le fichier AcmeAppTemplateBundle.php, ajoutez une méthode getParent qui retourne Dj3c1tAppBundle :
<?php
namespace AcmeAppTemplateBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeAppTemplateBundle extends Bundle
{
public function getParent() {
return 'Dj3c1tAppBundle';
}
}
Dans le fichier AcmeSourceMLTemplateBundle.php, ajoutez une méthode getParent qui retourne Dj3c1tSourceMLBundle :
<?php
namespace AcmeSourceMLTemplateBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeSourceMLTemplateBundle extends Bundle
{
public function getParent() {
return 'Dj3c1tSourceMLBundle';
}
}
adaptez les routes
Editez le fichier src/AcmeAppTemplateBundle/Resources/config/routing.yml, pour qu'il contienne :
dj3c1t_app:
resource: "@Dj3c1tAppBundle/Resources/config/routing.yml"
prefix: /
Et le fichier src/AcmeSourceMLTemplateBundle/Resources/config/routing.yml pour qu'il contienne :
dj3c1t_sourceml:
resource: "@Dj3c1tSourceMLBundle/Resources/config/routing.yml"
prefix: /
effacez les controlleurs par défauts
La commande generate:bundle génère des fichiers de controlleur par défaut. Si vous vous rendez maintenant sur la page d'accueil de votre site, vous devriez tomber sur un message :
Hello World !
Effacez les controlleurs par défauts des nouveaux bundles :
rm src/AcmeAppTemplateBundle/Controller/DefaultController.php
rm src/AcmeSourceMLTemplateBundle/Controller/DefaultController.php
Modifiez les fichiers
A partir de là, le principe pour modifier un fichier de template consiste à en faire une copie dans le nouveau bundle et à faire les modifications dedans.
Si le fichier d'origine est dans le bundle AppBundle, faites-en une copie dans le bundle AcmeAppTemplateBundle. Et si le fichier d'origine est dans le bundle SourceMLBundle, copiez-le dans AcmeSourceMLTemplateBundle.
Par exemple, pour modifier le header, faites une copie du fichier :
src/Dj3c1t/AppBundle/Resources/views/header.html.twig
dans le fichier :
src/AcmeAppTemplateBundle/Resources/views/header.html.twig
Puis faites les modifications dans ce nouveau fichier.
note : pour que les modifications soient bien prises en compte, le nouveau fichier doit avoir le même nom (avec le même chemin dans le bundle) que le fichier d'origine.
D'une manière générale, ce mécanisme de surcharge fonctionne pour les fichiers qui sont dans le dossier Resources/views et vous permettra donc de remplacer les templates d'affichage par les votres.