Modules
- Détails
- Catégorie : Modules
- PJ1: mod_definitions.zip
- 🖮 URL SourceForge ou Github: https://github.com/slhuilli1/definition
Intro
Aujopurd'hui je vous partage un petit module que j'ai dû écrire dans le cadre de mon travail, afin de pouvoir d'une part prendre en compte les définitions contenues dans un article, mais surtout de pouvoir les recenser à un unique et même endroit. Pour effectuer l'affichage de cette synthèse, dans mon cas, je dédie un artyicle complete spéficique à cette fonctionnalité. Voyons en détail ce fonctionnement...
Philosophie et concept du module
Travaillant dans un cadre technique, mes utilisateurs (tout comme moi d'ailleurs) ne connaissent pas forcément les acronymes techniques, les termes (mots du dictionnaires) employés dans mes articles dans un cadre technique (et oui, le contexte joue beaucoup dans la langue française) et j'ai vite vu la nécéssité de pouvoir synthétiser tout ca dans un article.
Mais vous me connaissez désormaius, j'ai toujours de vieux reflexes merisiens : :une donnée ne doit être définie qu'à un seule endroit. le cas contraire pourrait viter, très vite même (à une virgule près par exemple) engendrer des incohérences des données (vive les CIF ! - Contraintes d'intégrités fonctionnelles).
Applisué à notre cas, je ne voudrais pas avoir un mot à définir dans un article, et avoir un deuxieme article en texte pur où je reprenne le mot et lui donne une definition !
Utilisation et fonctionnement de ce module
Le fonctionnement de ce miodule est super simple sur le principe : après avoir recherché tous les articles publiés (ce qui peut se discuter selon le contexte fonctionnel) de Joomla (personnellement, je n'utilise pas les classes de Joomla mais bien une requete SQL, ce qui me permet de limiter les résultats en fonction de la condition de restriction WHERE), je parcours le curseur retourné. Ma requete SQL prenant en compte la présence du tag de mon plugin dans le champs INTROTEXT, à l'issue de l'execution de ma requele SQL, je suis sûr et certain que mon curseur renferme des articles où des definitions ont été rédigées. (pouyr rappel, un curseur en base de données est un ensemble d'enregistrements)
Le curseur retourné, il ne me suffit plus qu'a le parcourir, élément par éléments, afin, au moyen d'une éxpression rationnelle (regex), d'extraire les informations qui m'interesse.
NOTE : je n'ai abolument rien fait au hasard et me suis appuyé sur deux balises html (version 5) qui donnent un tout petit peut de sémantique à HTML : <dfn> et sa "sous-balise" <abbr>
Reste à votre charge de modifier mon style CSS pour l'adapter à votre code
helper.php
<?php
class modDefinitions{
public static function getDefinitions($params){
$document = JFactory::getDocument()->addStyleSheet("modules/mod_definitions/style.css");
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
$sql = "SELECT #__content.id, #__content.title, #__content.introtext
FROM #__content,#__categories
WHERE `introtext` LIKE '%<dfn%'
AND #__categories.id = #__content.catid
and #__content.state=1
ORDER BY #__content.id DESC";
$db = JFactory::getDBO();
$db->setQuery($sql);
$row = $db->loadObjectList();
$str = '<div class="liste-definitions">';
$str .='<div class="titre">'.$params->get("titre").'</div>';
$i=0;
foreach($row as $uneDef)
{
$re = '/<dfn.*>(.*)<\/dfn>.*<abbr.*title\s*?=\s*?"(.*)".*>(.*)<\/abbr>.*<span\s*class\s*?=\s*?"definition">(.*)<\/span>/msU';
preg_match_all($re, $uneDef->introtext, $matches, PREG_SET_ORDER, 0);
foreach($matches as $unMotDefini)
{
/*echo "<pre>";
print_r($unMotDefini);
echo "</pre>";*/
$str .= "<div class=\"glossary-item\">\r\n";
$str .= "\t<span class=\"article-id\">".$uneDef->id."</span>\r\n";
$str .= "\t<span class=\"article-title\">".$uneDef->title."</span>\r\n";
$str .= "\t<span class=\"mot-defini\">".$unMotDefini[1]."</span>\r\n";
$str .= "\t<span class=\"abbreviation\">".$unMotDefini[3]."</span>\r\n";
$str .= "\t<span class=\"definition\">".$unMotDefini[4]."</span>\r\n";
$str .= "</div>";
}
}
$i++;
$str.= '</div>';
echo $str;
}
}
?>
mod_definitions.php
<?php
defined('_JEXEC') or die;
require_once dirname(__FILE__).'/helper.php';
$hello = modDefinitions::getDefinitions($params);
require JModuleHelper::getLayoutPath('mod_definitions');
mod_definirtion.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>Définitions</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Module recherchant dans la documentation l'ensemnle des mots définis.</description>
<files>
<filename>mod_definitions.xml</filename>
<filename module = "mod_definitions">mod_definitions.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="titre" type="text" default="" label="Titre à afficher" description="" size="10" />
</fieldset>
</fields>
</config>
</extension>
style.css
.glossary-item {
display: flex;
border-bottom: 1px solid white;
padding: 1.5rem 0;
}
.glossary-item dd,
.glossary-item dl {
display: flex;
flex-direction: row;
}
.glossary-item dd {
flex: 3;
}
.glossary-item dl {
flex: 1;
margin-right: 1rem;
}
dd,
dl,
a,
code,
p {
font-size: 1rem;
}
code {
display: inline;
padding: 0 0.125rem;
font-family: monospace;
}
.article-title{
color:red;
font-size:110%;
font-weight:bold;
display:none;
}
.liste-definitions .glossary-item .article-id{
color:red;
}
.liste-definitions .glossary-item .article-id:before{
content:"Article ";
}
.liste-definitions .glossary-item .mot-defini{
font-weight:bold;
padding-left:2%;
padding-right:2%;
}
.liste-definitions .glossary-item .abbreviation::before {
content: "Abbr : ";
font-style: italic;
}
.liste-definitions .titre {
color: white;
font-size: 250%;
text-align: center;
border: 2px solid red;
padding: 2%;
background-color: red;
font-weight: bold;
border-radius: 20px;
}
- Détails
- Catégorie : Modules
Aujourd'hui je vais vous parler d'une possibilité d'exporter vos informations Joomla, quels que soient les composants que vous utilisez, que ce soit du Joomla content, Jevents ou encore K2 ou que sais-je encore,
Mon petit module s'adapte à tous et à tous ces composants possibles et inimaginables sur votre CMS favoris, puisqu'il s'éxécute "directement" sur la base de données.. La seule et unique condition pour que l'export fonctionne, c'est que le contenu de vos composants ou de vos modules soit stocké en base de données. En effet, ce petit module que j'ai installé côté administrateur, ne prend pas en compte les sauvegardes de données dans des fichiers texte, XML ou autre. Il vous sort un fichier texte.
Principe de base
Mise en œuvre
- Détails
- Catégorie : Modules
- PJ1: mod_libandcss.zip
Il y a quelques jours, j'avais écrit un plugin qui permettait de charger des bibliothèques externes, ainsi que des feuilles de style, dans notre Joomla.
- Détails
- Catégorie : Modules
Aujourd'hui je vous présente dans cet article une mamaille, autrement dit en français normal, une bidouille que j'ai réalisé pour le CMS Joomla concernant Joomla content, qui vous permet de créer un petit formulaire web avec un champ texte et un simple bouton, vous permettant de saisir à l'intérieur la référence de votre article Joomla (son ID) couplée à un bouton Valider qui, lorsque vous aurez cliqué, sur ce bouton, vous transportera directement sur la fiche portant le numéro que vous avez saisi.
- Détails
- Catégorie : Modules
- PJ1: mod_entjca.zip
Vous aimez suivre l'activité de la vie économique de votre région ? Vous allez aimer alors mon module !
helper.php
<?php
class modEntJCA{
public static function getEntJCA($jsoncontent){
JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR .'/components/com_fields/helpers/fields.php');
JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models','ContentModel');
$id = JFactory::getApplication()->input->get('id');
JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
$jcFields = FieldsHelper::getFields('com_content.article', $item, true);
return json_decode($jsoncontent, true);
}
}
?>
mod_entjca.php
<?php
defined('_JEXEC') or die;
require_once dirname(__FILE__).'/helper.php';
$valeurGreffe = $params->get("greffe")
$json = file_get_contents('https://opendata.datainfogreffe.fr/api/records/1.0/search/?dataset=entreprises-immatriculees-en-'.date('Y').'&q=&sort=date_immatriculation&facet=siren&facet=forme_juridique&facet=code_ape&facet=ville&facet=region&facet=greffe&facet=date_immatriculation&facet=statut&refine.greffe='.$valeurGreffe);
$hello = modEntJCA::getEntJCA($json);
require JModuleHelper::getLayoutPath('mod_entjca');
$document = JFactory::getDocument()->addStyleSheet("modules/mod_entjca/style.css");
echo "<div style=\"text-align:left;\">";
foreach($hello["records"] as $une_entreprise)
{
echo '<div class="une-entreprise">';
echo '<div class="titre">'.$une_entreprise["fields"]["denomination"].'</div>';
echo '<div class="url-fiche-identite"><a href="'.$une_entreprise["fields"]["fiche_identite"].'" target="_blank">'.$une_entreprise["fields"]["fiche_identite"].'</a></div>';
echo '<div class="statut-entreprise">'.$une_entreprise["fields"]["statut"].'</div>';
echo '<div class="denomination">'.$une_entreprise["fields"]["denomination"].'</div>';
echo '<div class="siren">'.$une_entreprise["fields"]["siren"].'</div>';
echo '<div class="date_immatriculation">'.$une_entreprise["fields"]["date_immatriculation"].'</div>';
echo '<div class="ville">'.$une_entreprise["fields"]["ville"].'</div>';
echo '<div class="geolocalisationLatitude">'.$une_entreprise["fields"]["geolocalisation"][0].'</div>';
echo '<div class="geolocalisationLongitude">'.$une_entreprise["fields"]["geolocalisation"][1].'</div>';
echo '<div class="adresse">'.$une_entreprise["fields"]["adresse"].'</div>';
echo '<div class="code_postal">'.$une_entreprise["fields"]["code_postal"].'</div>';
echo '<div class="departement">'.$une_entreprise["fields"]["departement"].'</div>';
echo '<div class="devise">'.$une_entreprise["fields"]["devise"].'</div>';
echo '<div class="nic">'.$une_entreprise["fields"]["nic"].'</div>';
echo '<div class="forme_juridique">'.$une_entreprise["fields"]["forme_juridique"].'</div>';
echo '<div class="region">'.$une_entreprise["fields"]["region"].'</div>';
echo '<div class="num_dept">'.$une_entreprise["fields"]["num_dept"].'</div>';
echo '<div class="date_de_publication">'.$une_entreprise["fields"]["date_de_publication"].'</div>';
echo '<div class="date_immatriculation_origine">'.$une_entreprise["fields"]["date_immatriculation_origine"].'</div>';
echo '<div class="greffe">'.$une_entreprise["fields"]["greffe"].'</div>';
echo '<div class="etat">'.$une_entreprise["fields"]["etat"].'</div>';
echo '<div class="code_greffe">'.$une_entreprise["fields"]["code_greffe"].'</div>';
echo '<div class="etat_pub">'.$une_entreprise["fields"]["etat_pub"].'</div>';
echo "</div>";
}
echo "</div>";
mod_entjca.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>Creation entreprises locale</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Module listants les entreprises créées dans le 54.</description>
<files>
<filename>mod_entjca.xml</filename>
<filename module = "mod_entjca">mod_entjca.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="noteDpt" type="note" label="Note" description="Veuillez saisir le nombre représentant le département (Ex. : 54)" />
<field name="greffe" type="text" default="NANCY" label="Greffe (https://opendata.datainfogreffe.fr/pages/mongreffe/)" description="Nom du greffe" size="10" />
</fieldset>
</fields>
</config>
</extension>
style.css
.url-fiche-identite a{
color:red;
}
.statut-entreprise::before{
content : "Statut de l'entreprise : ";
color:red;
}
.denomination::before{
content : "Dénomination de l'entreprise : ";
color:red;
}
.siren::before{
content : "Siren de l'entreprise : ";
color:red;
}
.date_immatriculation::before{
content : "Date d'immatriculation de l'entreprise : ";
color:red;
}
.ville::before{
content : "Ville de l'entreprise : ";
color:red;
}
.geolocalisationLatitude::before{
content : "Latitude : ";
color:red;
}
.geolocalisationLongitude::before{
content : "Longitude : ";
color:red;
}
.adresse::before{
content : "Adresse postale de l'entreprise : ";
color:red;
}
.code_postal::before{
content : "Code postal de l'entreprise : ";
color:red;
}
.departement::before{
content : "Département de l'entreprise : ";
color:red;
}
.devise::before{
content : "Devise bancaire de l'entreprise : ";
color:red;
}
.nic::before{
content : "NIC de l'entreprise : ";
color:red;
}
.forme_juridique::before{
content : "Forme juridique de l'entreprise : ";
color:red;
}
.region::before{
content : "Région de l'entreprise : ";
color:red;
}
.num_dept::before{
content : "Numéro du département : ";
color:red;
}
.date_de_publication::before{
content : "Date de publication : ";
color:red;
}
.date_immatriculation_origine::before{
content : "Date immatriculation origine : ";
color:red;
}
.greffe::before{
content : "Greffe : ";
color:red;
}
.etat::before{
content : "Etat en cours : ";
color:red;
}
.code_greffe::before{
content : "Code greffe : ";
color:red;
}
.etat_pub::before{
content : "Etat de publication : ";
color:red;
}
.url-fiche-identite::before{
content : "Lien : \1F517";
color:red;
}
.une-entreprise{
margin-bottom:10px;
border:2px solid black;
}
.titre{
text-align:center;
font-weight::bolder;
font-size:250%;
margin-top:2%;
margin-bottom:2%;
}
- Détails
- Catégorie : Modules
Je ne sais pas vous, ou si c'est du faiit que je sois issu d'un monde parfait en terme d'ergonomie (euh, mac OS parfait ? oui ! et j'assume) mais j'aime reproduire des fonctionnalités dans mes application qui restent utiles. Je ne pense même pas simplement lancer une requete SQL sur PHPMyadmin sur mon serveur juste pour lister les articles Joomla non taggés. Bon je dois aussi dire que je n'ai pas accès à phpmyadmin sur mon environnement pro. Du coup, j'écris mes modules qui me lancent mes requetes désirées.
Icic, la requête (écrite non sans mal) permet de lister les articles non taggés. Elle ressemble à ca (j'ai mis les explications dans des phylactères) :
helper.php
<?php
class modArticleSansTag{
public static function getArticlesNonTagges(){
$document = JFactory::getDocument()->addStyleSheet("modules/mod_ArticlesSansTag/style.css");
$db=JFactory::getDBO();
$sql="select DISTINCT (doc_content.id), doc_content.title
FROM doc_content
left join doc_contentitem_tag_map
on doc_contentitem_tag_map.core_content_id=doc_content.id
where doc_contentitem_tag_map.core_content_id is null
order by doc_content.id desc";
$db->setQuery($sql);
$row = $db->loadRowList();
//Lien vers l'admin : administrator/index.php?option=com_content&view=article&layout=edit&id=3264
return $row;
}
}
?>
mod_articlessanstag.php
<?php
defined('_JEXEC') or die;
require_once dirname(__FILE__).'/helper.php';
$ArticlesSansTag = modArticleSansTag::getArticlesNonTagges();
echo '<div id="description-article-sans-tag">';
Texte de l'info-bulle
echo "</div>";
echo '<ul>';
foreach($ArticlesSansTag as $article)
{
echo '<li><a href="/index.php/informatique/joomla-12?id='.$article[0].'">'.$article[1].' (Article n° '.$article[0].')</a>';
echo '</li>';
}
echo "</ul>";
mod_articlessanstag.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>Afficher les articles sans tags</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Afficher les articles sans tags.</description>
<files>
<filename>mod_ArticlesSansTag.xml</filename>
<filename module = "mod_ArticlesSansTag">mod_ArticlesSansTag.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="description" type="textarea" default="" label="Paragraphe d'introduction" description="Vous pouvez sépcifier ici quelques lignes qui introduiront le module" rows="10" cols="5" filter="raw"/>
</fieldset>
</fields>
</config>
</extension>
- Détails
- Catégorie : Modules
- PJ1: mod_javascript.zip
A la demande générale d'un seul et unique développeur et utilisateur de Joomla, qui m'a beaucoup dépanné dans mes projets, cet utilisateur avancé m'a demandé s'il était possible de lui développer un outil permettant de sélectionner au travers de l'interface d'administration, l'ensemble des bibliothèques JavaScript qu'il souhaite intégrer dans ses projets. De mon côté, j'ai déjà eu un besoin similaire de cette fonctionnalité mais plutôt pour mes fichiers CSS. Ainsi, ce module va intégrer CSS et JavaScript externes à vos différentes pages selon les conditions de Joomla. Voyons son fonctionnement.
Philosophie
Utilisation et fonctionnement de ce module.
Affectation et conditions
Débogage
- Détails
- Catégorie : Modules
Encore une fois, je ne vais pas vous pouvoir vous montrer d'exemple puisque je n'utilise pas sur mon site l'ensemble Joomla Content, au profit de K2.
Mais dans mon cadre professionnel où je privilmégie les choses simples, donc natives, je ne fais que du Joomla content.
C'est la raison pour laquelle j'ai écrit ce petit module qui vous permet de lister les articles d'un site Joomla, classé par ordre alphabétique, mais surtout avec une rupture sur la première lettre du titre de article. Pour ceux qui l'ignoreraient, une rupture et le moment où, dans une liste issue généralement d'une base de données, une et une seule information d'un enregistrement change.
Dans notre cas, le changement, c'est-à-dire la rupture, se fait sur la première lettre du titre de l'article. En d'autres termes, vous allez avoir classé, avec une organisation par première lettre, l'ensemble de tous vos articles Joomla content, avec en en-tête pour chacun des groupes affichés, la première lettre ou plutôt le premier caractère du titre de l'article (le titre de l'article pouvant commencé par un chiffre, un caractères UTF-8 type icones,.... ou autre. Le module recherchant toutes ces informations automatiquement, si la première lettre de l'alphabet commence par un caractère comme une double cote, vous allez avoir dans votre liste, un groupe d'articles dont en tête sera une double cote. Bien que fonctionnel, ce module nécessite toutefois une bonne manipulation des données et notamment des titres des articles pour que le rendu soit logique et cohérent.
- Détails
- Catégorie : Modules
Aujourd'hui je vous présente un outil que j'ai développé pour notre CMS favoris Joomla qui vous permet, grâce au navigateur web chrome uniquement, de transformer chacun de vos articles Joomla Content en un fichier PDF ! Je pensais que c'étati impossible, alors je l'ai fait !
CHROME
La commande .bat générique
JOOMLA
Fonctionnement
CONFIGURATION DU MODULE
- dans un premier temps vous allez spécifier le chemin dans lequel votre Fichier de script généré doit être enregistré,
- dans un deuxième temps vous spécifierez, et cela est essentiel, le chemin d'accès à votre logiciel chrome.
Je n'ai fait des tests que sous Windows, peut-être faudrait-il faire des recherches pour les autres systèmes d'exploitation en terme de chemin d'accès à Chrome. Une fois ces informations configurées, vous n'aurez plus qu'à créer un module dans un article accessible uniquement aux administrateurs par exemple, et une fois ce module positionné sur votre article, vous devrez simplement lancer l'article sur lequel votre mois de déposé. Vous obtiendrez ainsi un script généré sur votre machine, avec le chemin d'accès Chrome que vous avez spécifié dans la console d' administration de l'outil, mais aussi vous aurez sous vos yeux le script qui a été généré.
Faites toutefois attention si vous avez des dizaines de millions d'articles sur votre Joomla, au time out. Dans le cas où le Time Out est trop court, j'ai préconfiguré 4 du fichier helper.php un time out à 0. Ce n'est pas très propre, mais dans la mesure où mon outil ne travaille que sur un serveur local, je n'ai que faire des considérations purement web.
mod_chromepdf.php
<?php
defined('_JEXEC') or die;
require_once dirname(__FILE__).'/helper.php';
$hello = modChromepdf::getScript($params);
require JModuleHelper::getLayoutPath('mod_chromepdf');
helper.php
<?php
class modChromepdf{
public static function getScript($params){
set_time_limit(0);//Ca peut etre très long !
$query = "SELECT * FROM #__content where state=1";
$db = JFactory::getDBO();
$db->setQuery($query);
$articles = $db->loadObjectList();
$a=array();
$i=0;
foreach($articles as $article){
$url = 'http://localhost/doc/Joomla_3915-Stable-Full_Package_French_v1/index.php?option=com_content&view=article&id='.$article->id;
//echo 'ID:' . $article->id . ' Title: ' . $article->title."<br>";
$ligne = '"'.$params->get("chemin_chrome").'" --headless --disable-gpu --print-to-pdf=c:\Users\33651\temp\pdf\_chrome_'.$article->id.'.pdf --no-margins "'.$url.'"';
echo $ligne.'<br>';
$a[$i] = $ligne;
$i++;
}
$fp = fopen('modules/mod_chromepdf/script.bat', 'w+');
foreach($a as $ligne){
fwrite($fp,$ligne."\r\n");
}
fclose($fp);
echo "Vous pouvez télécharger le script .BAT à lancer en ligne de commande <a href='modules/mod_chromepdf/script.bat' target='_blank'>ici</a>";
}
}
?>
mod_chromepdf.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>Chromepdf</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Module préparbt les commandes Chrome pour exporter chaque article en pdf</description>
<files>
<filename>mod_chrommepdf.xml</filename>
<filename module = "mod_chrommepdf">mod_chrommepdf.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="chemin_local" type="text" default="C:\Users\33651\Desktop\exportHTML\" label="Chemin local" />
<field name="chemin_chrome" type="text" default="" label="Chemin local du fichier chrome.exe" />
</fieldset>
</fields>
</config>
</extension>
- Détails
- Catégorie : Modules
Après avoir regardé sur la JED les différents modules gratuits de générateur de QR Code, et après les avoir bien entendu téléchargé et analysé un tout petit peu le code de ces modules, je suis fort surpris de voir que beaucoup d'entre eux faisaient appel à un web service externe !
Qu'elle ne fut pas ma surprise d'apprendre et de voir ceci, lorsque l'on sait qui existe des bibliothèques PHP toutes faites permettant de générer des codes 3D.
Fort de ce constat, je m'empresse de regarder sur l'excellent site PHPClasses si quelqu'un n'aurait pas déjà écrit une classe toute faite permettant la génération de QR Code de manière autonome et sans connexion au net. bah oui, tout le monde ne bosse pas avec un e connexion internet ! loin de là.
Cette absence de connexion me donne une problématique supplémentaire : je dois, moi, oui oui bien moi, travailler sans API !!! Vous avez bien lu !!! C'est quand même fort pour LE gars qui s'amuse sur son site web avec !
Partant de ce constat, et donc sans que l'on soit tributaire d'un web service externe, je me suis mis à intégrer une bibliothèque PHP permettant la génération d'une image de ce type.
Le gros avantage à cette méthode, c'est que nous ne dépendons plus d'un web service externe, si ce dernier vient à tomber en panne, votre site continue de fonctionner de manière tout à fait normal puisque la bibliotheque reste sur VOTRE serveur ! Sans compter, comme je le disais, en cas de non connexion au net... ca continue de marcher
Nous allons donc voir dans ce module comment implémenrter et la bibliothèque génératrice du QR code. Je ne rentrerai pas dans le détail de la bibliothèque car je n'en suis pas auteur, mais je vais vous expliquer comment je l'ai intégré grâce à mes commentaires.
Encore un point. Est ce que je triche ? Oui un peu je l'avoue car les QRCodes sont généré en tant que fichiers puis affichés dans la page. Ils devraient être affichés à la volée. Cela dit, chose que je n'ai pas faite, il suffit de supprimer les fichiers générés dans le code du module.
helper.php
<?php
class modqrcodecurrentpage{
public static function getqrcode(){
❓
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
❓
include('phpqrcode/qrlib.php');
❓
$input = JFactory::getApplication()->input;
❓
$id = $input->getInt('id',0);
❓
QRcode::png($url, 'modules/mod_qrcodecurrentpage/'.$id.'.png');
❓
echo '<img src="/modules/mod_qrcodecurrentpage/'.$id.'.png">'; } } ?>
mod_qrcodecurrentpage.php
<?php
defined('_JEXEC') or die;
require_once dirname(__FILE__).'/helper.php';
❓
$h
ello = modqrcodecurrentpage::getqrcode();
❓
require JModuleHelper::getLayoutPath('mod_qrcodecurrentpage');
mod_qrcodecurrentpage.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
<name>QR Code page courante</name>
<author>sebastien lhuillier</author>
<version>1.0.0</version>
<description>Affiche le qrcode sans webservice externe.</description>
<files>
<filename>mod_qrcodecurrentpage.xml</filename>
<filename module = "mod_qrcodecurrentpage">mod_qrcodecurrentpage.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
</files>
</extension>
Add a comment
Mon GitHub
Voyant que l'intégration du flux RSS ralentissait tout mon site, voisi le simple lien de mon flux RSS : Mon GitHub