Template avec angular

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Suggestion] Template avec angular

    Bonjour,

    je suis en train de démarrer un projet Joomla, ça faisait longtemps que je n’y avait pas touché. Entre temps je me suis fait pas mal d’expérience sous AngularJS.

    /!\ Dépot GITHUB plus bas → allez-y directement

    Du coup je démarre un template angular, je vais mettre ici les choses au fur et à mesure. Ceci est une ébauche que j’éditerai.

    C’est parti :
    1. importer angular et angular-sanitize (pour le print du html):
    fichier : mon-template/index.php
    à placer avec les autres import framework
    Code:
    $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/lib/angular.1.3.14.min.js');
    $doc->addScript($this->baseurl . '/templates/' . $this->template . '/js/lib/angular-sanitize.1.3.14.min.js');
    placer les fichiers angular.1.3.14.min.js et angular-sanitize.1.3.14.min.js où bon vous semble, pour ma part ce cera mon-template/js/lib
    ajouter la déclaration de l’app angular à la balise html
    Code HTML:
    <html ng-app="joomla" xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
    ajouter la déclaration du controler à la balise body
    Code HTML:
    <body ng-controller="MainCtrl" class="site ...">
    2. créer les app et controller:
    nouveau fichier : mon-template/js/app/app.js
    Code:
    var app = angular.module('joomla',['ngSanitize']);
    nouveau fichier : mon-template/js/app/controller.js
    Code:
    app.controller('MainCtrl',[
    	'$scope', '$window', '$http', '$location', '$timeout', '$filter',
    	function($scope, $window, $http, $location, $timeout, $filter) {
    		
    		$scope.data = {
    			items : items,
    			params : params
    		}
    	}
    ]);
    le contenu de l’objet data reçoit le contenu de la variable items et celui de la variable params. Ces variables seront créées dans les vue des composants que vous utilisez. Ici je vais faire un exemple avec le composant com_content/featured

    3. créer une "vue override" dans le template:
    nouveau fichier : mon-template/html/com_content/featured/default.php
    Code PHP:
    <?php
    /**
     * @package     Joomla.Site
     * @subpackage  com_content
     *
     * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     */
    defined('_JEXEC') or die;
    JHtml::addIncludePath(JPATH_COMPONENT '/helpers');
    JHtml::_('behavior.caption');
    ?>
    <script type="text/javascript">
        var items = <?php echo json_encode($this->itemsJSON_HEX_TAG JSON_HEX_APOS JSON_HEX_QUOT JSON_HEX_AMP JSON_UNESCAPED_UNICODE)?>;
        var params = <?php echo json_encode($this->paramsJSON_HEX_TAG JSON_HEX_APOS JSON_HEX_QUOT JSON_HEX_AMP JSON_UNESCAPED_UNICODE)?>;
    </script>

    <div class="blog-featured">
        <div class="page-header" ng-if="data.params.show_page_heading">
            <h1>{{data.params.page_heading}}</h1>
        </div>
        <div class="item" ng-repeat="item in data.items">
            <h2>{{item.title}}</h2>
            <div class="item-content" ng-bind-html="item.introtext"></div>
        </div>
    </div>
    Voila, si tout se passe sans problème, à l’accueil vous trouverez vos articles "featured". Bon Je le répète c’est juste une entrée en matière, mais je pense que ça peux permettre à terme de faire des tris de contenus sans rechargement de page assez facilement. Enfin quand, comme moi, on kiffe AngularJS

    La suite :
    Et bien c’est à venir, je pense qu’à terme il y aura un petit dépot github pour le template, mais plus rapidement je pense qu’il me faut coder une fonction "plus intelligente" (sans grosse tête bien sûr, disons "plus dédiée") que json_encode, notamment pour que tous les booleens qui se retrouvent sous forme de String dans l’objet data soit bien des booléen (ça évitera les ng-if="data.params.truc == '1'", que je trouve assez laits ). Et aussi pour parser corectement les choses déjà "jsonnées" tel que les prop style metadata et autre qui se retrouve sous forme de strings...
    Dernière édition par proximcreation à 28/09/2015, 09h59
    ProximCré@tion

  • #2
    Re : Template avec angular

    Bonjour,
    Très bonne initiative, je vais suivre l'évolution.
    Merci pour le partage.
    Un peu de pub: http://www.aplomb.ch

    Commentaire


    • #3
      Re : Template avec angular

      +1
      à suivre ....
      Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

      Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

      Commentaire


      • #4
        Re : Template avec angular

        Salut,
        pour info, on peut trouver une infographie d'AngularJS sur DZone :
        Programming, Web Development, and DevOps news, tutorials and tools for beginners to experts. Hundreds of free publications, over 1M members, totally free.


        Chercher : angular
        Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

        Commentaire


        • #5
          Template angular

          Bon,

          Voici un dépôt où retrouver un template Joomla!/AngularJS → c’est sans prétention (github)

          Je vais continuer à le bricoler, mais ça donnera peut-être des pistes à certain.

          a+ !
          Dernière édition par proximcreation à 28/09/2015, 10h02 Raison: Fusion avec précédente discussion
          ProximCré@tion

          Commentaire


          • #6
            Re : Template angular (2éme)

            Bonjour,

            Envoyé par proximcreation Voir le message
            Bon,

            mon sujet précédent étant fermé, j’en recrée un pour donner le lien du dépot pour la suite de mes recherches Joomla!/AngularJS → c’est sans prétention (github)

            a+ !
            Je viens de ré-ouvrir le message, et de fusionner les deux. Je te laisse modifier tes messages si besoin
            Pour apprendre à construire votre site web avec Joomla 3 : Joomla3! Le Livre Pour Tous : http://cinnk.com/joomla/3/le-livre-pour-tous

            Référencement Joomla! 10 astuces pour référencer son site web https://cinnk.com/articles/referencement-joomla-10-astuces-pour-referencer-son-site-web

            Créez votre boutique en ligne avec Joomla! & HikaShop http://cinnk.com/boutique/livres/cre...la-et-hikashop

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X