NetAssoBlog

200gr de Web, un zeste de marketing un soupçon de droit…
maxime

Tutoriel – Template FLEXIcontent – Part2 : les types de champs

janvier27

FLEXIcontent vous permet de créer des champs personnalisés pour chacun des types de contenu que vous souhaitez exploiter. Cela permet de contraindre l’utilisateur à saisir différentes informations dans des zones bien spécifiques que je vais pouvoir afficher par la suite comme bon me semble. Je peux également transformer ces champs en critère de recherche ou de filtre… Bref avec un peu d’imagination, on peut rapidement réaliser tous les gabarits que l’on souhaite et une fois de plus ouvrir des portes que Joomla a laissé fermer.

liste_champs

Les types de champs disponibles sont les suivants : checkbox, checkbox image,date, email, file, image, radio buttons, radio image buttons, select, select multiple, text, textarea et weblink. Autant dire qu’il ne manque pas grand chose pour faire votre bonheur.

En plus des champs personnalisés, FLEXIcontent vous offre également l’accès à des fonctionnalités supplémentaires pour chaque contenu :
– la gestion des versions
– un système intégré de vote
– pouvoir mémorisé ses favoris
– un compteur de hit
– la gestion de mots clés
– affectation de plusieurs catégorie pour un seul contenu

Toutes ses fonctionnalités , qui s’affichent sous forme de champs, sont automatiquement affectés à un type de contenu lors de sa création ainsi que les champs de bases (titre, description, auteur, date de création, date de modification, état de publication)

Je vais donc continuer la création de mon template en configurant certains champs types et en rajoutant des champs personnalisés. Cet exemple a bien entendu rien de concret, il a juste pour but d’illustrer les différentes fonctionnalités.

Sommaire du tutoriel :

  • Généralités sur les champs de FLEXIcontent
  • Les champs types
  • Les champs personnalisés et l’utilisation des plugins
  • Créer son propre type de champ
  • Positionner les champs dans le template

Généralités sur les champs de FLEXIcontent

Dans FLEXIcontent, vous pouvez associer un champ à un ou plusieurs type de contenus. Chaque champs personnalisés possède ses propres options. En fait les types de champs (textarea,checkbox,list…) sont tous générés à travers un plugin spécifique, donc si vous le souhaitez rien ne vous empéche de créer votre propre type de champ.
Pour chaque types de champs , il y a certaines options qui sont communes :

param_champs

  • Etiquette : c’est le nom qui apparaitra (ou non) devant votre champs dans le template. Attention si vous souhaitez modifier l’étiquette du champs description et que vous souhaitez la différencier en fonction du type de contenu, il est à ce moment préférable modifier cette valeur directement dans les paramètres du type où une option est prévu à cet effet.
  • Nom : le nom utilisé afin d’identifier votre champs, il est important d’utiliser uniquement les caractères A-Z, a-z et 0-9 sans espaces, car c’est le nom qui nous permettra de référencer notre champ dans le template. Par défaut lorsque vous allez créer un champ, FLEXIcontent le nomme « fieldxx », je vous conseille vivement de le changer afin de trouver vos repères par la suite.
  • Publié : permet d’activer ou non un champs. Certains champs (title, description,created, created by, last modified, revised by) ne peuvent pas être dépubliés car ils sont nécessaires au bon fonctionnement du versioning. Cependant il existe une astuce si vous ne souhaitez pas les faire apparaitre lors de la création d’un nouveau contenu, il suffit de ne pas affecter le champs au type de contenu en question et notre problème est résolu.
  • Recherche : Indique si le contenu du champs sera indexé ou non pour une recherche.
  • Recherche avancée : Cette fonction sera utilisée à partir de la version 1.7 de FLEXIcontent qui est prévue à la fin du mois de mars.
  • Filtre : Indique si le champs sera affiché en tant que filtre dans l’affichage des contenus en mode category. Si vous souhaitez utiliser cette fonctionnalité il faut dans un premier temps mettre la valeur à oui sur les champs qui vous serviront de filtre. Attention ! seulement les champs avec des valeurs prédéfinies (Checkbox, Checkbox image, Select, Select multiple, Radio, Radio Image) peuvent être utilisés en tant que filtre. N’oubliez pas ensuite d’activer les filtres dans les paramètres de la catégorie et de sélectionner dans la liste les champs adéquats.
  • Niveau d’accès : Les niveaux d’accès aux champs, niveaux basiques liés à l’ACL de Joomla.
  • Ordre : Détermine l’ordre d’affichage du champs lors de la saisie des contenus.
  • Description : Permet d’indiquer à l’utilisateur les instructions de saisie pour le champs. De la même manière que pour l’étiquette, si vous souhaitez renseigner différentes descriptions pour le champ « description », il vous faudra le renseigner dans les paramètres du type.
  • Types : Sélectionner ici les types que vous souhaitez associés à votre champ (appuyez sur ctrl pour sélectionner plusieurs types)
  • Afficher l’étiquette : Permet de renseigner un paramètre que l’on pourra utiliser dans le template afin de savoir si l’on affiche ou non l’étiquette du champ.
  • Préfixe et suffixe : Accessible dans la majorité des champs (mais pas tous). Ces deux paramètres vous laissent la possibilité d’ajouter une valeur devant et après le contenu de votre champs. Vous pouvez ajouter par exemple le symbole € en suffixe si vous souhaitez afficher un champ monétaire. On peut les utiliser également pour rajouter du code html ou bien encore les utiliser pour appliquer un plugin (à voir dans la dernière partie de ce tutoriel)
  • Plugins spécifiques : Cette liste affiche tous les plugins de contenu installés sur votre site Joomla, vous pouvez choisir des plugins spécifiques dans cette liste ou la laisser vide afin de rendre le contenu compatible avec n’importe quel plugin. Cette fonctionnalité est utile dans certains cas pour éviter des conflits, des affichages multiples ou de réduire la charge. Gardez à l’esprit que lorsque le plugin qui est utilisé sur un champ, sera automatiquement exécuté sur tous les champs suivants dans la boucle.

Les champs types

Certains champs sont automatiquement associés lors de la création d’un nouveau type, ce sont les champs types de FLEXIcontent.

Certains sont directement liés au noyau de Joomla :

  • Title : Le titre de votre contenu
  • Description : Ce qui correspond au contenu de votre article dans Joomla. Si vous souhaitez rendre la compatibilité avec les plugins content de Joomla, il ne vous faudra pas oublier de cocher dans les paramètres de ce champs l’option « Exécuter les plugins de contenu ».
  • Created * : Date de création du contenu.
  • Created by : Auteur du contenu.
  • Last modified * : Date de la dernière modification du contenu.
  • Revised by : Nom du dernier utilisateur ayant modifié le contenu.
  • Hits : Nombre de fois où le contenu a été affiché. (par défaut il a un suffixe de renseigner : »vues »)
  • Document type : Le type du contenu.
  • Version : La version du contenu.
  • State : L’état de publication du contenu.

* Pour tout les champs de type date, il est possible de modifier le format d’affichage dans les paramètres du champ à travers une liste avec des valeurs prédéterminées ou de créer son format d’affichage personnalisé en utilisant les paramètres PHP de strftime (http://php.net/manual/fr/function.strftime.php).

D’autres champs correspondent à des fonctionnalités bien précises de FLEXIcontent :

  • Voting : evaluationUne fonctionnalité permettant d’évaluer de 1 à 5 un contenu. Le vote est symbolisé par une image 25×75 (com_flexicontent/assets/images/star.gif) décomposée en trois sous images représentant les actions : no selected, selected et hover. Vous pouvez créer votre propre image, puis modifier le chemin d’accès dans les paramètres du champs afin de faire pointer le chemin vers votre fichier. Je réalise donc ma petite image avec des ballons, c’est plus sympa pour évaluer des stades. Vous pouvez également modifier la taille d’affichage de l’image qui est par défaut de 16 pixels.
  • Favourites : heart_addPermet à un utilisateur enregistré de classer cette page dans ses favoris.
  • Categories : Stocke les catégories dans lesquelles le contenu est classé. Une option permet de sélectionner le séparateur qui sera affiché par la suite en frontend (barre verticale, saut de ligne, virgule, espace)
  • Tags : Stocke les tags dans lesquels le contenu est classé. Une option permet de sélectionner le séparateur qui sera affiché par la suite en frontend (barre verticale, saut de ligne, virgule, espace)

Les champs personnalisés

Comme je l’ai précisé précédemment FLEXIcontent nous offre de nombreuses possibilités afin de personnaliser la saisie des contenus mais également leur affichage à travers les champs personnalisés. Je vais maintenant, tout en reprenant mon exemple de création d’un template pour présenter les stades de football français, vous présentez les différents types de champs personnalisés. Je n’utiliserais pas pour chaque champs l’ensemble des paramètres disponibles mais à travers l’ensemble du tutoriel je vais couvrir l’ensemble des fonctionnalités disponibles.
Ne pas oublier pour chacun des champs de sélectionner dans les types affectés notre type « Stade ».

  • Text :

Je vais commencer par ajouter mon premier champ personnalisé, je souhaite afficher l’adresse du stade. Mais ce n’est pas tout je vais en profiter d’utiliser l’adresse saisie pour afficher la localisation de mon stade du GoogleMap.
Avant tout j’ai installé et activé la dernière version du plugin GoogleMap (http://www.kksou.com/php-gtk2/Joomla-Gadgets/googleMaps-plugin.php#download).
J’ajoute mon champs avec les valeurs suivantes :

param_premier_champ

Je nomme l’étiquette et le nom du champ « adresse », puis je sélectionne mon type de champ : « Text ». Je complète ma description en indiquant à l’utilisateur la manière dont il devra renseigner le contenu « Saisir l’adresse du stade avec le format suivant : ‘numéro de rue’ ‘nom de la rue’, ‘ville’ ».
Je veux exécuter le plugin GoogleMap sur ce champ, je change donc la valeur de « Exécuter les plugins de contenu » en indiquant la valeur « oui ».
Dans mon préfixe je saisis le début de la balise de mon plugin GoogleMap : {googleMaps addr=“
Puis dans le sufixe je ferme ma balise et j’ajoute quelques paramètres propres au plugin : ” width=100% height=190 lang=fr maptype=G_HYBRID_MAP}
L’adresse que je vais pouvoir saisir par la suite sera donc directement intégré en tant que paramètre pour mon plugin.
Important ! A ce jour il n’est pas possible d’utiliser un plugin qui utilise le caractère pipe « | » dans ses paramètres car ce dernier génère un bug.

  • Textarea

Je vais maintenant rajouter une zone qui me permettra de saisir un complément d’adresse avec les valeurs suivantes :

param_deuxieme_champ

Je décide de ne pas activer l’éditeur HTML et je réduis la zone à 5 lignes afin de ne pas surcharger ma page de saisie. (La zone « Hauteur de l’éditeur » correspond uniquement à la hauteur en pixels de l’éditeur HTML)

  • Date

Je vais maintenant rajouter le champ pour enregistrer la date d’inauguration du stade. Ce champs me permettra de choisir une date à travers un calendrier qui s’affichera à côtés de mon champs de manière dynamique.

param_troisieme_champ

Je souhaite un format d’affichage qui n’existe pas dans la liste, je sélectionne donc « Format spécial » et je saisis mon format : « %d/%m/%Y » pour afficher une date qui va ressembler à ca ‘ 14/07/1979 ‘. Je désactive également les valeurs multiples.

  • Email

Je vais rajouter une zome email qui me permettra de saisir les différentes adresses de contact.
param_champ_emailJe nomme mon champ « contact », j’indique les consignes de saisies dans la description. Je vais autoriser les valeurs multiples avec un nombre maximum de 5 contacts. Je décide également d’afficher les valeurs dans mon template en séparant par une simple virgule.
Attention, il n’y a pas de contrôle de format lors de la saisie des valeurs, l’utilisateur pourra saisir ce qu’il souhaite (c’est à dire autre chose qu’une adresse mail). Dans le template, FLEXIcontent se contentera de rajouter un « mailto: ».

  • Weblink

Je souhaite afficher pour chacun de mes stades le nom et le site internet du club officiel jouant sur la pelouse.
param_champ_weblink
Je nomme mon champ « site_stade » et je précise dans la description qu’il ne faut pas saisir le « http:// » dans mon adresse. (même si on verra par la suite que FLEXIcontent le gère automatiquement) J’agrandis un peu la taille de mon champ car une adresse internet prendra un peu plus de place.
J’utilise aussi le titre de mon lien, plutôt que d’afficher l’adresse du site. Cela me permettra de montrer le nom du club plutôt que le nom de son site.
Enfin je ne souhaite pas que l’utilisateur quitte mon site s’il clique sur lien, je l’envoi donc dans une nouvelle fenêtre.

  • Image

Je vais maintenant ajouter un champ image afin de pouvoir afficher une photo de mon stage. Je saisis les paramètres suivants :
param_champ_image

Je nomme mon champ « image_stade » puis je renseigne la description en indiquant que je n’autorise que les fichiers jpg et png. Je décide de ne pas afficher l’étiquette du champ, car pour une image qui est sensé illustré ma page je n’en vois pas l’intérêt.
J’indique les types extensions autorisés, attention il est important de saisir l’extension en minuscule et en majuscule. Je limite ma taille maximum de fichier à 500ko (500 000 octets).
La qualité des miniatures correspond au taux de compression, ne travaillant pas sur une quantité importante d’image je préfère conserver une bonne qualité (valeur possible 1->100)
Je modifie le chemin d’accès aux répertoires des miniatures afin de centraliser toutes mes images par la suite dans un même répertoire pour FLEXIcontent, j’indique : images/flexicontent/miniatures
Nous avons la possibilité de gérer une watermark (image incrustée dans l’image originale afin de garantir les droits d’utilisations), je vais donc l’exploiter. Je laisse l’opacité à 100% car je vais gérer directement la transparence dans mon fichier image. Je positionne ma watermark en bas à droite.
FLEXIcontent va générer automatiquement 3 types de miniatures lors de l’upload de notre image. Nous pourrons ainsi exploiter par la suite dans nos templates différentes tailles d’images et optimiser par conséquent les temps de chargement.
Pour chacune des tailles je définis mes hauteurs et largeur maximum. Pour la grande et moyenne miniature, je laisse l’image à l’échelle et je décide d’incruster ma propre watermark que je stocke à l’endroit suivant : images/flexicontent/core/watermark.png .watermark
Pour ma petite miniature je n’utiliserais pas de watermark en vue de la petite taille de mon image.
Enfin il est également possible de lier automatiquement ma miniature avec mon image originale par le biais d’une popup qui s’affichera automatiquement dans mon template. Vous avez le choix entre l’effet rockbox ou multibox.

  • File

Je veux maintenant ajouter une zone où je pourrais mettre à disposition différentes ressources concernant le stade : plan des tribunes, services disponibles, brochures… Je rajoute donc ma zone de type « file » que je nomme « ressources ».
param_champ_file
Cette zone me permettra automatiquement d’ajouter plusieurs fichiers. Choisissez le type de séparateur entre les différents fichiers.
« Utiliser l’icône MIME » vous permettra d’afficher sur le frontend une petite icône devant le nom du fichier qui dépendra directement du type MIME de votre fichier.
« Utiliser un bouton télécharger », cela vous permet d’afficher un bouton « Download » plutôt qu’un lien vers le fichier. Le souci c’est que si j’active cette fonction, je ne pourrais gérer qu’un fichier et donc cela ne m’intéresse pas.

  • Select

Pour chaque stade je veux y associer la musique qui est jouée lors de l’entrée des joueurs sur la pelouse. Je vais donc utiliser une liste qui va directement dépendre des fichiers de FLEXIcontent. Au préalable, je fais quelques modifications dans les paramètres généraux de FLEXIcontent, j’autorise l’upload des fichiers mp3 puis je modifie le chemin d’upload : « images/flexicontent/fichiers/ » . Puis j’installe le plugin JosDewPlayer qui me permettra de lire les fichiers mp3 correctement.
param_champ_selectJe nomme mon champ « hymne ». J’active l’exécution des plugins sur le contenu et je sélectionne uniquement josdewplayer afin d’optimiser le fonctionnement.
J’active également la suppression des espaces dans les noms pour éviter toute erreur dans l’adresse du fichier.
Pour paramétrer la lecture de mon fichier, je renseigne en préfixe :  {play}images/flexicontent/fichiers/   ,puis en sufixe : {/play}
Je souhaite utiliser le SQL afin de renseigner ma liste directement à partir des fichiers de FLEXIcontent. Je renseigne ma requête sql :

1
2
3
SELECT filename AS value, filename AS text
FROM #__flexicontent_files AS fi
WHERE fi.ext="mp3" AND fi.published=1

Il faut effectuer une requête avec deux champs à afficher auquel il faut obligatoirement associer l’alias « value » et « text » qui correspond bien entendu à la valeur et au texte de la liste. Il faut savoir que la valeur par défaut qui sera renvoyée lors de l’affichage du template sera « text ».  Je filtre les fichiers en ne sélectionnant que les mp3 qui sont publiés.

  • Select multiple

Je souhaite associer et afficher les différents partenaires du club. Je met en place un « select multiple » qui sera associé au composant des bannières sous Joomla afin de pouvoir sélectionner plusieurs partenaires. Je nomme mon champ « partenaires »
param_champ_multipleJe vais utiliser un plugin afin d’afficher mes bannières, je n’oublie pas d’éxecuter les plugins de contenu et je sélectionne mon plugin « Mos Banner 0.4 » préalablement installé. Je supprime les espaces. Je saisis les balises de mon préfixe « {mosbanner:id= » puis de mon suffixe « } ».
Je vais lier la liste à la liste des bannières publiées de Joomla, j’active donc le SQL et je rentre ma requête :

1
2
3
4
SELECT bid AS value, name AS text
FROM #__banner AS ba
WHERE ba.showBanner=1
ORDER BY ba.name


Enfin je sélectionne la virgule comme séparateur de valeurs car c’est le caractère qu’utilise mon plugin.
On verra par la suite que le résultat obtenu n’est pas vraiment celui souhaité, et qu’il me faudra créer mon propre type de champ (voir chapitre suivant)

  • Checkbox, Checkbox image, Radio buttons et Radio image buttons

Ces champs sont gérés de la même manière en dehors du fait que dans certains on peut y ajouter des images.
Je vais sélectionner le type « Checkbox image » et renseigner les éléments en respectant le format
« valeur::etiquette::image%% », mes valeurs : « boissons::Boissons::boissons.gif%% wc::Toilettes::wc.gif%% resto::Restaurants::resto.gif%% parking::Parking::parking.gif%% fumer::Interdiction de fumer::fumer.gif »
Il ne faut pas mettre le double pourcentage à la fin de la liste.
param_champ_checkboxJe modifie ensuite le chemin d’accès à mes images « images/flexicontent/core/ ». Il est également possible de cocher par défaut certaines valeurs, en utilisant la valeur par défaut. Il suffit alors de saisir les « values » séparées par des virgules.

Mes champs personnalisés sont maintenant terminés.

liste_champs_persos

Créer son propre type de champ

FLEXIcontent vous offre la possibilité de créer vos propres types de champs, on peut donc imaginer faire par exemple un champ avec un compteur incrémentiel (+,-) ou bien encore un scroll afin de déterminer les valeurs. Je vais juste présenter les possibilités car pour ma part je vais juste faire une copie de « select multiple » pour transformer le rendu qui est pour le moment sous cette forme : [prefixe_plugin][etiquette1][suffixe_plugin][separateur][prefixe_plugin][etiquette2][suffixe_plugin][separateur] … dans ce nouveau format que je souhaite : [prefixe_plugin][valeur1][separateur][valeur2][separateur]…[suffixe_plugin]

Un type de champ dans FLEXIcontent est en fait un plugin, les plugins sont automatiquement installés dans le répertoire plugins/flexicontent_fields/ et sont constitués de deux fichiers [nom_plugin].xml et [nom_plugin].php ainsi que les fichiers de langues associés.

Le fichier XML

Je fait donc une copie de l’original selectmultiple.xml que je renomme en selectmultiple.php .C’est un fichier standard d’installation de Joomla, on y trouve en premier lieu les mentions légales et la description, Je modifie donc juste le nom de mon plugin pour le distinguer du plugin original, je me rajoute au niveau de l’auteur puis je met à jour la version :

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="flexicontent_fields" method="upgrade">
 <name>Select Multiple Advanced</name>
 <author>Emmanuel Danan, update Maxime Danjou(NetAssoPro)</author>
 <creationDate>March 2009</creationDate>
 <copyright>Copyright (C) 2009 Emmanuel Danan</copyright>
 <license>GNU/GPL v2</license>
 <authorEmail>emmanuel@vistamedia.fr</authorEmail>
 <authorUrl>www.vistamedia.fr</authorUrl>
 <version>1.1</version>
 <description>FLEXI_FIELD_SELECTMULTIPLE</description>

J’indique le nom de fichier de mon plugin :

12
13
14
<files>
 <filename plugin="selectmultiplead">selectmultiplead.php</filename>
</files>

On retrouve ensuite les paramètres du plugin. Je rajoute deux paramètres, le premier que je nomme « postext_mode » qui me permettra de dire si on utilise le préfixe et suffixe sur chaque valeur, ou bien seulement en début et fin de la totalité des valeurs. Mon second paramètre « value_mode » permet de déterminer si je vais afficher mes valeurs ou mes étiquettes.

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<params group="standard">
 <param name="display_label" type="radio" default="1" label="FLEXI_FIELD_DISPLAY_LABEL" description="FLEXI_FIELD_DISPLAY_LABEL_DESC">
 <option value="0">No</option>
 <option value="1">Yes</option>
 </param>
 </params>
 <params group="group-selectmultiplead" addpath="/administrator/components/com_flexicontent/elements">
 <param name="trigger_onprepare_content" type="radio" default="0" label="FLEXI_ENABLE_TRIGGER_ONPREPARECONTENT_EVENT" description="FLEXI_ENABLE_TRIGGER_ONPREPARECONTENT_EVENT_DESC">
 <option value="0">FLEXI_NO</option>
 <option value="1">FLEXI_YES</option>
 </param>
 <param name="plugins" type="pluginlist" label="FLEXI_FIELD_CHOOSE_SPECIFIC_PLUGINS" description="FLEXI_FIELD_CHOOSE_SPECIFIC_PLUGINS_DESC" />
 <param name="remove_space" type="radio" default="0" label="FLEXI_REMOVE_SPACE" description="FLEXI_REMOVE_SPACE_DESC">
 <option value="0">FLEXI_NO</option>
 <option value="1">FLEXI_YES</option>
 </param>
 <param name="pretext" type="text" default="" label="FLEXI_FIELD_PREFIX_TEXT" description="FLEXI_FIELD_PREFIX_TEXT_DESC" />
 <param name="posttext" type="text" default="" label="FLEXI_FIELD_SUFFIX_TEXT" description="FLEXI_FIELD_SUFFIX_TEXT_DESC" />
 <param name="postext_mode" type="radio" default="0" label="FLEXI_FIELD_POSTEXT_MODE" description="FLEXI_FIELD_POSTEXT_MODE_DESC">
 <option value="0">FLEXI_NO</option>
 <option value="1">FLEXI_YES</option>
 </param>
 <param name="sql_mode" type="radio" default="0" label="FLEXI_FIELD_SQL_MODE" description="FLEXI_FIELD_SQL_MODE_DESC">
 <option value="0">FLEXI_NO</option>
 <option value="1">FLEXI_YES</option>
 </param>
 <param name="field_elements" type="textarea" default="" rows="5" cols="25" label="FLEXI_FIELD_ELEMENTS" description="FLEXI_FIELD_ELEMENTS_DESC" />
 <param name="default_values" type="text" default="" label="FLEXI_FIELD_DEFAULT_VALUES" description="FLEXI_FIELD_DEFAULT_VALUES_DESC" />
 <param name="size" type="text" default="6" size="2" label="FLEXI_FIELD_SIZE" description="FLEXI_FIELD_SIZE_DESC" />
 <param name="value_mode" type="radio" default="0" label="FLEXI_FIELD_VALUE_MODE" description="FLEXI_FIELD_VALUE_MODE_DESC">
 <option value="0">FLEXI_FIELD_LABEL</option>
 <option value="1">FLEXI_FIELD_VALUE</option>
 </param>
 <param name="separatorf" type="list" default="1" label="FLEXI_FIELD_SEPARATOR_FRONTEND" description="FLEXI_FIELD_SEPARATOR_FRONTEND_DESC">
 <option value="0">FLEXI_SPACE</option>
 <option value="1">FLEXI_LINE_BREAK</option>
 <option value="2">FLEXI_PIPE</option>
 <option value="3">FLEXI_COMMA</option>
 <option value="4">FLEXI_FIELD_TAG_CUSTOM</option>
 </param>
 <param name="opentag" type="text" default="" label="FLEXI_FIELD_TAG_OPEN" description="FLEXI_FIELD_TAG_OPEN_DESC" />
 <param name="closetag" type="text" default="" label="FLEXI_FIELD_TAG_CLOSE" description="FLEXI_FIELD_TAG_CLOSE_DESC" />
 </params>

Dans la dernière partie du fichier xml, je charge mes fichiers langues (qui ne sont également qu’une copie des originaux), je rajoute dans chacun de mes fichiers les variables suivantes : FLEXI_FIELD_VALUE_MODE, FLEXI_FIELD_VALUE_MODE_DESC, FLEXI_FIELD_VALUE, FLEXI_FIELD_POSTEXT_MODE, FLEXI_FIELD_POSTEXT_MODE_DESC.

58
59
60
61
62
<languages>
 <language tag="en-GB">en-GB.plg_flexicontent_fields_selectmultiplead.ini</language>
 <language tag="fr-FR">fr-FR.plg_flexicontent_fields_selectmultiplead.ini</language>
 </languages>
</install>

Le fichier PHP

Le fichier est une classe composé de 5 événements :

  • onDisplayField : Affichage du champ dans la saisie du contenu
  • onDisplayFieldValue : Affichage du champ formaté pour le frontend
  • onBeforeSaveField : Formate la valeur du champ avant qu’elle soit enregistré
  • onAfterSaveField : N’est pas encore utilisé pour le moment, mais dans un futur proche il permettra d’effectuer des interactions avec les autres composants.
  • onDisplayFilter : Affiche les filtres dans la vue du template catégorie. Par défaut c’est des listes.

Je vais pour ma part uniquement modifier l’événement onDisplayFieldValue pour rajouter les conditions qui dépendent de mes 2 nouveaux paramètres.
Je commence par modifier le nom de ma classe et mon constructeur que je nomme : plgFlexicontent_fieldsSelectmultiplead.
Puis ensuite dans la première ligne de chaque événement, je modifie le code de la manière suivante :

1
if ($field->field_type != 'selectmultiplead') return;

Je rajoute donc les conditions dans mon code et j’enlève également les &nbsp; dans mes séparateurs afin de ne pas créer de bug avec mon plugin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
function onDisplayFieldValue(&$field, $item, $values = null, $prop = 'display')
 {
  // execute the code only if the field type match the plugin type
  if ($field->field_type != 'selectmultiplead') return;
  $values = $values ? $values : $field->value ;
  // some parameter shortcuts
  $remove_space = $field->parameters->get('remove_space', 0) ;
  $pretext = $field->parameters->get('pretext', '') ;
  $posttext = $field->parameters->get('posttext', '') ;
  $field_elements = $field->parameters->get('field_elements', '') ;
  $sql_mode = $field->parameters->get('sql_mode', 0) ;
  $separatorf = $field->parameters->get('separatorf') ;
  $opentag = $field->parameters->get('opentag', '') ;
  $closetag = $field->parameters->get('closetag', '') ;
 
  // j'ajoute mes deux nouveaux paramètres
  $value_mode = $field->parameters->get('value_mode', '') ;
  $postext_mode = $field->parameters->get('postext_mode', '') ;
 
  // je retire dans les séparateurs le &nbsp;
  switch ($separatorf) {
   case 0:
    $separatorf = '&nbsp;';
    break;
   case 1:
    $separatorf = '<br />';
    break;
   case 2:
    $separatorf = '|';
    break;
   case 3:
    $separatorf = ',';
    break;
   case 4:
    $separatorf = $closetag . $opentag;
    break;
  default:
   $separatorf = '&nbsp;';
   break;
  }
  if ($pretext) {
   $pretext = $remove_space ? $pretext : $pretext . ' ';
  }
  if ($posttext) {
   $posttext = $remove_space ? $posttext : ' ' . $posttext;
  }
  if ($sql_mode) { // SQL mode
   $db = &JFactory::getDBO();
 
   $query = preg_match('#^select#i', $field_elements) ? $field_elements : '';
   $db->setQuery($query);
   $results = $db->loadObjectList();
 
   if (!$results) {
    $field-> {$prop} = '';
   } else {
    $display = array();
    foreach($results as $result) {
     for($n = 0, $c = count($values); $n < $c; $n++) {
      if ($result->value == $values[$n]) {
       // selon qu'on décide d'afficher la valeur ou l'étiquette
       if ($value_mode == 0) {
        $thevalue = $result->text ;
       } else {
        $thevalue = $result->value ;
       }
       // selon qu'on décide d'utiliser le plugin pour toutes les valeurs ou pour l'ensemble des valeurs
       if ($postext_mode == 0) {
        $display[] = $pretext . $thevalue . $posttext;
       } else {
        $display[] = $thevalue ;
       }
      }
     }
    }
   }
  } else { // Elements mode
   // initialise property
   $listelements = explode("%% ", $field_elements);
   $listarrays = array();
   foreach ($listelements as $listelement) {
    $listarrays[] = explode("::", $listelement);
   }
   $display = array();
   foreach ($listarrays as $listarray) {
    for($n = 0, $c = count($values); $n < $c; $n++) {
     if ($values[$n] == $listarray[0]) {
      // selon qu'on décide d'afficher la valeur ou l'étiquette
      if ($value_mode == 0) {
       $thevalue = $listarray[1];
      } else {
       $thevalue = $listarray[0];
      }
      // selon qu'on décide d'utiliser le plugin pour toutes les valeurs ou pour l'ensemble des valeurs
      if ($postext_mode == 0) {
       $display[] = $pretext . $thevalue . $posttext;
      } else {
       $display[] = $thevalue ;
      }
     }
    }
   }
  }
  $field-> {$prop} = implode($separatorf, $display);
  // selon qu'on décide d'utiliser le plugin pour toutes les valeurs ou pour l'ensemble des valeurs
  if ($postext_mode == 1) {
   $field-> {$prop} = $pretext . $field-> {$prop} . $posttext;
  }
  $field-> {$prop} = $opentag . $field-> {$prop} . $closetag;
 }

// some parameter shortcuts
$remove_space = $field->parameters->get(’remove_space’, 0) ;
$pretext = $field->parameters->get(’pretext’,  ») ;
$posttext = $field->parameters->get(’posttext’,  ») ;
$field_elements = $field->parameters->get(’field_elements’,  ») ;
$sql_mode = $field->parameters->get(’sql_mode’, 0) ;
$separatorf = $field->parameters->get(’separatorf’) ;
$opentag = $field->parameters->get(’opentag’,  ») ;
$closetag = $field->parameters->get(’closetag’,  ») ;
$value_mode = $field->parameters->get(’value_mode’,  ») ;
$postext_mode = $field->parameters->get(’postext_mode’,  ») ;
switch ($separatorf) {
case 0:
$separatorf = ‘&nbsp;’;
break;
case 1:
$separatorf = ‘<br />’;
break;
case 2:
$separatorf = ‘|’;
break;
case 3:
$separatorf = ‘,’;
break;
case 4:
$separatorf = $closetag . $opentag;
break;
default:
$separatorf = ‘&nbsp;’;
break;
}

if ($pretext) {
$pretext = $remove_space ? $pretext : $pretext . ‘ ‘;
}
if ($posttext) {
$posttext = $remove_space ? $posttext : ‘ ‘ . $posttext;
}
if ($sql_mode) { // SQL mode
$db = &JFactory::getDBO();

$query = preg_match(’#^select#i’, $field_elements) ? $field_elements :  »;
$db->setQuery($query);
$results = $db->loadObjectList();

if (!$results) {
$field-> {
$prop} =  »;
} else {
$display = array();
foreach($results as $result) {
for($n = 0, $c = count($values); $n < $c; $n++) {
if ($result->value == $values[$n]) {
if ($value_mode == 0) {
$thevalue = $result->text ;
} else {
$thevalue = $result->value ;
}
if ($postext_mode == 0) {
$display[] = $pretext . $thevalue . $posttext;
} else {
$display[] = $thevalue ;
}
}
}
}
}
} else { // Elements mode
// initialise property
$listelements = explode( »%% « , $field_elements);
$listarrays = array();
foreach ($listelements as $listelement) {
$listarrays[] = explode( »:: », $listelement);
}

$display = array();
foreach ($listarrays as $listarray) {
for($n = 0, $c = count($values); $n < $c; $n++) {
if ($values[$n] == $listarray[0]) {
if ($value_mode == 0) {
$thevalue = $listarray[1];
} else {
$thevalue = $listarray[0];
}
if ($postext_mode == 0) {
$display[] = $pretext . $thevalue . $posttext;
} else {
$display[] = $thevalue ;
}
// end of modification
}
}
}
}
$field-> {$prop} = implode($separatorf, $display);
if ($postext_mode == 1) {
$field-> {$prop} = $pretext . $field-> {$prop} . $posttext;
}
$field-> {$prop} = $opentag . $field-> {$prop} . $closetag;
}

Une fois toutes mes modifications effectuées je n’ai plus qu’à créer mon fichier zip afin de réaliser le package de mon plugin que je pourrais installer via Joomla.
Vous pouvez télécharger l’exemple que j’ai réalisé ici : plg_flexicontent_selectmultiplead.

Je vais donc changer maintenant mon type de champ pour mon champ « partenaires » afin de lui affecter mon nouveau type : « Select Multiple Advanced ». Au niveau des options pour « Type d’information à afficher (frontend) », je sélectionne « valeur », puis pour « Multi Suffixe, préfixe » je le laisse sur « non ».

Positionner les champs dans le template

Dans ce dernier chapitre de la 2ème partie du tutoriel de la créations de template sous FLEXIcontent, je vais vous montrer comment positionner ses champs dans son propre template via l’interface du back office.

Je me rends dans la section Template de FLEXIcontent puis au niveau de la ligne de mon template « Stade » je clique sur l’icône associé à la Vie Item.

Le positionnement des champs se fait alors par un simple glisser/déposer. Je met en place mes champs de la manière suivante :

template_zoneDans une prochaine version de FLEXIcontent il sera également possible de créer ses propres zones directement via l’interface graphique… plutôt intéressant.

Je vous montrerez également dans la quatrième partie de ce tutoriel comment insérer des champs fixes directement dans le template.

Voilà c’est tout pour cette fois-ci, dans la prochaine partie j’aborderais la partie de la saisie d’un contenu à travers notre type personnalisé. Cela vous permettra d’avoir un aperçu de l’agencement des différents champs et de leur mode de saisie.

Catégorie: Web

Commentaires

Le 27/01/2010 à 20:51 , NetAssoBlog | Tutoriel – Template FLEXIcontent – Part1 : la structure a dit:

NetAssoBlog | Tutoriel – Template FLEXIcontent – Part1 : la structure

[...] Part2 : Les types de champs disponibles pour créer son template [...]

Le 21/02/2010 à 11:55 , poussin a dit:

poussin

Bonjour, pardon mais je ne trouve pas mosbanner 0.4 pour joomla 1.5. Merci de me donner une info svp !!

Le 21/02/2010 à 14:11 , poussin a dit:

poussin

d’abord, merci pour ce super tuto, même si je ne comprends pas tout et que je ne sais pas encore ce que je peux faire avec flexicontent lol, et merci pour ta réponse, mais quand on récupère le zip, c’est la version 3 de mosbanner qui n’est pas compatible joomla 1.5 ?! snifffff exist’il une solution ?

Le 24/02/2010 à 09:53 , Maxime a dit:

maxime

Oups en effet tu as raison le link a été modifié entre temps. Je viens de modifier mon article pour rediriger le lien vers la version MosBanner 0.4.
Tout rentre dans l’ordre

Le 24/02/2010 à 15:53 , poussin a dit:

poussin

Merci beaucoup pour ta réponse et ton super travail.

Le 16/03/2010 à 15:04 , Olivier a dit:

Olivier

Bonjour Maxime,
Je cherche à faire en sorte que mon champ image renvoi vers une page web et non la popup multibox: est ce réalisable?
Merci
Olivier

Le 16/03/2010 à 15:50 , Maxime a dit:

maxime

Si c’est pour une url fixe, il n’y as pas de souci. Il suffit alors que tu mettes dans ton ton préfixe de champs :
< a href=’http://www.tonurl.com’ >
et en suffixe :
</a>

Le 16/03/2010 à 16:05 , olivier a dit:

olivier

ok merci!

mais si l’url varie suivant la photo: c’est à dire une photo= renvoi vers une page web du site déterminée à l’insertion de la photo???

bref pour que l’utilisateur ne touche pas le code…

Un grand merci

Olivier

Le 16/03/2010 à 17:09 , Maxime a dit:

maxime

Et bien à ce moment là il faut que dans ton type tu ajoutes un champs texte que tu peux appeler « mon_lien » par exemple et dans ton template alors tu mets ce code là :
<?php
echo "<a href=’" . $this->fields['mon_lien']->value[0] ."’>";
echo $this->fields['mon_image']->display;
echo "</a>";
?>

Le 22/03/2010 à 22:03 , olivier a dit:

olivier

merci Maxime,
j’ai suivi tes instructions mais en fait ‘mon_lien’ vient se coller à la suite du lien de la page active avec les guillemets… ca donne pour exemple:
http://www.monsite.fr/‘mon_lien’
J’ai loupé quelque chose???
encore merci
Olivier

Le 22/03/2010 à 22:52 , olivier a dit:

olivier

c’est bon j’ai trouvé… j’ai inversé les  » par ‘ et ‘ par  » et ca fonctionne :)
merci
Olivier

Le 14/04/2010 à 23:35 , Fred a dit:

Fred

Merci pour ce tuto, c’est vraiment bien détaillé et ça me permet de comprendre pas mal de choses pour essayer de me faire la main avec ce magnifique outil ^^

Petite question concernant le fichier XML de la création du plugin, quand je lis « Je fait donc une copie de l’original selectmultiple.xml que je renomme en selectmultiple.php » je suppose qu’il faut le renommer en selectmultiplead.xml et non en selectmultiple.php ? c’est ça?

Sinon c’est plutôt le pied, je vais même pouvoir m’en servir sur mon site

Le 14/04/2010 à 23:45 , Fred a dit:

Fred

Autre petite question:
Je vais donc changer maintenant mon type de champ pour mon champ « partenaires » afin de lui affecter mon nouveau type : « Select Multiple Advanced ». Au niveau des options pour « Type d’information à afficher (frontend) », je sélectionne « valeur », puis pour « Multi Suffixe, préfixe » je le laisse sur « non »

J’ai repris directement ton plugin et l’ai installé.
Dans les options j’ai:
- FLEXI_FIELD_POSTEXT_MODE (oui ou non)
- FLEXI_FIELD_VALUE_MODE (etiquette ou FLEXI_FIELD_VALUE)
- balise ouvrante
- balise fermante
est-ce normal? ou bien j’ai loupé quelque chose?

Le 24/05/2010 à 13:45 , alfred a dit:

alfred

Bonjour,
premièrement merci pour ce composant qui nous aide bcp au niveau de la gestion des contenus.
j’ai une catégorie qui contient des articles; j’ai créé un lien vers cette catégorie en BLOG.
un article principal et les autres apparaient en 2 colonnes.
SVP de m’informer comment faire pour changer la taille des images des articles (il me donne un taille de 150/150).je veut affecter 78/90 comme taille des images pour les articles en 2 colonnes et 140/165 pour l’article principale.
Meric bcp d’avance

Le 15/07/2010 à 05:52 , greg a dit:

greg

Bonjour,

J’ai essayé afin d’automatiser les champs utilisant un plugin (type weather) d’entrer dans la partie Valeur par défaut fields['capitale']->display; ?> mais ça ne fonctionne pas |-)
Est ce une erreur de ma part ou est-ce totalement impossible de faire quelque chose comme ça?

Merci d’avance pour votre aide

Le 15/07/2010 à 05:55 , greg a dit:

greg

Hi,

ça a fait la même chose que sur Flexicontent, ça a supprimé la moitié du code :(
la balise d’ouverture PHP + echo + $ + this + ->
donc je pense que par sécurité le code est nettoyé !!!

Y a t-il un autre moyen?

Le 15/07/2010 à 09:03 , Maxime a dit:

maxime

Bonjour,
C’est normal en effet, il n’est pas possible d’insérer du code php, c’est une sécurité.
Le seul moyen serait alors de te créer ton propre plugin et par conséquent contourné ce problème.

Le 17/07/2010 à 08:15 , greg a dit:

greg

Ah! je me disais aussi!
Bon je suis pas assez calé pour faire ça, je vais le faire à la main en attendant. J’essaierai de voir à faire ce plugin quand j’aurai plus de connaissance ;)

merci pour la réponse

Le 20/07/2010 à 07:45 , poussin a dit:

poussin

Bonjour, avant de me lancer dans l’avanture de la création, je cherche un plugins de catalogue, avec un gestionnaire de photo style minigalerie, avec des champs comme marque, modèle, version, prix, état, description. Cela existe ?

Le 20/07/2010 à 09:11 , Maxime a dit:

maxime

Salut Poussin,
Pour tout ce qui est champs personnalisé (marque,modèle,version,prix,état,description) il n’y aura aucun souci. Pour la partie mini-galerie, FLEXIcontent gère bien une partie photo mais qui n’est pas dynamique à ce jour (c’est à dire que tu peux rajouter un nombre de photos prédéfinies). Cependant je sais qu’un plugin mini-gallerie est en préparation, concernant sa date de sortie le mieux c’est de se rapprocher directement de la source : http://www.flexicontent.org
Bonne journée

Le 20/07/2010 à 10:26 , poussin a dit:

poussin

le plugin mini galerie existe bien dans la dernière version de flexicontent. mais comment faire pour que l’ensemble des champs fassent un plugins que l’on puisse répéter. Ou plus simple pour moi aujourd’hui car je ne suis pas du tout informaticien (tantpis pour la mini galerie). Comment partir du champs image flexicontent et le modifier pour rajouter et modifier des champs?

Le 20/07/2010 à 10:36 , poussin a dit:

poussin

Ah zut on ne peut pas rajouter « autoriser les valeurs multiples » sur le champs image de flexicontent… Comment faire ?

Le 20/07/2010 à 11:16 , Maxime a dit:

maxime

Ah oui en effet, le plugin mini galerie est sortie ;) je n’avais pas la dernière version sous la main.
Je ne comprends pas ton souci alors car tu peux bien rajouter autant de photos que tu le souhaites avec ce plugin…
Si tu peux m’expliquer en détail ton besoin

Le 20/07/2010 à 12:01 , poussin a dit:

poussin

j’aimerais comme le champ image, avoir un champ unique ou je puisse changer les lignes attribut alt et attribut title en marque et modèle, rajouter une ligne prix, version, description. Tout ce qui faut pour créer un article et que l’on puisse en rajouter de manière simple comme on fait pour champ text avec l’onglet ajouter une valeur. ceci créant ainsi un petit catalogue dans un contenu flexicontent. C’est possible ?

Le 20/07/2010 à 16:21 , Maxime a dit:

maxime

Oui je ne vois pas trop de difficultés dans ce que tu viens de décrire. FLEXIcontent permet de créer autant de champs personnalisés que tu veux.
C’est après à toi de mettre en page correctement tes champs dans ton template pour donner le rendu que tu souhaites. Cependant en effet je pense que si tu souhaites faire une interface un peu plus évolué, il faudra certainement mettre les mains un peu dans le cambouis et modifier les templates de base.

Le 20/07/2010 à 16:44 , poussin a dit:

poussin

merci pour ta réponse, de toute façon je n’ai pas le choix je plonge en eaux troubles … Si je suis ma logique je dois faire un plugin en utilsant le plugin image + text x fois.

Le 20/07/2010 à 16:51 , Maxime a dit:

maxime

Oui en effet. Dans le cas où tu en aurais besoin, nous proposons des solutions commerciales de développement professionnel sur mesure.

Le 26/10/2010 à 19:02 , Steph a dit:

Steph

bonsoir tout l’monde :)
je suis gentiment redirigé vers ici par le forum Flexi, il parait qu’un mec touche assez bien sa bille avec la bête :haha:
bref, trève d’éloges je redirige vers ma question : http://www.flexicontent.org/forum/index.php?f=9&t=2431&rb_v=viewtopic#p11152
@+

Le 27/10/2010 à 10:19 , Maxime a dit:

maxime

Bonjour,
Je viens de voir ton souci, et en effet tu ne pourras pas faire grand chose sans modifier quelques lignes dans le plugin ou bien dans le template. Tous à l’affichage montre la valeur du champs et non pas l’identifiant.
Tu peux donc modifier ton template pour afficher l’id avec : $this->fields['ton_champs']->value, mais le souci est qu’il ne prendre pas en compte ton plugin, il faudrait alors faire appel à l’exécution des plugins content de nouveau et je trouve ça un peu lourd.
Donc je te conseille de faire une copie du plugin de champs selectmultiple(.php et .xml), et d’en créer un nouveau que tu appelleras par exemple selectmultipleid.
Modifiie donc le nom de tes fichiers, modifier ton fichier xml en remplacant selectmultiple par selectmultipleid, fait la même chose dans ton fichier php. Puis modifie la méthode onDisplayFieldValue à partir de la ligne 208 où il y a marqué : if ($sql_mode){ et tu supprimes le tout jusqu’à la fin de la méthode et tu le remplace par :
$display = array();
for($n = 0, $c = count($values); $n < $c; $n++) {
$display[] = $pretext . JText::_($result->text) . $posttext;
}
if ($display) {
$field-> {$prop} = implode($separatorf, $display);
$field-> {$prop} = $opentag . $field-> {$prop} . $closetag;
} else {
$field-> {$prop} =  »;
}

Ca doit être bon maintenant.

Le 28/10/2010 à 06:52 , Steph a dit:

Steph

merci de partager ta patience et tes connaissances, à charge de revanche ! :drink:
après avoir été accusé d’utiliser des variables non déclarées ($result) ou d’avoir laissé ouvertes les fonctions suivantes (accolades), j’en suis là :

- le copié/collé ligne 208 ne marche pas…sans la requête, pas de $results
- je remplace donc le segment $display = array(); ligne 221 avec ton code
- j’ajoute le « saucissonnage » de $results en tranches de $result avec foreach($results as $result) {
et là ça marche très bien pour phpMyAdmin, avec les bonnes values associées au bon Field_ID et au bon Item_ID :d

…sauf que la page débute par une liste de « Warning >>> there is no article with id = xxxxxxx « (mes autres tranches de saucisson ;)

…sauf que mon plugin est aux abonnés absent pour afficher les values pourtant en base (malgré plugin publié, SQL OK, requête OK et qu’il marche sur un champ texte ???….bref, je poste ça et je retourne voir)

bref on est sur le chemin, mais y’a d’la boue
bonne journée !

Le 06/11/2010 à 16:37 , emmanuel a dit:

emmanuel

Je suis entrain de faire un site web pour un ami qui a acheter un chouette templates yoo .mon soucis est le suivant ,j’utilise le template par défaut de flexi qui me suffit,pour ce qu’il veut mais dans la présentation de ces articles j’utilise les étiquetes ,mais ces étiquettes sur un fond noir apparaisse en gris ce qui n’est pas très lisible, je cherche dons simplement a modifier la taille de police de l’etiquette en h2 ou h3 ou h4 la couleur changerait en même temps que la couleur du template

merci

Le 09/11/2010 à 15:25 , Maxime a dit:

maxime

Bonjour,
Ton problème c’est purement du CSS, il suffit de paramétrer correctement tes déclarations pour arriver au bon rendu. Il doit peut être y avoir des conflits entre le CSS de Yootheme et celui de Flexi.
La solution est tout simplement de reprendre tes fichiers CSS et d’effectuer les corrections nécessaire. Hélas je ne pourrais pas trop t’aider sur ce point.

Le 11/11/2010 à 11:08 , steph a dit:

steph

@Maxime : j’ai trouvé une solution de rechange propre et fonctionnelle que je posterai ce matin sur le forum d’origine. Encore merci de ton attention !

@emmanuel : je ne suis pas sûr de très bien comprendre si c’est la police en front ou en back end que tu souhaites modifier.
Dans le premier cas, il faudra créer ou modifier la balise de ton étiquette dans le CSS de ton template
Dans le deuxième c’est à l’adresse TonSite\components\com_flexicontent\templates\default\css\item.css
Astuce : quand je cherche le nom d’une classe ou d’un DIV, j’utilise la barre d’outil Web Develloper pour Firefox et je choisis d’entourer l’élément survolé en affichant son nom : tu as ainsi l’arborescence complète du body jusqu’à ton élément ;)

Le 21/11/2010 à 14:54 , pascal a dit:

pascal

Bonjour et merci pour ce tuto qui me rend service tous les jours ou presque…

J’aurais une petite question que je n’arrive pas à résoudre, je voudrais faire un champs personnalisé reprennant uniquement la catégorie principale et je ne trouve pas de solution… une idée ?
merci d’avanve

Le 22/11/2010 à 09:55 , Maxime a dit:

maxime

Bonjour,
Quelle est la difficulté que tu rencontres concrètement ? Où en est tu au niveau de ton développement ?

Le 22/11/2010 à 14:19 , pascal a dit:

pascal

J’ai une partie magazine, chaque article appartient à une catégorie fonctionnelle qui est ma catégorie principale. il appartient aussi à une catégorie dîte « Archive » qui me permet d’afficher tous les acticles sous forme de liste quelque soit la catégorie fonctionnelle. dans ce template lorsque je mets le champ catégorie, il apparait toutes les catégories (la catégorie principale et archive) je ne voudrais voir que la catégorie principale…
mon dev est terminé, juste ce petit truc qui me chiffone :(

Le 22/11/2010 à 17:32 , Maxime a dit:

maxime

Ah j’avais cru comprendre que tu avais développé un type de champs spécifique, ce n’est pas le cas apparament.
Je comprends ta demande, faire apparaître juste le nom de la catégorie… Donc 2 possibilités, soit créer un type de champs spécifique pour l’afficher (un peu lourd) ou soit une petit bidouille qui consiste à modifier ton template pour afficher juste le nom de la catégorie principale en tronquant le résultat retourner par :
$this->fields['categories']->display;

Le 23/11/2010 à 14:55 , pascal a dit:

pascal

ok merci du conseil, je vais regardé mais pour l’instant j’ai pas trouvé cette instruction.

Le 11/04/2011 à 13:54 , malouani a dit:

malouani

Bonjour,

je te remercie beaucoup pour ce tuto qui est formidable.
je voudrai savoir comment je fais pour afficher une image et la description en même temps, je m’explique: j’ai un menu qui contient des rubriques, je veux quand je clique sur une rubrique, il m’affiche une liste d’articles et chaque article est constitue de : titre, image , description. j’arrivais pas afficher ça, il m’affiche le titre,description et un lien Lire la suite et quand je clique sur lire la suite il m’affiche le titre, image, description.

Le 12/04/2011 à 10:34 , Maxime a dit:

maxime

Bonjour,
Tu as une possibilité de régler l’affichage des miniatures d’image dans les paramètres du template associé à la catégorie. Tu dois aller dans FLEXIcontent, gestion des catégories, modifier la catégorie en question.
Donc tu dois avoir le template « blog » qui est associé (ou un autre similaire), va dans les paramètres de ce template (paramètres blog). Là tu as les options qui te permettent de sélectionner et de formater l’image à afficher.

Le 20/04/2011 à 17:01 , malouani a dit:

malouani

Bonjour,

merci pour ta réponse, j’ai utilisé le template defaut et j’ai réussi à affiché les images,
j’ai une autre question:
j’ai créé une catégorie et dans cette catégorie j’ai créé des sous catégories qui contiennent des articles. quand je clique sur cette catégorie dans le menu, elle m’affiche en haut les sous catégories et en bas toutes les articles (sur la meme page), ce que je veux c’est quand je clique sur une sous catégorie, elle m’affiche TOUJOURS en haut les sous catégorie et en bas les articles de cette sous catégorie

Le 22/04/2011 à 09:11 , Maxime a dit:

maxime

Bonjour,
Ceci est plus complexe car l’affichage des sous-catégories dans FLEXIcontent est contextuel. Donc quand tu affiches les articles d’une sous catégorie, cette dernière ne peut pas en natif afficher les catégories du même niveau.
Il faut donc faire un peu de code et modifier le template pour arriver à tes fins.

Le 22/04/2011 à 11:07 , malouani a dit:

malouani

ok, merci beaucoup.

Le 18/05/2011 à 11:35 , malouani a dit:

malouani

Bonjour,

1. comment je fais pour afficher une liste déroulante (par exemple une liste des commune), j’ai utilisé le champs select mais il m’affiche la liste en backoffice et moi je veux l’afficher en front office pour que les utilisateurs puissent choisir la commune.
2. comment je fais quand l’utilisateur choisi une commune, je lui affiche le texte correspond à son choix (moi j’ai créé les différents textes à afficher mais j’arrive pas faire le lien entre le texte sélectionné par l’utilisateur et le texte à afficher ).

merci beaucoup pour les tutos.

Le 18/05/2011 à 12:51 , Maxime a dit:

maxime

Bonjour,
Il faut bien utiliser une liste select pour saisir vos informations, après votre besoin c’est de mettre en place des filtres.
Reportez vous à l’utilisation des filtres sous FLEXIcontent.

Le 21/06/2011 à 16:10 , Oliv a dit:

Oliv

Salut à tous
Un grand merci pour ce tuto qui m’a donné envie de développer un nouveau site.
Je débute, et je me casse la tête depuis trois jours!!
le plugin google est installé mais il n’apparaît pas dans le choix des plugin de contenu lors de la création d’un champ!!!
Aurais tu une idée!
:idea:

Le 21/06/2011 à 16:25 , Maxime a dit:

maxime

Bonjour,
Le plugin est il bien publié dans joomla ?

Le 21/06/2011 à 18:29 , Oliv a dit:

Oliv

Oui, ma clé APi est configurée…
En revanche mon plugin code est mosmap
Joomla 1.5.23 instal serveur normal ( pas en module)
Hebergeur Ovh mutualisé
Si tu as une idée, je repasse en attendant toutes les configs
???

Le 22/06/2011 à 08:49 , Maxime a dit:

maxime

Salut,
Ah oui je n’avais pas vraiment compris ta demande initiale, je viens de saisir.
Mosmap est un plugin system, c’est à dire qu’il sera exécuté sur l’ensemble du contenu de ton site, donc pas besoin de le spécifier.
La liste des plugins qui apparaît dans flexicontent sont les plus plugins de content. Il n’est donc pas obligatoire pour toi de le préciser, tout devrait fonctionner.

Le 22/06/2011 à 18:09 , Oliv a dit:

Oliv

Salut!
Ok, je regarde cela demain, je pense finaliser mon projet d’ici deux semaines!
D’ici la je fonctionne en permanence, fenêtre ouverte sur ton site !!
Merci pour ton travail!
A+

Le 23/06/2011 à 10:22 , Oliv a dit:

Oliv

Salut!
J’ai tout réinstallé, impossible d’avoir le plugin mosmap aurai tu un lien direct sur la bonne version de ce dernier!
A+

Le 23/06/2011 à 14:25 , Oliv a dit:

Oliv

Ok!
J’ai réussi avec le plugin googleMaps (dans les plugins spécifiques des champs:
je n’ai pu installer le 2)
–> juste une différence de configuration sur les paramètres spécifiques du champs : enlever les espaces sinon vous pointez au large du Nigeria quelque soit votre adresse!!
encore merci pour ton travail!
;)

Le 23/06/2011 à 15:44 , Maxime a dit:

maxime

Merci,
Le principal était d’y arriver.

Le 25/08/2011 à 08:23 , Tonyrocher a dit:

Tonyrocher

Bonjour,

J’aimerais savoir si vous avez fait une compil de vos tuto flexicontent en pdf .

Merci d’avance.

Tony

Le 25/08/2011 à 11:02 , Maxime a dit:

maxime

Bonjour,
Désolé, je nous n’avons pas mis en place ces tutos en version pdf.

Le 28/03/2012 à 17:25 , Thierry a dit:

Thierry

Bonjour,

Tout d’abord , merci pour votre tuto !! c’est génial !
j’ai une question, vous dites pour le parametre « publié »:
« Cependant il existe une astuce si vous ne souhaitez pas les faire apparaitre lors de la création d’un nouveau contenu, il suffit de ne pas affecter le champs au type de contenu en question et notre problème est résolu. »
Je n’arrive pas a ne pas lier le champs « DESCRIPTION » à tous les types…
Savez vous pourquoi ?
De même, je change l’étiquette « TITRE » du champs TITLE et l’étiquette ne change pas dans le front End. Y’a une option bien cachée quelque part ?

Je vous remercie. et encore bravo

Thierry

Le 30/03/2012 à 10:10 , Maxime a dit:

maxime

Merci pour vos retours.
Afin de faire partager la communauté de l’expérience de chacun, nous ne répondons plus aux questions sur ce blog. Pouvez vous allez directement sur notre site d’extension et reporter votre demande sur le forum.
Le site est en anglais mais il existe une section française pour le forum.
http://extensions.netassopro.com

L'email ne sera pas affiché

Exemple de site internet

Votre commentaire:

|-) ]o) ;) :| :war: :star: :s :pizza: :pig: :phone: :p :monk: :listen: :jail: :idea: :happy: :halloween: :haha: :girl: :ghost: :drink: :d :crazy: :cold: :cloudy: :@ :) :( :$ 8) (l) (a) (L) (6)