Joomla QR

Cela fait maintenant plusieurs fois que je vois passer sur les différents groupes et forums, la question suivante : comment puis-je changer le style d'un élément dans une page web ? Ce tutoriel ne s'applique pas qu'à l'outil Joomla mais s'applique à n'importe quelle page web.

La réponse est extrêmement simple et la voici.

 
Rendez-vous sur le texte où ila modification que vous souhaitez effectuer sur la page web avec Firefox  Nous allons appliquer ce tutoriel à ma page d'accueil : 
Cliquez avec le bouton droit de votre souris dans inspecter du menu contextuel
Tuto
Rendez-vous désormais sur la page web, dans la partie haute de votre page, sur l'élément où vous souhaitez modifier le style
Procéder par un clic droit sur la sélection du menu inspecté. Le navigateur affiche le texte du code où vous avez cliqué. (la fenêtre s'affiche à droite chez mois mais par défaut s'affiche en dessous de la page)
opera UizFKllby7
Le navigateur surligne la ligne en question. Vérifiez que vous avez une classe ou un id. Si vous n'avez ni classe ni id le fichier, aller dans votre code pour en rajouter un bien entendu. Je ne peux détailler la méthode ici, elle dépend du contexte.
Dans la deuxième partie de la partie du bas de votre navigateur, une fois que vous avez rajouté votre propre classe ou id, rendez-vous dans la partie centrale de la partie du bas pour fabriquer votre style. Cliquez sur le bouton plus, le navigateur affiche automatiquement le nom de la classe où le nom de l'id prêt à être renseigné.
opera thPhnXO5sL
Vous pouvez donc ici, en mode brouillon, modifier le style que vous souhaitez appliquer à votre élément. 
Créez dans votre "mode développeur" votre code CSS, il sera appliqué en temsp réel.
 
Une fois votre CSS écrit, n'oubliez pas de le rajouter dans votre fichier CSS, dans le navigateur, tout se passe en mémoire vive et donc rien n'est sauvegardé !
 
Désormais que vous avez le code de votre classe CSS prête à l'emploi, il vous suffit juste de rajouter dans votre feuille de style le style que vous avez fabriqué. Si vous ne connaissez pas le chemin de ce fichier, toujours dans la partie basse droite de votre navigateur, ouvrez la section <head> de votre page web afin de retrouver une balise link avec un rel="stylesheet". Ci-dessous UN exemple parmis d'autres, d'accès un UN fichier css (remarquez que dans cette page, il y a plusieurs appels à plusieurs fichiers CSS)
opera NeXA1ZnBPH
 
Selon le contexte, vous pouvez avoir plusieurs lignes de ce type, c'est à vous à trouver le nom de chemin de fichier qui correspond le mieux à celui que vous voulez modifier. (ce n'est pas une question technique mais bien une question de logique. Sur les templates des CMS comme joomla par exemple, il existe des fichiers CSS de type "custom" qui vous sont réservé à vous pour vos propres styles) En effet, il arrive de trouver des noms de chemin de fichiers qui sont par exemple, spécifique à votre propre template. Encore une fois, cela est très contextuel et je ne peux me prononcer sur la manière de faire.
Dans ce fichier css, coller le CSS que vous avez écrit "en mode brouillon" dans le navigateur en utilisant, via le clic droit, le choix "copier la règle". Ce choix peut différer selon les navigateurs :: 
Copier une règle CSS dans firefox
Dans VOTRE fichier CSS, une fois ce fichier trouvé, vous devez éditer directement sur le serveur via éventuellement une connexion FTP ou SSH, afin de rajouter le code que vous avez écrite dans la partie centrale de votre correction en ligne. Mais là encore, je ne peux me prononcer dans la mesure où vous avez tous vos propres ménières de faire 
Add a comment

Dans cet article, je vais répondre à ma problématique suivante. J'administre professionnellement un site Internet basé sur Joomla, dans lequel j'ai installé pas mal de composants, de plugins et de modules spécifiques, très souventt développés par mes soins bien entendu.

À force d'écrire mes plugins spécifiques, et à force de développement, j'ai un peu de mal à me rappeler de tous les short code que je dois utiliser dans mon interface d'administration de rédaction de mes articles. Je vous rappelle que l'ensemble des plugins, mais vous voyez par vous-même en lisant mes articles, sont relativement très "métier".

Ma problématique

Pour celles et ceux qui me connaissent réellement, tout le monde sait que j'ai quelques soucis de santé qui me font "perdre la tête". En effet, j'ai des soucis de mémorisation. Et lorsque je dois retenir des quantités de commandes de l'ensemble des plugins que je code (les shortcodes), sans compter des rédactions spécifiques de mes articles techniques, j'aurais aimé avoir sous les yeux, au moment de la rédaction d'un article dans Joomla content, un petit pavé avec mes propres notes à connaître.

Que va-t-on faire ?

Nous allons combler un vide, mais aussi un manque ! En effet, sous le dernier champ note de version de la console d'administration de Joomla, il nous reste de la place pour écrire des informations. C'est à cet endroit que je vais rentrer l'ensemble des notes que je souhaite (a)voir sous les yeux. Comme la place est quand même relativement limité, nous allons créer un div auquel nous allons appliquer un style particulier de type overflow-y pour avoir un ascenseur vertical et pouvoir se balader dans l'ensemble du dive pour avoir toutes ces commandes qui m'intéressent. Pour la partie CSS je vous laisse faire, je ne me concentre ici que sur l'ajout de ce div.
vide
 

Comment faire ?

Avant toute chose, je tiens à remercier Serge de notre groupe Facebook d'utilisateurs lorrains qui m'a véritablement mis sur la piste il y a désormais plusieurs semaines. En effet je n'avais pas eu encore le temps de me pencher sur ce problème. Autant vous dire que des idées d'articles venant combler mon site internet, il va encore y en avoir pas mal.
Dans un premier temps, dans votre interface d'administration de Joomla 3, nous allons créer un héritage de notre template Isis.
  1. Pour cela rendez-vous dans l'interface d'administration des templates au travers du menu extension -> templates -> templates.
  2. Sélectionner dans la liste déroulante le terme administration pour accéder à notre template Isis qui est une template spécifique à l'administration de Joomla. Lorsque cette tempête apparaît, vous avez créé il y a substitution de comme content en sélectionnant l'élément article .
    firefox zlCD76ckDL
  3. Lorsque votre substitution (oui on parle bien d'héritage dans la terminologie normale de développeurs) est créée, nous allons éditer ce fichier. Pour cela, rendez-vous dans le répertoire administrator -> template -> isis -> html -> com_content -> article. Vous allez vous retrouver avec un fichier nommé edit.php. éditez ce fichier et rendez-vous à la ligne 76 après la commande :
notepad AcsHxR2Jkq
 
À l'issue de cette commande </div> ligne 73 ici, rajouter votre propre div avec une classe spécifique qui va vous permettre de gérer par la suite votre propre style dans le fichier css de la template.
Je ne peux que vous conseiller de faire une inclusion au travers de la commande PHP include qui vous permettra de spécifier le contenu dans un fichier externe à celui de edit.php

 

 

Add a comment

Dans cet article et en relation avec l'article 880, je vais répondre à ma problématique suivante : j'administre professionnellement un site Internet basé sur Joomla, dans lequel j'ai installé pas mal de composants, de plugins et de modules spécifiques, très souvent développés par mes soins bien entendu.
À force d'écrire mes plugins spécifiques, et à force de développement, j'ai un peu de mal à me rappeler de tous les short-codes que je dois utiliser dans mon interface d'administration de rédaction de mes articles. Je vous rappelle que l'ensemble des plugins, mais vous voyez par vous-même en lisant mes articles, sont relativement très "métier".

Ma problématique

 Pour celles et ceux qui me connaissent réellement, tout le monde sait que j'ai quelques soucis de santé qui me font "perdre la tête". En effet, j'ai des soucis de mémorisation. Et lorsque je dois retenir des quantités de commandes de l'ensemble des plugins que je code (les shortcodes), sans compter des rédactions spécifiques de mes articles techniques, j'aurais aimé avoir sous les yeux, au moment de la rédaction d'un article dans Joomla content, un petit pavé avec mes propres notes à connaître : shortcodes, aide, mémos....

Que va-t-on faire ?

Nous allons combler un vide, mais aussi un manque ! En effet, sous le dernier champ note de version de la console d'administration de Joomla, il nous reste de la place pour écrire des informations. C'est à cet endroit que je vais rentrer l'ensemble des notes que je souhaite (a)voir sous les yeux. Comme la place est quand même relativement limitée, nous allons créer un div auquel nous allons appliquer un style particulier de type overflow-y pour avoir un ascenseur vertical et pouvoir se balader dans l'ensemble du div afin de voir toutes ces commandes qui m'intéressent. Pour la partie CSS je vous laisse faire, je ne me concentre ici que sur l'ajout de ce div.
firefox 4cnw5GvStM

Comment faire ?

Avant toute chose, je tiens à remercier Serge de notre groupe Facebook d'utilisateurs lorrains qui m'a véritablement mis sur la piste il y a désormais plusieurs semaines. En effet je n'avais pas eu encore le temps de me pencher sur ce problème. Autant vous dire que des idées d'articles venant combler mon site internet, il va encore y en avoir pas mal.
Dans un premier temps, dans votre interface d'administration de Joomla 3, nous allons créer un héritage de notre template Isis afin de ne pas toucher aux fichiers d'origine.
Pour cela rendez-vous dans l'interface d'administration des templates au travers du menu extension -> templates -> templates.
Sélectionner dans la liste déroulante le terme administration pour accéder à notre template Isis qui est une template spécifique à l'administration de Joomla. Lorsque cette tempête apparaît, vous avez créé la substitution de comme content en sélectionnant l'élément article .
firefox IguEcpdwmZ
Lorsque votre substitution (oui on parle bien d'héritage dans la terminologie normale de développeurs) est créée, nous allons éditer ce fichier. Pour cela, rendez-vous dans le répertoire [joomla] -> administrator -> template -> isis -> html -> com_content -> article. Vous allez vous retrouver avec un fichier nommé edit.php. éditez ce fichier et rendez-vous à la ligne 76 après la commande
<?php echo JLayoutHelper::render('joomla.edit.global', $this); ?>
afin de rajouter un simple include, commande php qui va intégrer un fichier externe à cette template. Ce qui donne, en reprenant la ligne ci-dessus :
<?php echo JLayoutHelper::render('joomla.edit.global', $this); ?>
<?php include('explications.php'); ?>
 Je ne peux que vous conseiller de faire une inclusion au travers de la commande PHP include qui vous permettra de spécifier le contenu dans un fichier externe à celui de edit.php. Désormaiis, vous voila avec un nouveau fichier, explications.php, dans lequel vous pourrez ajouter du contenu. Je pense même qu'on aurait pu lui donner l'extension .html

Contenu du XML contenant les explications

Alors, vous me connaissez, j'aime l'automatisation des choses. Impossible donc de devoir éditer le fichier à la main (enfin, on peut le faire bien entendu) Mais l'idée est de parcourir l'ensemble des dossiers afin de lister les fichiers nommés dont le nom porte la chaine de caracteres SEOexplications, avec une extension xml. Dans ce fichier, nous allons stocker 3 informations essentielle au rédacteur d'articles Joomla (ca c'est moi, et j'en profite pour spécifier que toutes les rédctions d'articles, je les rédige toujours depuis l'administrator, je ne rédige jamais en front office)
  • un nom
  • un tag (le shortcode du plugin)
  • un explication bien entendu

Ainsi, un fichier XML pourrait être de la sorte :

<SEBexplication>
	<nom>SEOExplication</nom>
	<tag>{ici mon tag}</tag>
	<explications>Ce tag permet au plugin ... de ...</explications>
</SEBexplication>

 Le fichier explications.php

C'est ce fichier qui a pour rôle de "détecter" les fichiers d'explications dans le dossier Joomla. Il comprte le code suivant :

<?php

function scanAllDir($dir) {
  $result = [];
  foreach(scandir($dir) as $filename) {
    if ($filename[0] === '.') continue;
    $filePath = $dir . '/' . $filename;
    if (is_dir($filePath)) {
      foreach (scanAllDir($filePath) as $childFilename) {
		  
        $result[] = $filename . '/' . $childFilename;
		  
      }
    } else {
      $result[] = $filename;
    }
  }
  return $result;
}
	
        $files= scanAllDir(JPATH_BASE);
	echo '<div class="seb-admin-explications">';
	foreach($files as $unFichier)
	{
		if (strpos($unFichier, 'SEOExplication')>0)
		{
			$xml = simplexml_load_file($unFichier);
			//echo $unFichier;
			echo '<div class="nom">'.$xml->nom.'</div>';
			echo '<div class="tag">'.$xml->tag.'</div>';
			echo '<div class="explication">'.$xml->explications.'</div>'; } } echo '</div>'; >

 Libre à vous de styliser les class seb-admin-explications, nom, tag et explication pour que votre rendu soit + personnel. Je vous joins toutefosi le CSS utilisé dans mon cas :

.seb-admin-explications {
  border: 2px solid red;
  padding: 1%;
  border-radius: 5px;
  background-color: lightyellow;
}

.seb-admin-explications .nom {
  text-align: center;
  font-weight: bold;
}

.seb-admin-explications .tag {
  float: left;
  margin-right: 2%;
  color: blue;
  font-weight: bold;
}

 Notez que je n'ai pas de style particulier pour la class seb-admin-explications.explication

 

Add a comment
Alors oui je sais, je pourrais utiliser un outil de versionnig pour répondre à mon besoin.
Mais l'idée ici est un peu différente puisque je cherche à générer un fichier ISO, c'est-à-dire une sorte de photographie à un moment T de l'ensemble d'un répertoire et de ses sous dossiers, pour pouvoir éventuellement ultérieurement le réinjecter si des problèmes sur viennent sur cet élément. Généralement, lorsqu'on fabrique un ISO, c'est celui d'un disque, d'une partition, d'un CD/DVD ou, pour les plus vieux comme moi, d'une disquette (3.5 pouces mais aussi 5.25... ! Mais la c'est vieux)
En effet, cette question se pose non pas par rapport à mes développements que je peux tous intégrer dans Git, mais plutôt l'idée est de pouvoir installer sur ma machine un serveur portable web comme µwamp, et pouvoir ultérieurement remonter si, suite à des manipulations ou des mauvais développements voir de mauvaises reconfigurations du serveur, le réinstaller en un clin d'œil.
Vous aurez donc sûrement compris mon analogie, je cherche à faire ce que fait Ghost ou Clonezilla, non pas sur une partition ou un disque dur, mais véritablement sur un sous dossier de l'ensemble du disque dur.
 
Question (rappel) : Comment pourrais-je faire une image d'un répertoire ainsi que ses sous dossier, afin de pouvoir éventuellement le réinjecter si un problème survient lors de mes développements ?
 
Ma réponse:
Avoir des compétences et avoir un petit peu d'expérience Linux m'a véritablement aidé a trouver cette solution. En effet, comprendre ce qu'est une image ISO permet de rechercher plus dans cette direction que dans une autre. Pour rappel, une image ISO c'est une véritable copie bit à bit d'un espace de stockage. Je cherchais donc un équivalent de Ghost ou Clone Zilla, dont c'est el travail mais sur des disquedurs ou des partitions de disques, pour ceux qui travaillent avec des outils libres, mais véritablement appliqué à un sous répertoire de notre disque dur.
En cherchant un peu, grâce notamment à l'excellent site alternatives.net, je suis tombé, depuis la rubrique de clonezilla, sur un outil qui s'appelle Anyburn.
Mais il n'y a pas que cet outil, je vous donne le lien où vous pourrez notamment retrouver l'équivalent de la commande DD sous Linux équivalent de la commande DD sous Linux qui vous permet de fabriquer une image en ligne de commande.
Comme nous travaillons désormais avec des images ISO, nous avons récupéré dans notre fichier ISO une photographie parfaite du répertoire de notre serveur que nous utilisons. Bien entendu, en fonction de vos développements et de leurs quantités qui évolue au fill de vos dééveloppements, prévoyez quand même toutefois relativement de place disponible sur votre disque dur pour faire vos images ISO.

La restauration 

Alors oui je sais, nous ne parlons pas toujours de restauration lorsque nous travaillons sur une image ISO, mais ici c'est un peu particulier car nous sommes quand même relativement proche d'une sauvegarde. Je m'excuse donc sur la terminologie utilisée, pour le moment je ne sais pas quel autre mot prendre.
Depuis votre image ISO, vous pouvez restaurer son contenu à l'aide d'outil particulier, sous Windows, mais aussi en ligne de commande sous Linux, partie que je ne maîtrise pas encore.
Pour faire cette extraction, je vous propose deux solutions, et à première fonctionne avec l'outil WinRAR si vous en avez acheté à licence car WinRAR reste un shareware, la deuxième solution à mon avis à plus simple, c'est de monter votre image ISO comme un volume puisque Windows 10 le permet désormais. Pour effectuer cette opération, il vous suffit de faire un clic droit sur le fichier ISO afin de le monter. Une fois monté, il apparaîtra dans votre poste de travail, vous n'aurez plus qu'à récupérer les informations que vous souhaitez.
Monter une image ISO sous windows
Add a comment
PJ1: modals.css.txt

Le besoin 

Aujourd'hui, nous allons voir comment procéder pour ajouter une fenêtre modale dans notre console d'administration du CMS joomla.
Ce besoin, certes très professionnel, j'en ai besoin pour pouvoir afficher du côté console d'administration, (sans écrire de composant !) un nom de fichier formaté et surtout normalisé. (nouis devons suivre une norme pour nommer nos fichiers de notre documentation
Pour générer ce nom, étant absolument très mauvais en Javascript, je n'ai pas intégré un code JavaScript à un élément Joomla comme un module ou un plugin, mais j'ai véritablement fait un simple fichier HTML, en me basant sur des exemples existants sur Internet. Comme disait Georges Brassens "&wmode=transparent" class="modal_link" data-modal-video="true" data-modal-iframe="true" data-modal-inner-width="95%" data-modal-inner-height="95%" data-modal-class-name="is_video no_title">qu'on ai 20 ans, qu'on soit grand père, quand on est c..."
Nous avons en effet fabriqué une norme de nom de fichier, chacun des fichiers que nous souhaitons mettre à disposition à nos utilisateurs doivent être normés ainsi. Cela permet, s'il y a personne ne connaît pas exactement le nom, de pouvoir quand même faire une recherche avec le moteur de recherche de Joomla RokAjaxSearch sur des morceau du nom du potentiel fichier recherché

Ma réalisation Joomla 

Avant toute chose, je tiens à préciser que ma template utilisée pour ma console d'administration est Isis.
Pour parvenir à répondre à mon besoin, voilà comment j'ai procédé :
 
  1. J'ai commencé par faire un héritage, un fork, une extension, ou tout autre terme que vous souhaitez, du composant cpanel se trouvant dans le dossier de l'administration joomla 3
  2. Ensuite, j'ai édité le fichier de vue suivant : administrator/templates/isis/html/com_panel/panel/default.php afin d'apporter les modifications à la lignes 16.
  3. Je me suis rendu sur le site codepen.io afin de récupérer un exemple de fenêtre modale qui est écrite en pure CSS (ce qui évite d'avoir du javascript à trainer) : codepen.io/ldered/pen/DdeceW pour la fenêtre modale, j'intègre le CSS dans le fichier de template Isis administrator/isis/css/template.css, puis j'intègre ensuite dans le fichier default.php le code HTML correspondant.
  4. Je procède à la modification du code HTML inutile de la description et récupérée dans le modèle de CSS, pour ne garder que les boutons.
  5. Dans les fenêtres modales, j'intègre les fichiers HTML que je souhaite voir afficher. Comme ces fichiers de contiennent que du javascript, une iframe fait parfaitement l'affaire dans la modale. Étant donné qu'il n'y a aucun aller-retour sur le serveur puisque je suis en Javascript, je peux mettre tout ce que je veux dans mes fichiers. Et quand bien même j'aurais besoin d'un aller-retour avec le serveur, je pourrais utiliser la technologie JavaScript Ajax, donc basé côté client, pour combler mon besoin.
  6. Enfin, je corrige où je modifie au besoin et à feuille de style intégrée, de manière à ce que l'intégration ne jure pas trop niveau infographie dans mon code.

Je vous conseille de retoucher le CSS car j'ai l'impression que les boutons natifs de joomla s'appliquent sur le CSS rajouté. Rien de grave mais le style change...

 Fenêtre modale avec formulaire dans la console administration de Joomla - Joomla administrator modal windows
 
 



Add a comment

Encore une question geek de développeur à la con ? Oui peut-être !

Ma problématique

Dans le cadre de mes fonctions, je gère sur notre CMS favoris, un ensemble de fichiers PDF rattachés à un élément au travers d'un simple article Joomla content. Mes articles contiennent plusieurs dizaines de fichiers PDF. Cependant, l'ensemble de ces éléments (un ensemble de matériels techniques) doivent être regroupés entre eux.
Afin de les retrouver, et surtout de les afficher dans un certain ordre bien spécifique, il a fallu que je trouve une solution technique pour pallier ce problème. De plus, au-delà d'un fichier, ces éléments doivent être dans un ordre spécifique (de l'élément utilisé le plus fréquemment à l'élément utilisé le moins souvent), je devais les catégoriser selon deux familles, chacune de ces deux familles devant suivre l'ordre spécifique défini.
Nous avons opté pour cette solution pour sa simplicité et surtout pour ne pas toucher aux cétgories des articles qui nous sert dans la gestion normale de Joomla. Cette façon de faire n'a pour rôle que l'affichage des données sur un article spécifique

Ma réalisation sur Joomla 

Pour afficher l'ensemble de ces éléments dans l'ordre que nous voulons, j'ai commencé par créer un champ personnalisé de type texte. Dans ce champ personnalisé, je vais renseigner une sorte de chemin virtuel au format linux (ce choix est purement arbitraire mais bien pratique) qui va commencer par la catégorie dans laquelle nous devons ranger ses éléments. Concrètement, cette grande catégorie, permet de classer les éléments selon deux onglets sur ma page web.
Les chemins sont donc de la forme : /[GRANDE_CATEGORIE]/catégorie
Comme cette première grande catégorie n'a que deux grandes familles, le chemin va commencer par le nom de cette catégorie, que j'ai volontairement mis entre crochets. Ces crochets permettent simplement visuellement de voir que nous avons spécifié la catégorie au moment de la saisie de la fiche dans Joomla.
À la suite du nom de cette famille que je vais bien mettre entre crochets, afin de définir que nous sommes dans cette famille, je continue ma chaîne de caractères avec un slash, puis je spécifie une chaîne qui va contenir la grande famille. Si des sous-familles sont à créer, il suffit de les spécifier de la même manière avec le caractère séparateur / .
On obtient :
  • /[GRANDE_CATEGORIE]/catégorie
  • /[GRANDE_CATEGORIE]/catégorie/sous-famille
L'idée n'est pas de faire une hiérarchisation des familles mais bien un affichage ordonné par famille et sous familles.

Réalisation du module

Je ne vous partagerai pas le code du module ici car il est plutôt très simple, et surtout je ne l'ai pas sous la main. En effet, comme ces données sont dans un cadre professionnel, tout se trouve à mon travail.  L'idée de cet article est de partager la solution technique de classement autre que le classement par catégories qui me posait soucis (nous voulons garder les catégories Joomla.sans hiérarchisation afin de ne pas perdre nos utilisateurs)
Mais, d'une manière générale, j'ai simplement créé un module qui va permettre de lister l'ensemble des articles dont ce champ personnalisé n'est pas vide, et en fonction de la première chaîne de caractères entre crochets, je sélectionne ou non l'article en fonction que je souhaite et afficher dans la première ou la deuxième grande famille. Bien entendu, j'ai autant de modules que de grande familles.
Comme je n'ai pas besoin d'un affichage sous la forme d'une arborescence, je ne l'ai pas affiché ainsi mais en suivant ce principe d'utilisation avec mes fameux séparateurs, il est tout à fait possible de régénérer un treeview de mes articles en fonction de cette chaîne de caractères.

 



Add a comment

Le besoin

Aujourd'hui nous allons voir comment ajouter un masque de saisie spécifique dans la console d'administration sur un champ personnalisé de type texte, que nous avons déjà créé dans joomla content.

Pour mettre en place ce champ préformaté, je m'appuie sur la bibliothèque jQuery de base, laquelle contient tout ce qu'il faut pour pouvoir spécifier un format de saisie à un champ de type input type = "text".

Principe de fonctionnement,  mise en œuvre

Avant toute chose, il faut connaître le principe de fonctionnement de la bibliothèque maskedit de jQuery pour comprendre mon raisonnement.

Avec la bibliothèque de Jquery, le principe est d'appliquer un masque de saisie à un champ texte, défini au moyen des champs personnalisés de Joomla, qui lui-même contient un id. Le plugin de base contenu dans la bibliothèque jQuery fonctionne de la manière suivante :

  1. on récupère id du champ texte en inspectant le code :
    firefox Px2IQPRHfK
  2. on rajoute un petit bout de code jQuery qui va demander d'ajouter un masque de saisie à ce champ texte.

Mise en œuvre

Désormais que nous savons maintenant comment cela fonctionne, voilà la mise en œuvre que j'ai appliqué pour obtenir mon résultat.

Le premier point est un point de vérification et ne s'inscrit pas tellement dans ma mise en oeuvre. Bien entendu si vous savez que votre joomla intègre déjà la bibliothèque jQuery vous pouvez tout de suite passer au point 2.

  1. Rendez-vous sur la page de votre console d'administration sur laquelle vous souhaiteriez que votre champs de type maskedit soit présent,
  2. Afficher le code et regarder si la bibliothèque jQuery est présente ou non. La copie d'écran ci-dessous a été faite après le rajout de la bibliothèque JQuery.
    firefox zszy90PslT
    Dans mon cas elle l'était car dans Joomla 3 elle est fournie avec. A partir de Joomla 4, et à cause de l'arivée de Javascript 1.5 qui intègre en natif ce que JQuery apporte, JQuery n'est plus jointe à Joomla
  3. Pour pouvoir intégrer des masques de saisie, nous utiliserons un plugin de JQuery (attention, ce n'est pas un plugin Joomla mais bien un plugin de la librairie JQuery !). Nous pourrions fabriquer un plugin Joomla spécifique pour charger ce plugin, mais pour gagner du temps, j'ai préféré l'intégrer directement dans ma template isis (attention, on travaille bien sur la template de la console d'administration !
      Bien entendu vous pouvez faire une substitution du fichier si vous le désirez, ceci est fortement conseillé, moi je ne l'ai pas fait.
  4. Ajouter la ligne (35 sur la cope d'écran ci-dessus) qui fait un lien vers la bibliothèque du plugin jQuery utilisé. Dans mon cas, cette bibliothèque est télécharger "en local" sur mon serveur, ce dernier n'étant pas relié à Internet. Toutefois, vous pouvez pointer sur la bibliothèque distante. Personnellement, je suis pas fan car si un soucis arrive sur le fichier distant, votre masque ne fonctionne plus
    Quant à la librairie JQuery, il me semble qu'elle est absente dans joomla 4.
  5. Ajouter la ligne suivante qui permet de faire un lien sur le plugin jQuery de type masque input.
    Ajouter une bibliotheque javascript dans une console Joomla 3
    Bien entendu, cette bibliothèque, je lui ai au préalable téléchargée car je ne travaille pas sur un réseau connecté. Vous pouvez bien entendu faire un lien direct sur le serveur qui stocke cette librairie. Pour la charger, j'utilise :
    JHtml::_('script', 'jquery.maskinput.js', array('version' => 'auto','relative'=>true)); 
    Pour que cette ligne fonctionne, puisque nous ne spécifions pas de lien absolu, vous devez placer votre fichier js mentionné ci-dessus dans le répertoire Joomla administrateur template Isis JS :
    explorer fF9z93MyJW
  6. Comme nous avons récupéré au point numéro 1 l'ID du champ que nous souhaitons formater, j'ai simplement rajouter le code dans la template d'administration Isis dans le fichier index.php Comme ce plugin doit être lancé à un moment donné, il faut bien lui dire de lancer. Pour faire ce lancement, dans mon fichier index.php dema template, j'ai rajouté le petit code de lancement suivant :
    firefox TZWYAafXAg
  7. Dans le code précédent, vous aurez remarqué, j'ai bien spécifié le nom de mon champ ou plutôt son ID auquel je souhaite appliquer le masque de saisie dans le premier paramètre de la fonction jquery (pour mémoire, la fonction JQuery s'appelle $) auquel on adjoint la fonction mask (en JQuery, les fonctions s'enchainent, il faut le savoir) dans laquelle on passe en paramètre le format du masque.

Que faut il en retenir ?

  1. La première des choses, c'est qu'une fois qu'on a compris le cheminement, ce qui m'a pris du temps je le reconnais, bah finalement ce n'est pas très compliqué
  2. J'aurais pu pour garder "intacte" ma template et procéder au chargement de toutes ces bibliothèque au moyen d'un plugin. Ici j'ai fait "vite" mais pas très propre quand il faut maintenir du code. Tout ca, ça se discute je suis d'accord...
  3. j'aurais aussi pu faire un fork/héritage/substitution du fichier d'index. D'un autre coté, corriger ce fichier permettra de le forker avec déjà l'intégration de la bibliothèque. Je dois dire que je reste perplexe entre le bien faire et les faire bien....
Add a comment

Je me suis demandé, aujourd'hui, si notre CMS favori Joomla intégré en son cœur, un outil de templating intégré.

Rappel sur le templating

 Comme cette terminologie au sein d'un système de gestion de contenu, peut poser un petit souci de sens, je vais commencer par vous rappeler ce qu'est le templating.
Rien à voir avec les templates de Joomla,  la notion de templating doit être considéré dans la vue d'un modèle MVC,.
Le principe de la template permet d'avoir un modèle graphique qui va pouvoir être réutilisé en fonction de différents contenus. Dans le modèle nous allons injecter des chaînes de caractères qui correspondent à ce que nous souhaitons.
Pour faire une analogie extrêmement claire, c'est le même principe qu'un publipostage dans un logiciel de traitement de texte : dans votre logiciel de traitement de texte vous allez faire un "modèle" graphique et/ou textuel de ce que vous souhaitez afficher. A côté de cela, vous allez avoir une source de données, avec des champs définis, et chacun des champs va pouvoir être injecté à l'endroit précis où vous lui avez dit? C'est avec ce système que nous fabriquons des publipostage.
Le templating repose sur le même principe, aller à seule différence près que nous allons injecter au sein d'une page HTML, des chaînes de caractères spécifiques.

La question

Ma question de départ était de savoir si, lorsque nous téléchargeons un Joomla, nous avons déjà intégré une des bibliothèques PHP de templating.
D'après les recherches et ensemble des questions que j'ai posé, la réponse est négative.

Appliquer un système de templating.

Je ne vous cacherai pas que je ne suis pas allé trop loin dans mes recherches de bibliothèques externes de templating, je vais réutiliser je pensecelle que je connais un peu : smarty.
Pour y avoir déjà un petit peu utilisé dans une vie antérieure à Joomla, cet outil vous permet, à la manière de l'utilisation de shortcode dans Joomla, de spécifier à certains endroits les informations que vous souhaitez afficher.
A l'heure où j'écris cet article, je n'ai qu'une vague notion de l'outil. En effet, je l'avais antérieurement regarder de manière très succincte il y a déjà quelques années, car je souhaitais déjà m'y mettre dans un autre contexte de programmation PHP pure et dur.
En regardant et un documentation de Smarty, que vous pouvez trouver en plusieurs langues, en PDF ou au format ZIP, vous pouvez vous rendre compte que le templating avec ses outils et relativement complexe, vous pouvez même intégrer avec des conditionnelles.
Je ne rentrerai pas dans plus de détails, une documentation au format PDF et véritablement très bien faite, mais vous pourrez voir que dans mon cas, je ne vais utiliser une toute petite partie de l'outil. Son utilisation est relativement simple, il suffit de l'intégrer avec un require_once, cette commande ayant pour but de l'intégrer une seule fois dans votre projet, même si vous faites de nouveaux appels à cette bibliothèque, cette commande require_once ne téléchargera et la bibliothèque que la première fois.

 Smarty  vraiment ?

 Si je propose cet outil, c'est parce que je pense, selon moi, que c'est un Rolls-Royce de outils de templating. Cependant, je ne suis encore pas sûr d'utiliser cette bibliothèque particulière car il en existe d'autres, relativement plus simples d'utilisation, mais avec des conditions beaucoup plus simples, elles aussi.

En effet, dans mon cas, je cherche simplement à créer des modèles et à les remplacer par d'autres chaînes de caractères. Pour l'instant je ne suis encore pas complètement certain du choix de mon outil de templating, l'avenir me le dira.

 

Add a comment
Je commence cet article par la définition du terme héritage, car dans la Joomlasphère,  ce n'est pas ce terme "normalisé" qui est utilisé mais on parle plutôt de substitution. On utilise aussi le terme overloading, voire redéfinition. Il est possible d'entendre d'autres termes, tous sont issus de terminologies propres à différents langages de programmation mais le rôle est exactement le même.
 
Pour revenir à la question du pourquoi, le rôle de la surcharge et de pouvoir modifier certains fichiers de vos modules, templates ou encore plugins, tout en gardant l'original. Ainsi, si vous fabriquez un problème ou un bug relativement complexe au cours de vos modifications du code, en supprimant totalement le dossier qui a été créé, Joomla reprendra celui d'origine pour fonctionner correctement. C'est le rôle de la surcharge.

Comment faire une surcharge de vos plugins ?

Je vais commencer par expliquer la surcharge d'un plugin. En effet, pour tout le reste, Joomla propose une interface pour faire une surcharge.
firefox o38YZu9bFC
Toutefois, pour un plugin, rien n'est préconfiguré dans la console d'administration de Joomla. Ainsi, pour overrider un plugin, vous devez vous rendre dans le répertoire de votre plugin sur le serveur, et récupérer les fichiers à surcharger, et effectuer votre surcharge à la main en copiant l'intégralité du dossier de votre plugin se trouvant généralement dans le dossier plugin ->(sous dossier du type)->(dossier de votre plugin) dans votre dossier template->(dossier de votre plugin). Voilà, votre surcharge est faite, et c'est cet ensemble de fichiers qu'il faudra que vous modifiez pour surcharger votre plugin.
L'interface de Joomla propose de faire des substitutions, toutefois, nous ne pouvons substituer que des choses qui sont dans le core de Joomla

Comment faire une surcharge de module ou de composants ?

Une interface graphique se trouve dans le menu extension -> templates -> templates, rentrez dans la tempalte que vous utilisez sur votre site en cliquant sur son nom, sélectionnez le module ou le composant que vous souhaitez surcharger. Ce composant est désormais surcharg, de ce fait, rendez-vous dans le dossier de la template sur votre serveur, vous trouverez le nom de l'élément que vous venez de surcharger dans votre dossier de votre template.
explorer CovcToNixM
 
Je reprécise encore une fois, c'est bien dans les fichiers qui viennent d'être créés par la manipulation que je viens de décrire qu'il faut modifier pour apporter vos propres spécifications dans vos éléments à surcharger. En aucun cas il faut modifier les éléments de départ car en cas de souci, vous ne pourriez pas "revenir en arrière", (sauf éventuellement à avoir effectué avec un logiciel externe de versionning un "commit" comme tout bon développeur).
Add a comment

Hier, je souhaitais trouver une solution simple pour pouvoir comptabiliser le nombre de téléchargement(s) que je vous mets à disposition dans les fichiers ZIP de mes codes-source.

En me renseignant dans mon groupe Joomla, d'aucuns m'ont conseillé le superbe outil de Loïc : UP lomart qui propose en effet la possibilité de comptabiliser le nombre de téléchargements d'un fichier.
Or, la mise en place de cette fonctionnalité m'a posé quelques soucis. En effet, bien que je mettais en place le code comme il est indiqué sur la page d'exemple de ce plugin, je faisais une erreur d'informaticien : je méttais en effet un lien, un chemin complet vers le fichier. En effet, c'est ainsi que je fais dans mon cadre professionnel avec l'outil Joomla content. Ceci explique cela.
J'ai malheureusement contacté et dérangé le développeur pour rien, car j'ai tout simplement regardé comment son code avait été écrit. Et je me suis rendu compte que ce plugin utiliser la fonction PHP glob, j'ai tout de suite compris mon erreur.

Petit rappel sur glob

 Cette fonction PHP Glob, permet de rechercher des chemins qui vérifient un masque. Je ne rentrerai pas dans les détails des paramètres de cette fonction car tout est sur le site php.net. mais en deux mots, il suffit avec cette fonction, dans ce cas précis, de ne passer en paramètre que le nom du fichier sans aucun chemin, et cette fonction va parcourir en quelque sorte le site afin de trouver le fichier. Très malin le développeur !

Application pratique avec up

Vous l'aurez donc compris, comme le développeur utilise cette fonction glob, il suffit tout simplement de ne donner que le nom du fichier que nous souhaitons rechercher. La fonction va permettre de le trouver directement sur le serveur
Je dois dire que Loïc a été très malin de passer par cette fonction pour trouver le chemin de ses fichiers.

Et y a-t-il d'autres avantages ?

Je n'ai pas encore testé, mais je vois déjà un tout petit inconvénient : quid dans le cas où deux fichiers ont le même nom mais sont placés dans deux répertoires différents ? Ce cas existe dans mon cadre professionnel, et ce sont bien deux fichiers totalement différents. Le gros avantage dans mon cas c'est que je peux renommer et j'ai à main totalement sur le nom de mes fichiers, mais il se peut que cela ne soit pas possible et dans ce cas je ne sais pas comment gérer la situation.
Toutefois, Loïc a été très malin de passer par cette fonctionnalitéa car elle permet une simplification maximale dans le cadre d'un plugin, de spécifier un lien vers un fichier à télécharger.

Qu'est-ce que j'en tire ?

Je ne sais pas vous, mais j'aime lire du code PHP, car je comprends certains cheminement intellectuels de développeurs et je prends pas mal d'idées pour mes prochains développements. Alors que vais-je tirer de cet enseignement ?
Dans la mesure où je gère une gestion électronique de documents eux-mêmes électronique, je pense que cette idée va véritablement germer dans mon esprit et je la garde de côté dans mes prochains développements notamment de recherche de fichiers.
Add a comment

Mon Github

slhuilli1's GitHub repositories