Lightning Talks Pro – jd18fr

https://www.joomladay.fr/2018/programme/conferences/lightning-talks-pro

1. Téléchargement

Cette présentation sera téléchargeable sur le site https://www.joomladay.fr/ dès la fin du #jd18fr.

1.1. Ce qu’il NE faut PAS faire avec les ACL !

Marc Studer (@garstud)

1.1.1. ACL ... comme dans la vraie vie

Les ACL doivent être à l’image de votre organisation (entreprise, boutique, association ...)

Chaque extension metier installée correspond a un espace/service de votre activité dans la vraie vie !

Définir des ACL pour chaque service d’activité pour lequel vous devez donner des badges d’accès

Définir des groupes pour chaque équipe !

Ne pas faire Niveau d’accès = groupes !

1.1.2. Les droits & permissions

Le badge vous donne un accès,

c’est a dire rentrer dans la piece, voir et lire (lecture seule) les contenus !

Les permissions/droits, c’est :

Les permissions se règle à 3 niveaux dans Joomla, dans l’ordre suivant :

  1. Configuration globale
  2. puis dans l’extension
  3. puis dans la donnée

1.1.3. Bilan ACL

Pour conclure,

1.2. La TodoList des overrides

Chritian Bardin (@wabaw)

1.2.1. Duplication de Layout

Dupliquer template/html/com_content/defaut.php en faisant nouveau fichier,

Modifier le fichier. Attention, vérifier qu?on travaille sur le bon fichier !

Pour assigner le nouveau layout, on crée un lien de type blog de catégorie et on sélectionne la mise en page, quitte à le mettre en caché dans les paramètres de liens de menu

1.2.2. CF par name ... ou ID

Pour travailler proprement avec les Custom Fields, je préfère travailler sur les ID.

On se positionne sur la ligne de la variable CF au lieu de l?ID

// fields
$customFields = $this->item->jcfields;
foreach ($customFields as $customField) {
    $customFields[$customField->name] = $customField;
}

On travaille sur le 'name’, mais si on change le 'titre’ du CF, le 'name’ change automatiquement !! Hot !

// fields
$customFields = $this->item->jcfields;
foreach ($customFields as $customField) {
    $customFields[$customField->id] = $customField;
}

Et là, on est sur d’être sur l?ID, et le client peut changer le 'titre’ du CF, I don’t care !

1.3. Joomla! et Content Security Policy (CSP)

Comment rendre vos modules/plugins Joomla! compatibles CSP...

Pascal Leconte (pmleconte)

1.3.1. Content Security Policy

  Content-Security-Policy: default-src 'self'

1.3.2. Impact sur Joomla! et ses modules/plugins

âš  Attention : supprimer les styles dans les DIV, mais aussi dans les articles : fini par exemple les commandes style="text-align: justify;" générés par les éditeurs....

👉 Passage des paramètres entre le module et sa librairie JS en utilisant la commande PHP addScriptOptions et son équivalent JS Joomla.getOptions

1.3.3. Version simple

Pour un module mono-copie qui n’est pas inclus dans un article

1.3.3.1. le PHP
$document->addScriptOptions('mod_module',
    array('cookie_duration' => $params->get('cookie_duration', 0),
            'showpreview' => $params->get('showpreview', 'true'),
            'noimage' => JText::_('NOIMAGE'))
    );
1.3.3.2. le Javascript associé
if (typeof Joomla = 'undefined'
        || typeof Joomla.getOptions = 'undefined') {
    console.error('Joomla.getOptions not found!\n
                    The Joomla core.js file is not being loaded.');
}
options = Joomla.getOptions('mod_module');
if (typeof options === 'undefined' ) { // cache Joomla problem
    console.error('mod_module.getOptions not found!');
}

1.3.4. Les tips and tricks

👉 Surveiller les erreurs dans la console de votre explorateur

👉 Joomla! et son cache : Module dans un article :

âš  Attention si votre module est multi-instances, cela se complique...

👉 Petite remarque complémentaire: au niveau sécurité, il est conseillé de faire “disparaître” le mot Joomla de vos pages. Or, la commande addScriptOptions va créer un script avec une classe joomla-script-options.

Par exemple, sur une de mes pages, j’ai :

<script type="application/json" class="joomla-script-options new">{...}}</script>

1.3.5. Les erreurs dans la console

CSP_erreurs

1.3.6. Références

1.4. Laissez vos client/es augmenter vos tarifs

Daniel Dubois (@hatshepsout)

1.4.1. C’est trop cher !

La meilleure solution pour ne pas avoir à répondre à cette objection est de ne pas la provoquer !

Ok, on fait comment dans ce cas ?

classeur1.jpg

classeur2.jpg

classeur3.jpg

1.4.2. Bénéfices

1.5. Le Plugin, le travailleur de l’ombre

Marc Studer (@garstud)

Fonctionnement de Joomla ?

Templates, langues, modules, composant ok ... mais ou sont les plugins ?

1.5.1. Que font les plugins

Et ce n’est que la partie visible de l’Iceberg !

1.5.2. Comment ca marche

Suite à une action, un évenement survient ... tous les Plugins abonnés sont appelés et executés !

... plus de 60 évènements dans Joomla !

1.5.3. Joomla = Flexible CMS

L’interet est de pouvoir interchanger à tout moment une fonction, un comportement :

Ouvrir votre application aux autres développeurs de la communauté qui vont penser à ce que vous n’avez même pas imaginé !

1.5.4. Joomla = Extensible CMS

“Joomla, c’est le concept type de ne pas faire du Web monolithique”

Vous développez le Core d’un composant ... et vous laissez le reste aux plugins !

Ouvrir votre application aux autres développeurs de la communauté qui vont penser à ce que vous n’avez même pas imaginé !

Note : Cela s’applique aussi aux non-développeurs : Privilégiez les extensions proposant des plugins, c’est un gain de pérenité ! (et de maturité au niveau de la conception de l’extension)

1.5.5. Un exemple ? HikaShop !

HikaShop propose plus de 150 évènements !

Plus aucune limite aux possibilités de flexibilité et d’extensibilité de votre boutique !

1.5.6. Bilan Plugin, Le travailleur de l’ombre

Si vous deviez retenir 2 mots, ce serait :

Les plugins c’est rendre Joomla Flexible et Extensible !

1.6. Introduction à la sécurisation de votre site

Christophe Avonture (@cavo789)

1.6.1. Choisir un hébergeur de qualité ð&#159;&#143;&#134;

Les offres ne se valent pas. Fuyez les hébergeurs gratuits, optez pour ceux qui sont à la pointe

1.6.2. Un site par hébergement ð&#159;&#143; 

À moins de gérer vous-même vos serveurs et d’être certain de garantir l’isolation des sites, n’ayez jamais plus d’un site / hébergement.

1.6.3. Ne conservez que le strict minimum ð&#159;&#141;°

Vous n’utilisez plus un composant ? un template ? ... Supprimez-les ! Bannissez les sites /archive, /old, /prototype, ...

1.6.4. Faites un suivi scrupuleux des versions ð&#159;&#148;&#148;

Une nouvelle version de Joomla ? Un éditeur sort une nouvelle version de son composant / template / ... Mettez à jour ! Toujours en PHP 5 ? Pourquoi â&#135;&#146; activez PHP 7 !

1.6.5. Gestion des mots de passe ð&#159;&#145;º

admin / admin ? Optez plutôt pour Chri$t0pH_ / ue40#cp6CmSi1$0@fOuK Un mot de passe est à usage unique. Songez à utiliser des coffres-forts.

1.6.6. Installez un pare-feu ð&#159;&#148;&#144;

Bloquez les tentatives d’intrusions, installez un pare-feu logiciel ou une couche de protection sur votre serveur Apache

1.6.7. Protégez votre propre ordinateur ð&#159;&#146; »

Ayez un antivirus en local, ne stockez pas vos mots de passe dans des fichiers “en clair”, ...

1.6.8. Installez une tâche planifiée ð&#159;&#145;&#147;

Si possible, utilisez un script qui sera planifié dans une tâche CRON sur le serveur pour surveiller les fichiers et être alerté en cas d’ajout / modification.

1.6.9. Utilisez un logiciel de supervision ð&#159;&#145;·

Surveillez vos sites depuis une seule interface de supervision (MyJoomla, SecurityCheck, Watchful.li, ...)

1.6.10. Backups, backups, backups ð&#159;&#147;¦

Prendre des backups, les sauvegarder à distance et les tester.

Voir les présentations de March Dechèvre

1.6.11. Quelques liens ð&#159;&#148;&#151;

1.7. Joomla! : paramètrage de vos modules

Comment rendre le paramètrage de vos modules/plugins Joomla! plus attractifs...

Pascal Leconte (pmleconte)

1.7.1. Moins vide

Exemple : le module standard Articles – Catégorie, onglet “Options de filtrage”

Articles-categories-filtrage

1.7.2. Pourquoi

â&#154;  Attention : cela peut prendre un peu de temps

1.7.3. Subforms, Layout

<field name="detail" label="" type="subform" multiple ="false"
    formsource="/modules/mod_cg_popup/mod_detail.xml"
    groupByFieldset="true" layout="conseilgouz.conseilgouz-table">
</field>

cg-popup

1.7.4. Subforms: récupérez vos paramètres

1.7.4.1. Le XML principal
<field name="detail" label="" type="subform" multiple ="false"
    formsource="/modules/mod_cg_popup/mod_detail.xml"
    groupByFieldset="true" layout="conseilgouz.conseilgouz-table">
</field>
1.7.4.2. Le subform
<?xml version="1.0" encoding="utf-8"?>
<form>
     <fieldset name="section1">
        <field name="width_popup" type="text" default="100" label="WIDTH_POPUP_LABEL"
            description="WIDTH_POPUP_DES"></field>
        <field name="margin_popup" type="text" default="0px,0px,0px,0px" label="MARGIN_POPUP_LABEL"
            description="MARGIN_POPUP_DES"></field>
    </fieldset>
    <fieldset name="section2">
        <field name="color_popup" type="color" default="#ff7a51"
            label="COLOR_POPUP_LABEL" description="COLOR_POPUP_DES"></field>
        <field name="opacity_popup" type="text" default="0.9" label="OPACITY_POPUP_LABEL"
            description="OPACITY_POPUP_DES"></field>
    </fieldset>
</form>
1.7.4.3. Le PHP associé
$detail = $params->get("detail");
$width = $detail->width_popup;
$margin = str_replace(',',' ',$detail->margin_popup);
$opacity = $detail->opacity_popup;
$color = $detail->color_popup;

1.7.5. Installation de vos Layouts

1.7.5.1. Création d’un package d’installation
<files folder="packages">
    <file type="module" id="CG Popup" client="site">
            mod_cg_popup.zip</file>
    <file type="file" id="ConseilGouz Layouts" >
            file_layouts_conseilgouz.zip</file>
</files>
1.7.5.2. Votre fichier d’installation
    <fileset>
        <files target="layouts">
            <folder>conseilgouz</folder>
        </files>
    </fileset>

Dans cet exemple, les fichiers seront installés dans le répertoire /layouts/conseilgouz.

1.7.6. CSS

Chargé à partir de votre fichier language

CG_XML_DESCRIPTION="<link rel="stylesheet" type="text/css"
    href="../modules/mod_cg_parallax/css/css_admin.css"  />...

cg-parallax

1.7.7. Exemple de CSS

.span9 .control-group:nth-of-type(6){
    float:left;width:50%;
}
.span9 .control-group:nth-of-type(7){
    float:right;width:50%;
}
.span9 .control-group:nth-of-type(12){
    float:left;width:50%;
}
.span9 .control-group:nth-of-type(13){
    float:right;width:50%;
}

1.8. Joomla X, la Migration controlée !

Marc Studer (@garstud)

1.8.1. Migrer une version majeure !

Peur des migrations majeures ? pourquoi ca ?

... Ah ! Les extensions !?

... Poussée d’urticaire communautaire à l’approche de Joomla 4 !?

1.8.2. Pre-Update Check de J!3.10

Joomla 3 intègre un écran de vérification pre-upgrade pour vérifier que l’hébergement, PHP, BD ...

Joomla 3.10 intègrera une vérification de compatibilité des extensions !!! Cet écran va vérifier si chaque extension est estampillé “compatible”

Note : Dans le cas d?un No, il est possible que l?extension propose des mises à jour, mais aucune n?est compatible Joomla 4.

1.8.3. Effectuer la migration

1.8.4. Tester dès aujourd’hui

Utilisez les versions 3.9 et 4.0 en ?Nightly Builds? (version de Dev, fournies en l?état, elles ne sont en aucun cas complètement stable !)

https://developer.joomla.org/nightly-builds.html

(ne pas utiliser ces zip installables pour un site de production, mais uniquement pour des tests !)

Le système est déjà testable avec les versions de Dev de J3.9 et J4.0.

Vous accèdez en admin au composant ?Joomla Update? :

https://update.joomla.org/core/nightlies/next_major_list.xml

Cliquez sur Save & Close, Joomla va rechercher la mise à jour et vous affichera l?écran de vérification Pre-update en bas de l?écran, cet écran intègre désormais un bilan des extensions, pour la migration vers Joomla 4. Terrible !

1.8.5. Quid des extensions Joomla 3 et 4

En savoir plus sur Joomla 4, suivre la conf. de Marco Dings

1.9. AMP

Yannick Gaultier – weeblr.com

1.9.1. Accelerated Mobile Pages (AMP)

decouverte-pages-amp.png

1.9.2. Pourquoi?

visibilite-seo.png

1.9.2.0.0.0.1. Comment?
1.9.2.0.0.0.2. Comment?

Inclure interactivité

1.9.2.0.0.0.3. Comment?

Eléments requis

1.9.3. En savoir plus?

Session AMP 11h40 Salle Karnak

2. Merci pour votre attention

... et merci à tous les intervenants qui ont contribué à ces présentations éclairs