HOME > RSS > BLOGS France > [SPIP - contrib]

R S S : [SPIP - contrib]


PageRank : 7 %

VoteRank :
(0 - 0 vote)





tagsTags: , , , , ,


Français - French

RSS FEED READER



Date de création

https://contrib.spip.net/GNU-General-Public-Licence-9-9-9-9-9-9-9-9-9-9-9play episode download
15 January, by nicod_[ —]

Un plugin qui ajoute une date de création sur tous les objets éditoriaux.

Ce plugin répond au besoin exprimé dans ce ticket : https://core.spip.net/issues/2173

A l'installation, il crée automatiquement un champ « date_creation » sur toutes les tables d'objets éditoriaux, si ce champ n'existe pas déjà, sur les objets natifs de SPIP (articles, auteurs, rubriques...) comme sur les objets créés par des plugins.

En cas de création d'un nouvel objet (lors de l'installation d'un nouveau plugin), ce champ y sera également ajouté.

La date de création est renseignée automatiquement à la création d'un nouvel objet, depuis le pipeline post_insertion().
Elle n'est ensuite plus modifiée.

La date de création est affichée sur la page de chaque objet dans l'espace privé.

Utilisation dans les squelettes

Pour chaque boucle sur un objet éditorial, on peut donc utiliser :

  • le critère {par date_creation} pour classer les objets par date de création,
  • la balise #DATE_CREATION pour afficher cette date.

Astuce : quand vous installez ce plugin sur votre site, les objets existants n'auront pas de date de création. Concrètement elle sera égale à '0000-00-00 00:00:00' dans la base de données.

La balise [(#DATE_CREATION|affdate)] afficherait alors : 0000.

Pour tester si une valeur de date est bien présente, et ne l'afficher que dans ce cas, vous pouvez tester la valeur de #DATE_CREATION|intval, qui doit retourner autre chose que 0 si une date est présente [1].

Exemple :

  1. [(#DATE_CREATION|intval|oui)
  2. [<:date_creation:date_creation:> (#DATE_CREATION|affdate)]
  3. ]

Télécharger

Cette astuce est valable pour tous les champs de date dans les squelettes.

Configuration

Quelques constantes peuvent être définies pour masquer les dates de création dans l'espace privé, si vous ne souhaitez pas les voir apparaître :

_MASQUER_DATE_CREATION pour les masquer partout,
_MASQUER_DATE_CREATION_NULLE pour masquer les dates non renseignées,
_MASQUER_DATE_CREATION_BIDULE pour les masquer sur les objets bidules.


[1] Ce n'est pas tout à fait exact pour l'année 0, mais on ne vas pas chipoter :).


Bouquinerie V2 : guide de l'utilisateur

3 January, by Peetdu[ —]

Configuration

quels contenus
Selon la maquette adoptée pour votre site, vous pouvez décider que certains éléments des livres ou auteurs de livre ne sont pas utilisés.

Vous trouverez dans la page de configuration du plugin la possibilité de sélectionner ou non certains des éléments proposés.



multilinguisme
Il est possible de gérer la même fiche livre en plusieurs langues par le biais du mécanisme multilingue de SPIP : Configuration -> Multilinguisme.

Gestion des auteurs

Une fois votre fiche créée, vous pouvez préciser le où les auteurs du livre ainsi que le rôle de chacun d'eux.

  • écrivain (par défaut)
  • traducteur
  • illustrateur
  • préfacier
  • postfacier

Un point en particulier pour les traducteurs
Si vous ajoutez un traducteur, vous pouvez préciser dans le champ « Traduit de… » la langue d'origine du livre.

Gestion des éditeurs

Trois options possibles :

  1. Votre site est celui d'un éditeur. Rien à faire donc ;
  2. Vous voulez afficher le nom du ou des éditeurs. Dans la page de configuration, vous activez le champ « Éditeur(s) » ;
  3. Votre catalogue de livre comprend des références à plusieurs éditeurs et pour chacun d'eux vous voulez une description et la possibilité de créer une page avec la liste des livres. Dans ce cas, utilisez les mots-clés [1].

Date de parution et nouvelles éditions

Une fois votre fiche livre créée, vous pouvez préciser la date de parution et éventuellement la date d'une nouvelle édition.
Si vous avez activé le champ « Mention nouvelle édition » vous pouvez également donner des précisions quand à cette nouvelle édition tel que « 2e édition revue et augmentée » par exemple.

Classer vos livres

La notion de catalogue est prévue via le mécanisme de rubrique de SPIP.
Il vous suffit donc de créer une arborescence de thèmes pour ensuite ranger vos fiches livre.

  • Catalogue
    • littérature française
    • littérature étrangère
    • histoire
    • Essais
    • Beaux livres

…par exemple.

Si vous avez un catalogue avec de (très) nombreux thèmes, le plugin Rubriqueur peut vous faire gagner du temps.

Collection et volume (N° de tome)

Collection peut également servir pour définir un titre de série.
Volume peut également servir pour le numéro de tome d'une série.

Couvertures du livre, photo d'auteur et copyright

Par défaut, les fiches Livre et Auteur de livres proposent respectivement la possibilité de charger la couverture du livre et la photo de l'auteur.

Pour la 4e de couverture, vous pouvez activer la fonction 'logo de survol' fourni nativement pas SPIP.
Pour cela, dans l'espace privé, aller dans Configuration -> Contenu du site, et dans le Bloc « Les logos », activer l'option 'Utiliser les logos de survol'.

Dans la cas d'une utilisation plus avancée, vous pouvez vous servir du plugin Rôles de documents

Si vous avez besoin d'ajouter le copyright pour les photos d'auteurs, je vous recommande d'utiliser le plugin Titre de logo

Caractéristiques

ISBN : le plugin fourni une typo permettant d'afficher le code barre d'une fiche livre.

Rien de particculier sur les champs Nombre de pages, Type de reliure, Largeur, Hauteur, Poids.

Si vous activez le champ Prix, vous pouvez alors aussi utiliser les fiches livre dans la cadre d'un site de e-commerce. Vous aurez alors besoin des plugins API Prix, Paniers, Commandes et Banque&paiement


[1] Activez les mots-clés dans Configuration > Contenu du site > Utiliser les mots-clés, puis créez un Groupe intitulé « Editeurs » et associez-le aux Livres


Sitemap d'actualités

https://contrib.spip.net/GNU-General-Public-Licence-9-9-9-9-9-9-9-9-9-9-9play episode download
December 2017, by erational, RastaPopoulos[ —]

Ce plugin fournit un fichier sitemap dédié aux actualités du site.

Pour que les articles soient acceptés dans un agrégateur comme Google Actualités, il faut déclarer un fichier Sitemap conforme à certains critères précis :

  • Contenus agés de moins de 2 jours
  • Limite de 1000 éléments listés,
  • etc.

Une fois le plugin activé, le plugin fournit une URL que l'on peut déclarer dans des outils comme Google webmasters
http://site.tld/spip.php?page=sitemap_news.xml

Attention : dans le cas de Google actualités, avant de déclarer votre sitemap actualités, il faut que votre site figure déjà dans les sites retenus dans google actualités
https://support.google.com/news/publisher/answer/74288


AutoLang : Aiguiller le visiteur selon sa langue de navigateur

https://contrib.spip.net/GNU-General-Public-Licence-9-9-9-9-9-9-9-9-9-9-9play episode download
December 2017, by HAPpy, RealET[ —]

Un moyen simple d'afficher un site dans la langue désirée par le visiteur

Un peu de théorie

Tous les navigateurs web peuvent être configurés par leur utilisateur pour indiquer leurs préférences linguistiques [1].

Cette information est transmise aux serveurs web à chaque requête afin que le site web concerné puisse en tenir compte.

C'est ce que traite ce plugin.

Pré-requis

  • un site web sous SPIP
  • avec le multilinguisme activé
  • avec un #MENU_LANG dans le squelette quelque part pour permettre au visiteur de changer sa langue de navigation ; ou mieux encore, utiliser Menu de langues sous forme de liens.
  • et probablement avec $forcer_lang=true; dans config/mes_options.php [2]

NB : ce plugin a été testé avec succès avec le squelette SoyezCréateurs.

Fonctionnement

Une fois activé — si l'utilisateur n'a pas déjà visité le site et indiqué une langue préférée via le menu de langue du site — le plugin détecte la liste des langues passées par le navigateur au site, et prend :

  • la première langue du site correspondant à un préférence de l'internaute
  • à défaut, la langue par défaut du site

Après ça, le visiteur peut bien évidemment choisir une autre langue de navigation via le menu de langue du site.


[1] Par exemple : de préférence du français, et puis sinon de l'anglais, et enfin de l'allemand.

[2] Ce plugin n'a été testé que dans ce contexte, mais si les retours disent que ça n'est pas nécessaire, l'article sera modifié en conséquence.

L'icone de ce plugin vient du projet Language Icon.


Plugin 'macrosession' : usage optimisé et extension des données de session

https://contrib.spip.net/GNU-General-Public-Licence-9-9-9-9-9-9-9-9-9-9-9play episode download
December 2017, by JLuc[ —]

Ce plugin est issu d'une interrogation et vise à répondre au besoin associé :
Quels sont les outils pour écrire des squelettes très personnalisés selon l'auteur connecté, en évitant de créer un cache différent pour chacun de ces auteurs ?

Pour bien s'en servir il est souhaitable de bien comprendre le mécanisme de cache de SPIP et les articles suivants :
- SPIP, PHP et Javascript sont dans un bateau
- Utilisation de la balise #SESSION et optimisation
- Du php dans le squelette à la place de #SESSION ou #CACHE 0
- Optimiser les performances de SPIP

L'état actuel de ce plugin est « test ». Actuellement il n'y a pas de bug connu mais vos retours sont bienvenus.

Nouvelles balises #_SESSION et compagnie

Attention macros !

Notez le '_' au début de #_SESSION !!

Ces balises sont des macros php, c'est à dire qu'elles insèrent un appel à php dans le code compilé, au lieu d'insérer le résultat html comme le font la plupart des balises. C'est ainsi qu'elles permettent de court-circuiter le mécanisme de cache SPIP lorsqu'il est inadapté.

Le fait que ces balises sont en fait des macros a des conséquences importantes, présentées plus loin, et c'est pour bien le rappeler que leur nom commence par un _.

Balise #_SESSION

#_SESSION donne accès aux données de la session, c'est-à-dire dont la valeur dépend de la session, mais à la différence de #SESSION, la balise #_SESSION ne crée pas un cache SPIP pour chaque visiteur : elle insère un code php dont le résultat n'est pas mis en cache, et qui cherche le résultat à chaque affichage de la page. De plus, la balise #_SESSION permet d'accéder à des données de session étendue, qui ne sont pas présente dans la session SPIP de base. Cette seconde fonctionnalité est présentée plus loin.

Dans un squelette, #_SESSION{nom} insère le nom de l'internaute connecté s'il y en a un.

Parce que c'est une macro, on ne peut pas appeler un filtre sur cette balise. Pour compenser cela, la balise propose un mécanisme interne pour appeler un filtre : il suffit de le passer e deuxième argument.

Par exemple : #_SESSION{nom,strlen} renverra la longueur du nom de l'internaute connecté.

Il est possible de passer 1 ou 2 arguments supplémentaires au filtre.
Par exemple #_SESSION{anciennete,plus,3} renverra l'ancienneté + 3.

Balises de test #_SESSION_SI, #_SESSION_SINON, #_SESSION_FIN

Il est très fréquent de devoir tester une valeur de session du visiteur connecté et produire un affichage différent selon sa valeur.

- #_SESSION_SI{nom} produit le bloc php qui ouvre un test.

- #_SESSION_SINON produit le bloc php <?php } else { ?>

- #_SESSION_FIN produit le bloc php qui ferme un test : <?php }; ?>

Exemple

À la place de

  1. <?php
  2. if (isset($GLOBALS['visiteur_session']['nom'])
  3. AND $GLOBALS['visiteur_session']['nom'] )
  4. { ?>
  5. Bonjour <?php echo $GLOBALS['visiteur_session']['nom']; ?>

  6. <?php } else { ?>
  7. Voulez vous vous connecter ?

  8. <?php }; ?>

Télécharger

on écrira :

  1. #_SESSION_SI{nom}
  2. Bonjour #_SESSION{nom}

  3. #_SESSION_SINON
  4. Voulez vous vous connecter ?

  5. #_SESSION_FIN

Télécharger

Si vous trouvez ça plus lisible et plus facile à écrire, ce plugin est fait pour vous !

#_SESSION_SI avec comparaisons de valeur

Il est également possible de faire des comparaisons avec ==, != , >, <, >= et <= :

- #_SESSION_SI{nom,==,Linda} sera vérifié si le nom de l'internaute connecté est « Linda ».

- ,K}>#_SESSION_SI{nom,>,K} sera vérifié pour tous les noms qui viennent après la lettre K

#_SESSION_SI avec filtres

Comme avec #_SESSION il est possible d'appliquer un filtre avant de tester la valeur :
#_SESSION_SI{email,mail_est_valide}mail_est_valide est un filtre maison qui teste si un email est valide.

On peut également passer 1 ou 2 arguments supplémentaires au filtre

Les filtres suivants peuvent également être utilisés :
- ! ou non : négation de la valeur du champ trouvé.
- ? ou choixselon : renvoie le 1er argument suivant, ou le 2e, selon que la valeur est nulle ou non.

Si les variations syntaxiques permises par ce plugin sont insuffisantes pour les besoins de vos squelettes, il vous sera possible de créer un filtre maison pour tester ce qu'il faut comme il faut.

Emboîtements
On peut emboiter les structures de test à volonté.
Par exemple ici un emboitement de 3 niveaux de test :

  1. Emboitements

  2. #_SESSION_SI
  3. #_SESSION_SI{nom}
  4. le nom existe
  5. #_SESSION_SI{nom,==,Linda}
  6. et vaut bien Linda
  7. #_SESSION_SINON
  8. et ne vaut pas Linda. Il vaut #_SESSION{nom}.
  9. #_SESSION_FIN
  10. #_SESSION_SINON
  11. il y a un visiteur mais il n'a pas de nom !
  12. #_SESSION_FIN
  13. #_SESSION_SINON
  14. Vous n'êtes pas connecté...
  15. #_SESSION_FIN

Télécharger

Accès à des données de session étendues

Selon le site ou l'application, il est possible d'accéder avec #_SESSION à des données relatives à l'internaute connecté, même si ces données ne sont pas dans sa session. Les données de cette session étendue peuvent être calculées à partir des données de session déjà présentes, ou stockées dans une table spécifique de la BDD, dans une table externe, ou issus d'un autre serveur quelque part sur le net et accédées à travers une API REST.

Pour cela un pipeline SPIP session_get a été défini.
Il reçoit un tableau avec 2 entrées :
- champ contient le champ recherché,
- visiteur_session contient la session en cours d'élaboration, que le pipeline peut, ou non, utiliser pour le calcul ou la recherche de la valeur demandée.

Pour donner accès à des données de session étendues, un plugin doit implémenter ce pipeline par une fonction prefixe_session_get qui reçoit le tableau de session SPIP et renvoie le tableau reçu en enrichissant l'entrée 'visiteur_session' avec la valeur calculée pour le champ demandé.

L'accès est ensuite transparent dans les squelettes, puisque #_SESSION accède et renvoie de manière indifférenciées les données de la session SPIP ou celles issues de la session étendue.

Exemple 1
Un plugin 'majuscule' pourrait donner accès à un champ nom_majuscule, qui vaudrait le nom du visiteur en majuscule. Pour cela, il définirait la fonction suivante :

  1. function majuscule_session_get($session) {
  2. if ($session['champ'] == 'nom_majuscule')
  3. $session['visiteur_session']['nom_majuscule'] = mb_strtoupper($visiteur_session['nom']);
  4. return $session;
  5. };

Télécharger

En pratique, il serait plus simple d'accéder à ce nom en majuscule par l'application d'un filtre au champ : #_SESSION{nom,mb_strtouuper}

Exemple 2
Le pipeline d'extension des sessions a été conçu, à l'origine, pour interroger des bases de données externes, qui fournissent des compléments d'informations ou d'interaction avec le visiteur courant.

Un plugin pourrait par exemple interroger l'API du réseau social ludique http://per.sonn.es et permettre à #_SESSION{listedamis} de renvoyer la liste des amis de l'internaute connecté.

Remarque
Ce pipeline est utilisé uniquement pour les accès aux données de session requises par les balises #_SESSION et #_SESSION_SI, et pas par la fonction php session_get du noyau spip ou par la balise #SESSION d'origine.

Attention : Les macros ne sont pas des balises comme les autres !

Ces balises étant des macros, il faut être particulièrement vigilant en les utilisant car elles ont un comportement spécial dans certains cas et certains usages ne sont pas possibles.

Appels de filtre

Les classiques appels de filtres sur ces balises ne fonctionneront pas correctement, de même que les parties conditionnelles avant ou après. En effet, les filtres appliqués avec la syntaxe classique de SPIP s'appliquent au source du code php généré par la macro, en tant que fragment de code source en langage PHP, et non au résultat de l'exécution de ce code.

Par exemple [(#_SESSION{nom}|strlen)] renvoie toujours 33, quel que soit le nom de la personne connectée, car ça s'applique sur le source php (qui s'écrit en 33 caractères à l'heure où cette documentation est rédigée) et non sur le résultat php : il ne faut PAS appeler de filtre sur # _SESSION.

C'est pour cela qu'il y a l'alternative présentée plus haut : passer un filtre en 2ème argument de la balise.

Parties conditionnelles avant après appel de balise

Les parties conditionnelles avant après sur balise s'affichent toujours, même si le résultat php est vide (par exemple car il n'y a pas de visiteur), car le source php n'est jamais vide, lui : [avant si non vide (#_SESSION{nom}) apres si non vide]

Il est tout de même possible d'utiliser cette syntaxe de base de spip dans un cas : pour forcer l'insertion d'un espace après ou avant l'appel de la balise :
[(#_SESSION{nom}) ][(#_SESSION{prenom}) ]
Car sans cela, SPIP accole les 2 résultats des appels de balises en supprimant les espaces, comme il fait partout.

Macros et SPIP sont dans un bateau

En employant des macros, tout se passe comme si du php figurait dans le squelette, et tout ce qui s'applique au php dans l'article « SPIP, PHP et javascript sont dans un bateau » s'applique aussi aux macros.

Et donc, les valeurs #_SESSION et les tests #_SESSION_SI se calculent aprés l'évaluation par SPIP des balises et des boucles.

Effets de bords

Ce point est une des conséquences du point précédent.

La partie de HTML masquée par un #_SESSION_SI n'est pas affichée mais elle est quand même compilée par SPIP, et donc les #SET et #GET et autres morceaux de squelettes SPIP présents dans des zones conditionnelles non affichées à cause d'un #_SESSION_SI sont quand même calculés.

Il y a donc un risque d'effets indésirérables si vous vous servez de balises qui ont des effets de bords : #SET par exemple, car le #SET se fera même si la partie ne s'affiche pas. C'est la règle du « SPIP d'abord ! » expliquée dans l'article SPIP, PHP et Javascript sont dans un bateau.

L'exemple suivant illustre la difficulté.

  1. Ce qu'il ne faut pas faire

  2. #SET{var,debut} var vaut debut
  3. Le nom : _SESSION_SI{nom} :
  4. #_SESSION_SI{nom}
  5. Ya un nom. #SET{var,oui_visiteur} var vaut maintenant : #GET{var}
  6. #_SESSION_SINON{nom}
  7. Il n'y a pas de nom. #SET{var,pas_de_visiteur} var vaut maintenant : pas_de_visiteur : #GET{var}
  8. #_SESSION_FINSI
  9. À la fin, var vaut : #GET{var}

Télécharger

Dans le cas où il y a une session avec le nom 'jluc', il s'affichera :

Le nom : jluc
Ya un nom. var vaut maintenant : oui_visiteur
À la fin, var vaut : non_visiteur

Ce n'est pas un bug ! C'est déconcertant de prime abord, mais c'est normal. Pour comprendre ce qui se passe là, il faut 2 flux indépendants de lecture, l'un pour php et l'autre pour SPIP. C'est pénible. Comme c'est trop difficile de maintenir un tel code, il ne faut pas utiliser de #SET dans les parties conditionnées par ces macros.

Arguments calculés

Une autre conséquence, est qu'on ne peut passer que des constantes en argument de comparaison de #_SESSION. Ainsi, #_SESSION_SI{id_auteur,==,#ID_AUTEUR} n'est pas possible. macrosession signale cette impossibilité par une erreur de compilation.

Cache du pipeline session_get

Le mécanisme d'extension doit bien gérer son système de cache afin de ne pas refaire inutilement des calculs à chaque appel de page, et ne pas servir non plus des informations périmées.

Boucles

Les résultats des balises #_SESSION ou #_AUTORISER ne sont pas utilisables en critères de boucle.

Balises #_AUTORISER_SI et compagnie

Les balises #SESSION ne sont pas les seules à générer des caches sessionnés. Il y a aussi les balises #AUTORISER, et leur emploi expose à voir se multiplier les caches.

Le plugin macrosession propose donc 3 autres balises pour tester les autorisations en php : #_AUTORISER_SI, #_AUTORISER_SINON et #_AUTORISER_FIN.

Exemple

  1. #_AUTORISER_SI{ecrire, article, 2}
  2. - Modifier l'article
  3. #_AUTORISER_SI{webmestre}
  4. - Accèder à l'administration
  5. #_AUTORISER_FIN
  6. #_AUTORISER_SINON
  7. - Vous ne pouvez pas modifier cet article
  8. #_AUTORISER_FIN

Télécharger

Autres restrictions

Contrairement aux balises #_SESSION, il n'y a pas de filtre ou comparaison prévue dans la syntaxe de ces balises, donc si jamais vous en avez besoin, vous devrez définir une nouvelle autorisation.

Pour le reste, il y a les mêmes restrictions énoncées plus haut (mais voyez les liens en fin d'article, pour les accès aux id issus de l'environnement ou calculés) et les mêmes possibilités d'emboîtements.

Mise au point et debuging

Découverte et tests
Le plugin embarque plusieurs squelettes de tests qui permettent de voir comment l'utiliser :
- test_visiteur
- test_visiteur_si
- test_visiteur_comparaison
- test_visiteur_filtre
- test_visiteur_etendu
- test_visiteur_si_etendu
...

Plugin XRay

Le plugin XRay est très pratique pour la mise au point. Il permet en effet de voir quels sont les squelettes sessionnés et non sessionnés, leur taille et fréquences d'usages. Il calcule aussi le rendement des caches sur le site, qui est un indice d'efficacité globale, et le détaille pour les js et css (pour lesquels il faut viser 100%) et pour les autres squelettes (html).

XRay permet ainsi de voir comment se comporte le cache et de déterminer sur quels squelettes porter prioritairement vos efforts de réécriture avec macrosession.

Stratégie d'emploi

Lorsque vous avez décidé qu'un squelette ne devrait pas être sessionné, il vous faut :
- dans le squelette choisi, remplacer tous les appels à #SESSION et #AUTORISER par des appels aux balises macrosession
- faire de même pour tous les squelettes inclus statiquement (avec une balise #INCLURE) dans le squelette choisi. Ou sinon : remplacer ces inclusions statiques par des dynamiques.
- dans les squelettes incluant le squelette choisi, remplacer les éventuelles inclusions statiques #INCLURE du squelette choisi par des inclusions dynamiques (mais si les squelettes incluant le squelette choisi ne sont pas sessionnés, vous pouvez laisser #INCLURE).
- s'il reste une balise #SESSION ou #AUTORISER que vous n'avez pu convertir en macro, alors il ne vous reste plus qu'à déporter cette partie du squelette dans une noisette à part, inclue dynamiquement (cf Utilisation de la balise #SESSION et optimisation). Tous les squelettes ne se prêtent donc pas aussi bien à cette stratégie.
- vérifier ensuite que le squelette n'est plus sessionné.

- Source
- Compléments d'infos et notes sur les développements en cours
- La balise #URL_ACTION_AUTEUR sessionne aussi les caches. Le plugin ne propose pas d'alternative.


Html5up Strongly Typed

December 2017, by nostromo[ —]

Html5up Strongly Typed est un jeu de squelettes, dont l'habillage peut convenir à tout type de site web : blog, webzine, etc.....

Il vient en « surcharge » des squelettes de la Distribution SPIP. Voir à ce sujet « Où placer les fichiers de squelettes ? »

Le jeu de squelettes est tiré des travaux du développeur aj, visible sur le site html5up.net. Il est distribué sous licence Creative Commons. Il est en phase de développement mais en grande partie fonctionnelle (voir site Brindefolie.com).

Voir le site de démo.
Il est possible de télécharger les sources des fichiers du site de démo.

Site

Téléchargement

Strongly Typed

Installation et dépendances

Le squelette se présente sous la forme de plugin et s'installe donc comme tous les plugins.

Il nécessite les plugins suivants :

- nuage,
- dépublie.

Il utilise le plugin twitter.

Pour s'assurer le bon fonctionnement du jeu de squelette ainsi que des plugins, on pensera à vider le cache après installation.

Les squelettes et les inclusions

Le graphisme des squelettes ne reprend pas exactement l'interface graphique tel que proposé par le développeur aj. Ainsi dans la page sommaire.html, la partie documentée sous l'appellation a été enlevée.
Il en est de même pour la page article.html tirée de la page d'origine no-sidebar.html dont l'image en dessous du titre n'apparait pas. Les pages left-sidebar.html et right-sidebar.html, n'ont pas été intégrées dans le plugin.

De manière générale, les squelettes du premier niveau contiennent tous la commande vers des fichiers de deuxième et troisième niveau. Ainsi tous les squelettes du premier niveau contiennent une inclusion du squelette footer.html, lui-même ayant une inclusion du squelette retour_haut.html. Seul le fichier du deuxième niveau (partie_droite_sommaire_1.html) contient un include pour le fichier flash_infos.html (Voir à ce sujet, le chapitre « Le fichier flash_info.html et utilisation du plugin Dépublie »).
Pour une bonne compréhension, vous pouvez visualiser le contenu du plugin sur le dépôt de la zone.

Même si ce plugin est encore en développement, dans la mesure du possible, tous les squelettes sont documentés permettant de connaître chaque partie du code html. Ex : .
Trois feuilles de styles sont situées dans le dossier assets/css. Celles-ci n'ont pas été modifiées et ne sont pas documentées.

Modification des icônes

Il est possible de modifier les icônes suivant vos besoins en passant par le site http://fontawesome.io/icons/. Sélectionner l'un d'eux, cliquer dessus et copier l'information entre guillemets juste après le sélecteur CSS class, soit utiliser le moteur de recherche du site. Coller l'information, donnant par exemple

.

La partie haute des squelettes

La partie haute de toutes les pages du plugin fait appel au fichier partie_haute_site.html. Il est appelé via partie_haute_site,self=#SELF} />. Pour la barre de navigation dans les rubriques/sous-rubriques avec indication de son nom et de son url, il n'a pas été fait appel à un quelconque plugin comme peut le proposer Spip Contrib. Il s'agit donc d'inscrire « à la main » les informations permettant une navigation dans les rubriques/sous-rubriques.
Pour la modification des icônes voir le chapitre « Modification des icônes ».

Le fichier flash_info.html et utilisation du plugin Dépublie

Un
Afin de donner du « mouvement » aux informations, il nous a semblé nécessaire d'utiliser le plugin Dépublie conjointement avec le fichier flash_infos.html.
Pour son utilisation, créer tout d'abord une rubrique à la racine. Relever son numéro et portez le dans la bouche suivante à id_secteur en enlevant les deux x :
du fichier flash_infos.html. Pour plus d'informations voir l'article La boucle ARTICLES.

Il vous suffira ensuite de mettre en ligne un article contenu dans la rubrique crée. Concernant le fichier image il est extrait soit du #LOGO_ARTICLE ou éventuellement du #LOGO_RUBRIQUE. La taille de l'image n'est pas indiqué volontairement dans la boucle [(#LOGO_ARTICLE|sinon {#LOGO_RUBRIQUE})] , mais celle-ci ne doit pas dépasser 300 px. Lors de la rédaction de l'article, il faudra documenter l'URL_SITE si vous voulez un renvoi en cliquant sur le fichier image. Avec le plugin Dépublie, il ne vous reste plus qu'a indiquer une date de fin de mise en ligne.

Les fichiers brèves et articles

La structure générale de la page sommaire.html mettant en valeur principalement les articles, le texte introductif des brèves, dont l'affichage est ici au nombre de deux, est positionné sur la droite par le biais des fichiers partie_droite_sommaire_2.html, partie_droite_rubrique_2.html.

L'ordonnancement du fichier breve.html comme du fichier article.html est identique. Seuls les boucles sont différentes avec en commun une partie haute, une partie centrale et une partie basse. Ce sont quant à présent, les deux seuls fichiers ne faisant pas appel à d'autres fichiers pour un affichage latéral.

Changement de l'image de la Quadrature du Net

Cet emplacement « publicitaire » pour le site de La Quadrature du Net, fait appel à un fichier via une url. Vous trouverez si vous le désirez dans le dossier IMG, le même fichier portant le nom quadrature.png.

Fichier 404.html

Le fichier 404.html fait appel à un fichier image dans le dossier IMG et intitulé 1959_a.png.

Ce qui manque / à développer

Même si le plugin est opérationnel, il lui manque un certain nombre de squelettes.
De plus la balise #FORMULAIRE_FORUM n'affiche pas le forum, mais affiche à la place l'ensemble des interventions dans les forums et validés pour publication, elle a donc été enlevé,
La balise [(#PLUGIN{socialtags}|oui)[(#INCLURE{fond=noisettes/socialtags}{id_article})]] n'affiche rien quand à présent.
Malgré de nombreux essais, il nous a pas été possible d'afficher les images comme le propose le squelette ARTICLE de la Distribution.
La barre de navigation haute par la biais d'un plugin devrait permettre une automatisation de l'affichage des rubriques/sous rubriques.
Une documentation des fichiers css devrait permettre d'apporter des modifications aussi bien par exemple dans la couleur des liens, qu'un changement de la police utilisée pour le titre du site.

Conclusion

Ce plugin est en grande partie opérationnel même si divers « modules » lui font défaut. Nous pensons entre autre à la balise #FORMULAIRE_FORUM.

Mais par la structure même de son interface graphique il permet un affichage rapide adapté aussi bien pour des grands écrans que ceux des smartphones et tablettes.

Bonne utilisation.


Owl Carousel 2

November 2017, by chankalan, Mist. GraphX[ —]

Owl Carousel est un diaporama jQuery adaptable aux différentes tailles d'écran, qu'on peut actionner par glisser, il utilise CSS3 mais il est compatible avec les vieux navigateurs, et il est aussi paramétrable.
Le présent plugin permet d'utiliser facilement Owl Carousel dans SPIP.

Lien de référence : https://owlcarousel2.github.io/OwlCarousel2/

Installation

Comme tous les plugins.

Configuration

Si vous vous arrangez autrement, il est possible de désactiver les styles dans les pages publiques de votre site, sur la page de configuration du plugin.

Exemples

Des exemples utilisables dans vos squelettes se trouvent dans le dossier « noisettes » du plugin. Ce répertoire est plus un outil pour squelette, et destiné plus particulièrement aux intégrateurs.
Les noisettes fournies peuvent servir de point de départ et ne conviendront certainement pas à tous les cas d'utilisation en l'état.
Il faut plus les considérer comme des extraits de code facilitant l'intégration à votre projet.

Modèle

Un modèle est tout prêt pour afficher les documents d'un article de type jpg, gif ou png dans un diaporama insérable de cette manière :

où « X » est l'id de l'article, pour afficher toutes les images de cet article.
Quelques paramètres permettent de modifier quelques réglages, et se définissent de cette manière lors de l'inclusion du modèle :

Paramètres

  • id-carousel=unikid : id unique du carousel, doit être renseigné si plusieurs carousels dans la même page.
  • caption=oui : afficher la description de l'image
  • dots=false (true par defaut) : affiche les points pour changer d'image
  • navigation=true (false par defaut) : afficher les boutons précédents/suivants
  • items=2 (1 par défaut) : pour afficher plusieurs images en même temps
  • margin=10 : pour ajouter une marge entre chaque image, en pixels
  • docs=1,2,3 : affiche uniquement les documents 1, 2 et 3. Dans ce cas, le numéro identifiant de l'article est optionnel, vous pouvez donc écrire pour afficher ce diaporama n'importe où dans le site, tant que les documents existent dans la médiathèque
  • caption_css=monstyle : ajouter des css sur la description (par exemple : invisible)
  • autoHeight=true : pour que la hauteur soit adaptée à chaque diapositive
  • autoplay=true (false par défaut) : le carousel démarre automatiquement
  • autoplayHoverPause=true (false par défaut) : pause au survol en mode autoplay
  • autoplayTimeout=6500 (5000 par défaut, en milliseconde) : durée d'affichage d'une diapositive
  • lazyLoad=true (false par défaut) : ne charge que les images visibles pour optimiser le chargement.

Utilisation de la balise #SESSION et optimisation

November 2017, by Peetdu[ —]

Lorsque une page utilise #SESSION, #AUTORISER, (il y en a d'autres), SPIP va créer un cache différent par session (par utilisateur).
L'objet de cet article est de vous montrer comment optimiser l'utilisation de cette balise.

Compréhension

Dans la documentation sur la balise #SESSION, on peut lire :

#SESSION, permet d'accéder aux informations liées au visiteur authentifié et de différencier automatiquement le cache en fonction du visiteur.

En d'autres termes, si votre squelette utilise la balise #SESSION, un internaute authentifié visitant la page correspondante sera servi non pas par le cache courant mais par un cache dédié à sa session.

Utilisateur authentifié : deux caches en fonction du contenu du squelette

En jaune : les pages servies par le cache courant ;
En gris : les pages créées par des squelettes utilisant #SESSION et donc servies par un cache dédié.

Cela a deux conséquences :

  1. Un visiteur authentifié va avoir une navigation moins fluide (rapide) ;
  2. l'ensemble des caches (courant + dédiés) va prendre un espace plus important sur le disque du serveur.

Cet article montre au travers de deux études de cas comment minimiser ces inconvénients grâce aux inclusions et à un peu d'astuce.

Étude de cas #1 : inclusion simple

Objectif : si le visiteur est authentifié, afficher son nom sur la page d'accueil.



Voici le code SPIP non optimisé de cette page

  1. Fonk is all

  2. [
    Welcome (#SESSION{nom})
    ]
  3. Funk is a music genre that originated in the mid to late 60s…

Télécharger

puis le code optimisé

  1. Fonk is all

  2. {fond=inclure/nom_visiteur}>
  3. Funk is a music genre that originated in the mid to late 60s…

Télécharger

avec le code de l'inclure (inclure/nom_visiteur.html)

  1. [
    Welcome (#SESSION{nom})
    ]

Résultat, seul le fichier inclure/nom_visiteur.html sera mis en cache dédié au visiteur « Bootsy Collins ».

Ainsi la page d'accueil de ce site est bien du type


On voit ici que SPIP utilise les deux caches pour servir la page : la plus grande partie de cette page est déjà construite via le cache courant. Seule la partie contenant des informations de session est mise dans le cache dédié.

Étude de cas #2 : afficher un contenu via une boucle

Objectif : Pour les utilisateurs authentifiés, afficher un bloc avec un agenda listant les 2 prochains événements.

Dans le squelette

  1. [(#SESSION{statut}|in_array{#LISTE{0minirezo,1comite,6forum}}|oui)
  2. {fond=inclure/prochains_concerts}>
  3. ]

Télécharger

..faire plutôt

  1. {fond=inclure/prochains_concerts}>

et dans l'inclusion, faire le test de session...

  1. [(#SESSION{statut}|in_array{#LISTE{0minirezo,1comite,6forum}}|oui)
  2. span>(EVENEMENTS){a_venir}{0,2}>
  3. #TITRE
  4. le #DATE_DEBUT au #LIEU
  5. ]

Télécharger

Mais ce code ne fonctionne pas avec le langage de SPIP. Il n'est pas possible de mettre une boucle dans une balise [1].

Le critère Si… à la rescousse

…grâce auquel on pourra mettre le test de SESSION dans les critères de la boucle.

  1. span>(EVENEMENTS){a_venir}{0,2}{si #SESSION{statut}|oui}>
  2. #TITRE
  3. le #DATE_DEBUT au #LIEU

Télécharger

Résultat : on retrouve le même partage du cache que dans le cas précédent.



Pour aller plus loin

Article (très) complémentaire
Du php dans le squelette à la place de #SESSION ou #CACHE

Le plugin Zcore (anciennement zpip)
Zcore propose de construire votre site en créant une pyramide d'inclusions. L'utilisation de ce plugin est déjà en soit une bonne pratique. On comprend qu'elle devient très recommandable pour des sites avec des utilisateurs connectés.

- Le plugin
- La doc officielle
- Un tuto bien utile pour démarrer avec Zcore

Avec un peu de pratique, cela fait gagner un temps fou.

Le plugin Mémoïzation
Gestion du cache de SPIP par diverses méthodes.

Fil : « Utiliser memoization et memcache sera déjà mieux que le cache standard sur filesystem. »
Voir Memoization

Le plugin XRay
Explorer les caches SPIP avec memoization par APC
XRay

Le plugin Macrosession
Le plugin Macrosession propose des balises qui facilitent les recommandations de l'article Du php dans le squelette à la place de #SESSION ou #CACHE 0 et qui définissent des macro php pour SPIP, pour les cas les plus courant d'utilisation.


[1] Voir à ce propos la page Affichage conditionnel


XRay, un explorateur de cache

https://contrib.spip.net/XRay-un-explorateur-de-cache-APCplay episode download
November 2017, by JLuc[ —]

Ce plugin est construit à partir de apc.php, le browser de cache APC.
Il lui ajoute une surcouche dédiée aux squelettes de SPIP lorsqu'ils sont gérés par Mémoïzation avec le cache APC.

Le script apc.php fourni avec le cache APC permet
- de lister les caches et faire des recherches sur le nom des caches
- de zoomer sur l'un d'eux. Comme le contenu des caches SPIP est sérialisé, c'est peu lisible.

Le plugin adapte ce comportement pour SPIP et propose des outils permettant de mieux analyser les caches squelettes de votre site afin de les optimiser.

On y accède par une entrée du menu « Squelettes ».

Prérequis

- Votre hébergement doit proposer un cache APC
- Vous devez avoir installé et activé le plugin memoization avec APC
- Le « cache user » de APC ne doit servir que pour les caches SPIP avec memoïzation.

Liste

La liste présente pour chaque cache

  • son nom. Pour une meilleure lisibilité, le plugin n'affiche pas le préfixe de _CACHE_NAMESPACE que memoization leur ajoute systématiquement.
  • sa taille
  • le nombre de hit, permettant de jauger l'efficacité du système de cache
  • la dates de création
  • la durée
  • etc

On peut trier la liste selon chacun de ces critères.

Si c'est le cache d'un squelette pour la session d'un visiteur identifié, un bouton 'session' apparaît à droite : ce bouton permet d'accéder à la liste de tous les caches sessionnés de ce même visiteur.

Affichages extra

Un menu déroulant permet d'afficher certaines infos pour chacun des caches listés :

  • tout le contexte d'environnement utilisé par ce squelette, sous la forme du source d'un tableau php. Lors qu'il n'y a pas de contexte, le texte « (non défini) » est affiché.
  • seulement le contexte spécifique à ce squelette (sans afficher les contextes techniques)
  • le contexte relatif à spip_auteur seulement : id_auteur, nom et mail. (mais cet auteur ne doit en général pas être confondu avec l'internaute sessionné ayant généré un cache)
  • tous les invalideurs (dont les invalideurs génériques : cache et session)
  • seulement les invalideurs spécifiques à ce squelette, s'il y en a.
  • la liste des noisettes inclues dynamiquement avec <INCLURE...> dans ce squelette

Lorsqu'un élément du contexte affiché est un identificateur d'objet SPIP, alors un bouton apparaît à droite : ce bouton mène à la page SPIP d'édition de cet objet. Au survol de la souris sur ce bouton, un hint indique le titre SPIP de l'objet.

Rq : comme l'affichage des informations 'extra' pour chaque élément de la liste nécessite la consultation du cache, elle incrémente le nombre de 'hit' sur ce cache, qui en plus de compter les hits nécessités par votre jeu de squelette, va également compter le nombre d'affichages extra faits avec xray. Autrement dit : comme en physique quantique, l'observation modifie le phénomène observé.

Si le plugin macrosession est installé et actif, ce menu propose aussi d'afficher
- la liste des appels aux macros #_SESSION ou #_SESSION_SI. Il indique alors les arguments : le champ consulté et les éventuels opérateur et opérande.
- la liste des appels aux macros #_AUTORISER_SI. Il indique alors les arguments de chaque appel.

Exemple : Dans un squelette admin_control.html, il y a un appel à #_AUTORISER_SI{webmestre} et un appel à #_AUTORISER{modifier, article, 2}. Lorsqu'on demande à voir les appels à #_AUTORISER, il apparaît ceci :

...8e7ccc6-admin_control/
[0] => 'webmestre'
[1] => 'modifier', 'article', '2'

Filtrage

On peut faire une recherche sur les noms des caches, et ne plus lister, par exemple, que les caches des squelettes content/article_resume.

Un menu déroulant permet de demander à ne voir

  • que les caches des squelettes sessionnés
  • que les caches des squelettes sessionnés de visiteurs identifiés
  • que les caches des squelettes sessionnés de visiteurs non identifiés
  • que les caches de formulaire
Liste, filtrage et détails des caches
Dans cette configuration, seuls les caches sessionnés sont affichés. Ici, ce sont uniquement les caches sessionnés de visiteurs non identifiés.
On a demandé à voir les éléments de contextes spécifiques.

Un autre menu déroulant permet de faire cette recherche non sur les noms des caches mais sur leur contenu.
4 options sont proposées pour faire la recherche :

  • dans les noms des caches. Cela permet de cibler les caches d'un squelette particulier. C'est le fonctionnement par défaut et cela suffit pour la plupart des situations basiques. Ce mode ne modifie pas le nombre de hits des caches.
  • dans le contenu des caches. Pour une recherche tout azimut dans le HTML produit, dans le contexte et les autres métadonnées.
  • dans le HTML mis en cache seulement
  • dans les métadonnées seulement : contextes, invalideurs et autres.

Zoom sur un cache

Quand on zoom sur un cache, sa valeur est présentée désérialisée lorsque c'est possible, sous la forme du source du tableau php. On distingue ainsi nettement les différentes métadonnées (contextes, invalideurs et autres) et le squelette HTML.

Un bouton local et un menu déroulant général permettent de demander à voir tout le HTML ou à ne voir que le début du HTML (80 premiers caractères) lorsque ce n'est pas cela qui nous intéresse.

Lorsqu'une entrée des métadonnées correspond à un identifiant d'objet SPIP, un lien permet d'accéder à sa page d'édition.
Par ailleurs, les 2 entrées source et squelette, dont les valeurs affichées sont, respectivement, l'adresse du fichier squelette source et du fichier squelette compilé, sont cliquables et donnent accès à la visualisation de ces sources, dans un nouvel onglet du navigateur.

Les caches des textwheels ne sont pas désérialisées.

Page de stats générales

En plus des statistiques, des paramètres et des graphiques de fragmentation et de répartition des caches d'APC, un nouvel encart dédié à SPIP apparaît.
Il présente
- la valeur du préfixe de nom des caches : _CACHE_NAMESPACE. utilisé par memoization.
- des statistiques : nombre de caches, volume mémoire, date de création du plus vieux cache, nombre de requêtes, nombre de hits, rendement du cache. Le rendement du cache est le ratio de hit pondéré par le volume mémoire de chaque cache.

Ces statistiques sont présentées :
- pour tous les caches.
- pour les javascripts et css seulement. Il est possible de personnaliser l'expression régulière qui détecte ces caches, afin de cibler les squelettes de votre choix, via un define dans votre fichier d'option (voir xray_options.php).
- pour les autres caches actifs.
- pour les caches présents en mémoire mais invalidés par SPIP. La date d'invalidation générale est également indiquée, ainsi que la date d'invalidation des caches consécutifs à une mise à jour de la table de votre choix. Par défaut, ce sont les articles mais vous pouvez choisir via un define dans votre fichier d'option (voir xray_options.php).
- pour les caches encore référencés par APC, mais périmés. Un certain nombre de cache récemment périmés reste en effet indexé, quand bien même leur espace mémoire a été libéré.

Après une purge du cache, les rendements des caches sont tous de 0 puisqu'il faut recréer tous les caches. Avec le temps et les visites sur le site, ces rendements augmentent.
- Après quelque temps, le rendement des caches js et css peut avoisiner les 100%. Sinon, c'est a priori que vous utilisez mal les outils spip pour l'insertion du javascript et des css.
- Le rendement des caches html augmente aussi mais il plafonne à moins de 100%, à une valeur dépendant de la structure du site. Si vous employez beaucoup les balises #SESSION ou #AUTORISER, il y aura beaucoup de cache sessionnés, qui ne servent que pour un seul visiteur et qui ne sont donc pas ou peu réemployés : le rendement sera moins bon. Pour limiter ces effets, voyez les conseils de l'article Utilisation de la balise #SESSION et optimisation et éventuellement le plugin macrosession.

Utilisation pour le debug et l'optimisation

XRay est un bon moyen pour mieux se rendre compte du fonctionnement du cache, des enjeux de sa bonne gestion et des stratégies d'optimisation :
- SPIP, PHP et Javascript sont dans un bateau
- Utilisation de la balise #SESSION et optimisation
- Optimiser les performances de SPIP
- Du php dans le squelette à la place de #SESSION ou #CACHE 0

À partir de cette compréhension, la liste les caches sessionnés permet de passer en revue le cache et son usage à bon ou mauvais escient. C'est un bon complément à au plugin macrosession. Si un cache est sessionné alors qu'il ne devrait pas l'être, on peut étudier son cas et corriger cela. On peut ainsi lutter contre la multiplication des caches sessionnés qui mine l'efficacité du cache ; orienter la démarche d'optimisation vers certains squelettes et vérifier l'impact des optimisations réalisées.

Avoir un accès rapide et facile au contexte des caches permet également de débusquer des bugs :
- arguments inutiles pour des inclusions.
- mauvaise valeur d'arguments
- appels à des inclusions avec des arguments {env} superflus (et donc nuisibles)
- squelettes appelés de manière sessionnée et non sessionnée à la fois (selon l'endroit)

L'activation de xray n'interfère aucunement sur le fonctionnement du site. Néanmoins, une fois terminé le travail d'observation ou d'optimisation des squelettes, xray devient inutile. On peut le désactiver et il peut ensuite être réactivé à tout moment.

Remarques :
- Le plugin s'appuie sur des heuristiques pour filtrer les caches selon leur type (sessionné ou non, visiteur identifié ou non). Il n'est pas exclu que certains cas particuliers soient mal filtrés et qu'il faudra affiner. Vos retours sont bienvenus.
- XRay fonctionne uniquement avec APC Cache. Il serait utile de développer aussi une version pour memcached. Une version filecache risque d'être franchement lente, mais serait peut être utile, même sans réactivité. En attendant, si votre hébergement permet d'activer APC Cache, ça vaut le coup de le faire même temporairement, le temps d'utiliser xray et d'examiner le cache.


Éditorial (HTML5UP)

November 2017, by chankalan[ —]

Squelette SPIP pour intégrer le modèle Editorial de HTML5UP
https://html5up.net/editorial



Configuration

La page de configuration permet quelques réglages. On y défini la couleur principale du site, des informations de contact et le contenu de la page d'accueil et de la colonne gauche.

Sur la page d'accueil, le premier article est le héro, le second est le majeur.

  • L'article héro : le titre, un résumé, le logo + un bouton Lire la suite
  • L'article majeur : le titre + l'introduction (ou le champ Descriptif s'il est activé dans la partie Configuration > Contenu du site).

En colonne gauche, un article héro est aussi désigné pour afficher son introduction (#INTRODUCTION), son logo et un lien vers la page de l'article.

Rédaction

Il est préférable d'activer les champs Chapeau et Post-scriptum pour bénéficier de plusieurs mises en formes : le champ Chapeau d'un article s'affiche en public en une colonne pleine largeur, le champ Texte s'affiche lui sur deux colonnes, et le champ Post-scriptum se déroule sur 3 colonnes.


L'article majeur

Pour rédiger le texte de l'article majeur (le second sur la page d'accueil), un modèle permet d'afficher comme dans le thème de départ une icône de FontAwesome avec un texte en bloc, deux blocs par ligne. C'est le modèle qui prend quelques paramètres :

  • |icone=fa-rocket (ou tout autre icone de FontAwesome http://fontawesome.io/icons/)
  • |iconetitre=le titre
  • |iconetexte=le texte
  • |left ou |right (positionner le modèle à gauche ou à droite)

#]>

On utilise sur la page d'accueil la balise #INTRODUCTION de l'article, et cette balise se décrit comme ceci : https://www.spip.net/fr_article902.html#INTRODUCTION
Elle va donc chercher d'abord le descriptif de l'article s'il existe, sans le couper, ce qui est très utile si on veut inclure des modèles. Il faut donc aller dans « Configuration > Contenu du site » pour activer le champ descriptif des articles, et faire l'inclusion des modèles à cet endroit pour qu'ils s'affichent sur la page d'accueil correctement.


L'article héro de la colonne gauche

Dans l'article héro de la colonne gauche, si on utilise le champ Descriptif des articles, on pourra rédiger le texte qui apparaît dans cette colonne gauche, qui pourra être différent des champs visibles sur la page de l'article lui-même.
Le modèle rendra le logo, le titre et un résumé de l'article XX, avec les options suivantes :

  • |affichertitre=non
  • |afficherlien=non

Inclure des icônes dans les textes

Un dernier modèle permet d'insérer n'importe quelle icône de FontAwesome dans le flux d'un texte. Utilisez avec ces paramètres :

Les icônes de réseaux sociaux

En utilisant le plugin Liens vers les réseaux sociaux (sociaux), vous aurez les icônes des réseaux que vous aurez choisis.

Formulaire de contact

En utilisant le plugin Formulaire de contact (contact), le formulaire sera présent en colonne gauche, automatiquement.

Conseils

Utiliser Court-Circuit pour éviter la page rubrique s'il n'y a qu'un seul article dans une rubrique.
Avec le plugin Pages, si un article désigné héro, majeur ou héro en colonne gauche devient une page unique, il n'apparaîtra plus dans le menu.


0 | 10










mirPod.com is the best way to tune in to the Web.

Search, discover, enjoy, news, english podcast, radios, webtv, videos. You can find content from the World & USA & UK. Make your own content and share it with your friends.


HOME add podcastADD PODCAST FORUM By Jordi Mir & mirPod since April 2005....
ABOUT US SUPPORT MIRPOD TERMS OF USE BLOG OnlyFamousPeople MIRTWITTER