Comment faire un blog avec Novius OS #3

Alors que Novius OS Chiba (pas encore actif ici mais bientôt) fait son entrée en scène, il est temps de continuer notre voyage à travers les méandres de Novius OS et plus particulièrement son blog. Aujourd’hui au programme : comment personnaliser le front et le back office de n’importe quelle application ?

Retour sur metadata.config.php

La dernière fois je vous avais parlé du fichier metada.config.php, LE fichier de votre application. Celui qui la définit. Evidemment, depuis, j’y ai opéré quelques modifications. J’y ai ajouté ceci :


'enhancers' => array(
     'oppoc_home' => array(
            'title' => 'Home Blog',
            'desc'  => '',
            'enhancer' => 'oppoc/front/home',
            'iconUrl' => 'static/apps/noviusos_blog/img/blog-16.png',
     ),
 ),

Vous voici en présence de la déclaration d’un enhancer. Mais qu’est ce ? Et bien répondons à cette question.

Personnaliser le front office

Car oui, le blog de base de Novius os est bien sympa, mais le personnaliser en profondeur, c’est quand même mieux. Pour ce faire vous avez plusieurs outils

Enhancers et Url Enhancers

Les enhancers et url enhancers sont des outils très importants dans novius os. Ce sont eux qui vous permettent d’afficher le contenu de vos applications sur le front office. Ci-dessous, les enhancers disponibles sur mon site :

enhancers

On voit donc que sur une page je peux afficher la liste de mes copains, le blog ou la home du blog. La liste des copains, vous pouvez la voir ici (le lien n’existe plus). La home, je ne vous ferais pas l’affront de vous dire où elle est et le blog, vous êtes dessus ! Un enhancers vous affiche donc le résultat donné par votre application. Mais quelle est la différence entre enhancer et url enhancer ? Et bien l’url enhancer var permettre de gérer des urls, tandis que l’enhancers de base non. Dit comme cela, c’est plutôt flou, mais attendez donc l’explication via un exemple simple : ce blog.

Par défaut, l’application blog ne contient qu’un url enhancer nommé “blog”. Cet url enhancer permet la gestion de toutes les pages du blog. Que ce soit le listing d’article, les pages de catégories, de tags ou les articles seuls. Et oui, pour moi, la page “blog” n’est qu’une seule page de mon site alors que pour google c’est plusieurs dizaines de pages ! Et tout cela grâce à l’url enhancer qui sait faire le tri entre toutes les urls qu’on lui demande et afficher les bons articles au bon moment.

Là où Novius os est encore plus fort, c’est qu’un enhancer peut “utiliser” la puissance d’un url enhancer. Vous l’avez remarqué, ma page d’accueil, qui est géré par un enhancer simple donc sans gestion d’url, vous renvoie tout de même vers mes articles de blog. Je vous rassure, je n’ai pas à renseigner chaque url de chaque article présent sur la page d’accueil. Non, tout est automatique. Je ne rentrerais pas dans les détails mais, les articles de blog étant des objets possédant une url sur mon blog (car l’url enhancer est présent dans une page), je peux, depuis n’importe où, utiliser la méthode “url” sur un article de blog. Cette méthode renverra donc directement vers l’url enhancer associé à l’objet et donc à ma page blog. Magique !

Enfin, c’est peut être magique mais ça ne vous dit pas comment faire votre propre enhancer. Reprenons donc l’exemple de ce blog et de sa home qui utilise un enhancer maison. La ligne la plus importante de la déclaration d’un enhancer est celle de la clé “enhancer”. Elle indique une url. Si vous êtes familier de fuel php (et si vous ne l’êtes pas, je vous le conseille), vous savez qu’une url signifie un contrôleur. Ici, quand mon enhancer home est inséré dans une page, j’appelle la méthode “action_home” de mon “Controller_Front”. Cette méthode fait son business et renvoie une vue qui vous affiche les derniers articles publié. Rien de plus simple !

Mais si créer quelque chose de nouveau peut être utile, ne pas utiliser l’existant serait stupide ! Mais parfois l’existant ne ressemble pas à ce que l’on souhaiterait. Mais il existe un moyen simple de parrer à cette éventualité.

Rediriger une vue

Rediriger une vue, c’est simple, rapide et efficace. En voici la preuve :


\View::redirect('noviusos_blognews::front/post/list', 'oppoc::front/list');

Cette ligne, est à insérer dans le fichier “bootstrap.php” de votre application (situé à la racine de n’importe quelle application, ce fichier est appelé dès que l’application est chargée). Les plus malins d’entre vous auront compris qu’ici, on redirige la vue “front/post/list” de l’application blognews vers la vue “front/list” d’oppoc. C’est-à-dire qu‘au lieu d’appeler la première vue, c’est la deuxième qui est appelée, avec les mêmes paramètres que la première. Vous n’avez donc qu’à écrire la vue html qui vous convient avec les données que l’on vous fournit et “POF !” vous avez personnalisé votre blog. Personnellement je ne redirige que deux vues du blog de base et j’ai moins d’une dizaine de fichiers de vues présents dans mon application. Ce n’est donc vraiment pas long ni compliqué.

Mais parfois on veut aller encore plus loin et modifier même le back office d’un CMS. Là encore, Novius os est forgé pour et vous ne rencontrerez pas de grandes difficultés.

Personnaliser le back office

L’action de base que l’on pourrait vouloir faire sous Novius os serait de rajouter un champ à une table déjà existante pour venir augmenter les possibilités d’une application. C’est ce que j’ai moi-même fait en ajoutant un champ “highlight” pour ce blog qui permet de mettre en avant un article. Pour ce faire, retournons dans “bootstrap.php” qui va nous permettre de surcharger le back office.


\Event::register_function('config|noviusos_blog::controller/admin/post', function(&$config) 
{
    $config['fields']['post_highlight'] = array(
        'label' => 'Article mis en avant',
        'form' => array(
            'title' => 'Mis en avant',
            'type'  => 'checkbox',
            'value' => '1',
            'empty' => '0',
        ),
    );
    $config['fields']['medias->img_hightlight->medil_media_id'] = array(
        'label' => '',
        'renderer' => 'Nos\Renderer_Media',
        'form' => array(
            'title' => 'Image de mise en avant',
        ),
    );
    $config['layout']['menu'][__('Hightlight')] = array(
         'post_highlight', 
         'medias->img_hightlight->medil_media_id'
    );
});

Que fait ce morceau de code ? Pour le comprendre, vous devez savoir que Novius OS est énormément basé sur des fichiers de configuration. Ces fichiers vont pouvoir définir les champs présents dans votre CRUD et leur position dans ce dernier. Le code ci-dessus est donc lancé au moment où la configuration de l’administration des posts de blog est chargée. A cet instant, on a accès au tableau renvoyé par cette configuration, à savoir $config. On ne fait donc que modifier ce tableau pour y ajouter des champs. Le premier est une checkbox. Il a été ajouté en base de données et on définit la valeur qu’il doit avoir si la checkbox est cochée ou non (les clés “value” et “empty”). Le deuxième est un champ de média. Il n’a pas besoin d’être ajouté en base car Novius OS ira directement chercher dans votre médiathèque et fera le lien entre votre média et votre item (en l’occurrence, un article de blog). Il faut noter que la partie “img_highlight” dans le nom du champ est importante car c’est elle qui identifiera votre média parmi les multiples médias qui peuvent être attachés à votre item. A vous de choisir un nom disponible.

La dernière partie du code précise la disposition de ces nouveaux champs dans le “layout” (la mise en page) de votre CRUD. Ici j’ai donc ajouté une partie “highlight” au menu des posts de blog (la partie de droite) et j’y ai inclus mes deux nouveaux champs. Et le résultat est là :

25

Et voilà ! vous savez maintenant personnaliser le front office et le back office ! Enfin… Vous avez les bases ! Je suis passé assez vite sur certains points, mais cette série d’articles aurait été bien trop longue si je ne l’avais pas fait.

Si vous avez des questions, des retours, je serai heureux de vous répondre et si jamais certains points sont vraiment trop obscures, je me ferai un plaisir d’écrire un post dessus !

A bientôt pour de nouvelles aventures !

2 commentaires sur “Comment faire un blog avec Novius OS #3Ajoutez votre →

  1. Bonjour,

    Bien vu pour ces recettes.

    Si je comprends bien, Novius nécessite régulièrement de se lancer dans le code si on souhaite développer le site.
    Au début, avec les vidéos de démo, je pensais que tout ça était faisable par l’interface graphique…Hélas non 🙁

    1. Bonjour.
      Oui malheureusement, a l’heure actuelle, la personnalisation du logiciel passe par le code.
      Mais à l’avenir il est tout a fait possible que des thèmes tout fait sorte.
      C’est le cas de nombreux cms en fait. Sans télécharger de nouveaux thèmes et extensions, WordPress est difficilement personnalisable sans toucher au code. Il faut que Novius OS se développe pour proposer d’autres option permettant de personnaliser son interface graphique.
      Je pense d’ailleurs bientôt mettre en ligne une application de blog similaire a celle que j’utilise ici.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *