Tutorial - Vorlage FLEXIcontent - Teil2: Feldtypen
FLEXIcontent können Sie benutzerdefinierte Felder für jede Art von Inhalten Sie verwenden möchten, erstellen. Dies erlaubt es, den Benutzer zwingen, unterschiedliche Informationen in sehr spezifischen Bereichen geben, dass ich später zu schreiben, wie ich es für richtig halten. Ich kann auch wiederum diese Felder in Suchkriterien oder Filter ... Also mit ein wenig Phantasie kann man schnell machen alle Vorlagen, die Sie wollen und wieder offene Türen, die nah links Joomla.
Die Feldtypen stehen zur Verfügung: Kontrollkästchen Kontrollkästchen Bild, Datum, E-Mail, Datei-, Bild-, Radio-Buttons, Radiobuttons Bild, wählen Sie, Mehrfach-Auswahl, Text, TextArea und Weblink. Es genügt zu sagen, dass es wenig fehlt, Sie glücklich zu machen.
Neben den benutzerdefinierten Feldern, FLEXIcontent Sie auch Zugriff auf zusätzliche Features für jeden Inhalt zuzugreifen:
- Versionsverwaltung
- Ein integriertes System der Stimmabgabe
- Power Favoriten gespeichert
- Ein Zugriffszähler
- Verwaltung der Stichworte
- Zuweisen von mehreren Kategorien auf einen einzigen Inhalt
Alle ihre Funktionen, die als Felder angezeigt werden, werden automatisch an einen Content-Typ zugeordnet, wenn erstellt und die Datenbank-Felder (Titel, Beschreibung, Autor, Erstellungsdatum, Änderungsdatum, Status Veröffentlichung)
Ich werde weiterhin mein Template erstellen, indem Sie einige typische Felder und das Hinzufügen von benutzerdefinierten Feldern. Dieses Beispiel ist natürlich nichts Konkretes, nur er bestimmt, um die verschiedenen Funktionen zu veranschaulichen.
Zusammenfassung des Lernprogramms:
- Allgemeine Informationen Felder FLEXIcontent
- Die typischen Felder
- Benutzerdefinierte Felder und die Verwendung von Plugins
- Erstellen Sie Ihre eigenen Feldtyp
- Standpunkt Felder in der Vorlage
Allgemeine Informationen Felder FLEXIcontent
FLEXIcontent in, können Sie ein Feld mit einem oder mehreren Arten von Inhalten zu verknüpfen. Jeder hat seine eigene benutzerdefinierte Felder Optionen. Tatsächlich sind die Feldtypen (Textarea, Checkbox, Liste ...) werden über ein bestimmtes Plugin erzeugt werden, wenn Sie so wollen nichts hindert Sie Ihren eigenen Feldtyp zu erstellen.
Für jedes Feld-Typen gibt es einige Optionen, die häufigsten sind:
- Label: was ist der Name, die angezeigt werden (oder nicht) wird vor Ihren Felder in der Vorlage. Vorsicht, wenn Sie auf die Beschriftung der Beschreibung Feld zu ändern und wollen nach der Art des Inhalts unterscheiden wollen, ist es zu diesem Zeitpunkt vorzuziehen, diesen Wert direkt in Situationen, in denen eine solche Option für diesen Zweck vorgesehen ist, zu ändern.
- Name: der Name verwendet, um Ihre Felder zu identifizieren, ist es wichtig, nur die Zeichen AZ, az und 0-9 ohne Leerzeichen verwenden, weil es der Name, der es uns ermöglichen, unser Feld in der Vorlage verweisen wird ist. Standardmäßig, wenn Sie ein Feld zu erstellen, die so genannte FLEXIcontent "fieldxx" Ich fordere Sie auf, wechseln Sie danach Ihre Lager zu bekommen.
- Verfasst am: ermöglicht oder nicht, ein Feld. Einige Felder (Titel, Beschreibung, erstellt, erstellt von, zuletzt geändert, überarbeitet von) kann nicht dépubliés sein, weil sie dies für die ordnungsgemäße Versionierung sind. Allerdings gibt es einen Trick, wenn Sie nicht wollen, dass sie erscheinen bei der Erstellung neuer Inhalte, nur haben keinen Einfluss auf die Felder an den Content-Typ in Frage, und unser Problem ist gelöst.
- Suche: Gibt an, ob der Inhalt der Felder für eine Suche oder nicht indiziert werden.
- Erweiterte Suche: Diese Funktion wird ab Version 1.7 FLEXIcontent, die für Ende März geplant ist, verwendet werden.
- Filter: Gibt an, ob die Felder als Filter in den Anzeigemodus Inhaltskategorie angezeigt. Wenn Sie diese Funktion verwenden möchten, müssen Sie zunächst den Wert auf ja auf den Feldern, die Sie filtern. Achtung! nur die Felder mit vordefinierten Werten (Checkbox, Checkbox Bild, Wählen, wählen Sie mehrere, Radio, Radio Bild) kann als Filter verwendet werden. Dann vergessen Sie nicht, die Filter innerhalb der Parameter der Kategorie aktivieren und wählen Sie aus der Liste die entsprechenden Felder aus.
- Zugriffsebene: Das Niveau der Zugang zu Bereichen, grundlegenden Ebenen im Zusammenhang mit der Joomla ACL.
- Auftrag: Bestimmt die angezeigte Reihenfolge der Felder bei der Eingabe von Inhalten.
- Beschreibung: Gibt die Gebrauchsanweisung für die Eingabe des Feldes. In der gleichen Weise wie für das Label, wenn Sie verschiedene Beschreibungen für das Feld "Beschreibung" lernen wollen, werden Sie in die Typparameter zu lernen.
- Typ: Wählen Sie hier die Typen, die Sie zuordnen möchten Ihr Feld (drücken Sie Strg um mehrere Typen auswählen)
- Zeige Label: Hiermit können Sie einen Parameter, der in der Vorlage verwendet werden kann, um festzustellen, ob es das Feld Etikett zeigt eingeben.
- Präfix und Suffix: Verfügbar in den meisten Bereichen (aber nicht alle). Diese beiden Parameter ermöglichen Ihnen die Fähigkeit, Wert vor und nach dem Inhalt Ihrer Felder hinzuzufügen. Sie können zum Beispiel das €-Symbol hinzuzufügen Suffix, wenn Sie eine Währung Feld angezeigt werden soll. Sie können auch verwendet werden, um HTML-Code hinzufügen oder sogar benutzen, um ein Plugin zu implementieren (um den letzten Teil dieses Tutorials zu sehen)
- Spezielle Plugins: Diese Liste zeigt Ihnen alle Inhalte Plugins auf Ihrer Joomla installiert haben, können Sie bestimmte Plugins in der Liste wählen oder leer lassen, um den Inhalt kompatibel mit jedem Plugin. Diese Funktion ist in einigen Fällen sinnvoll, Konflikte, mehrere Displays zu vermeiden bzw. die Last verringern. Beachten Sie, dass, wenn das Plugin auf einem Feld verwendet wird, wird automatisch auf allen Feldern in der Schleife ausgeführt werden.
Die typischen Felder
Einige Felder werden automatisch zugewiesen, wenn eine neue Art, das sind die Typen von Feldern FLEXIcontent.
Einige sind direkt an den Joomla-Core im Zusammenhang:
- Titel: Der Titel Ihrer Inhalte
- Beschreibung: Was ist der Inhalt Ihres Artikels in Joomla. Wenn Sie die Kompatibilität mit Joomla Content-Plugins machen wollen, wird es dich nicht vergessen, in den Einstellungen dieser Box aktivieren Sie die Option "Ausführen Inhalt plugins".
- * Erstellt am: Datum des Inhalts.
- Erstellt von: Autor Inhalt.
- Letzte Änderung *: Datum der letzten Änderung des Inhalts.
- Überarbeitet von: Name des Benutzers, der zuletzt den Inhalt geändert.
- Hits: Anzahl der Besuche der Inhalt wurde gebucht. (Standardmäßig hat ein Suffix von Informationen: "Ansichten")
- Document type: Die Art der Inhalte.
- Version: Die Version des Inhalts.
- Zustand: Der Zustand der Veröffentlichung von Inhalten.
* Für die Datumsfelder, ist es möglich, das Display-Format in den Einstellungen des Feldes durch eine Liste der vorgegebenen Werte ändern oder erstellen Sie ein benutzerdefiniertes Anzeigeformat über die Einstellungen von PHP strftime ( http :/ / php.net / manual / de / function.strftime.php ).
Andere Felder auf sehr spezifische Merkmale der FLEXIcontent entsprechen:
- Voting:
Funktionalität, um von Januar bis Mai Inhalt zu bewerten. Nein ausgewählt ist, ausgewählt, und Hover: Voting wird durch ein Bild 25 x 75 (com_flexicontent / assets / images / star.gif) in drei Teilbilder, die die Anteile aufgeteilt symbolisiert. Sie können Ihr eigenes Bild zu schaffen, dann ändern Sie den Pfad in den Einstellungen Felder, um den Pfad zu Ihrer Datei verweisen. Also habe ich mein kleines Bild mit Luftballons zu realisieren, ist es mehr Spaß, Stufen zu beurteilen. Sie können das Display auch ändern Größe des Bildes standardmäßig 16 Pixel. - Favoriten:
Ermöglicht es dem Nutzer, diese Seite in seinen Favoriten zählen. - Kategorien: Speichert die Kategorien, in denen der Inhalt klassifiziert wird. Eine Option, um den Separator, der später im Frontend (senkrechter Strich, Zeilenumbruch, Komma, Leerzeichen) gezeigt werden, wählen Sie
- Tags: Tags Stores, in denen die Inhalte klassifiziert sind. Eine Option, um den Separator, der später im Frontend (senkrechter Strich, Zeilenumbruch, Komma, Leerzeichen) gezeigt werden, wählen Sie
Benutzerdefinierte Felder
Wie ich bereits erwähnt FLEXIcontent bietet uns viele Möglichkeiten zum Anpassen der Eintrag anzuzeigen ihrem Inhalt, sondern auch durch benutzerdefinierte Felder. Ich werde jetzt, während der Wiederaufnahme meiner Beispiel für eine Vorlage erstellen, um die Stadien der Fußball-Französisch präsentieren, haben Sie verschiedene Arten von benutzerdefinierten Feldern. Würde ich nicht verwenden die Felder für jeden Satz von Parametern zur Verfügung, aber durch das gesamte Tutorial werde ich decken alle Funktionen zur Verfügung.
Denken Sie daran, für jedes Feld, um die Typen in unserer Art "Stadion" betroffen zu wählen.
- Text:
Ich werde durch Zugabe von meinem ersten benutzerdefinierten Feldes zu starten, möchte ich die Adresse des Stadions anzuzeigen. Aber das ist nicht alles, was ich viel Freude mit dem von Ihnen eingegebenen Adresse, um den Ort meiner Bühne GoogleMap zeigen werde.
Als erstes habe ich installiert und haben die neueste Version des Plugins GoogleMap (aktiviert http://www.kksou.com/php-gtk2/Joomla-Gadgets/googleMaps-plugin.php # download ).
Ich meine Felder mit den folgenden Werten:
Ich rief das Etikett und den Namen des Feldes "Adresse", dann wähle ich meine Feldtyp: "Text". Ergänze ich meine Beschreibung der Benutzer darauf hingewiesen, wie sollte sie den Inhalt "Geben Sie die Adresse des Stadions mit folgendem Format:. 'Hausnummer' 'Straßennamen', 'Stadt'"
Ich möchte die GoogleMap Plugin auf diesem Gebiet laufen, so dass ich den Wert von "Execute Inhalt Plugins", die den Wert "yes".
Ich nehme meine Präfix in der Anfang des Tags meiner GoogleMap Plugin: {addr = GoogleMaps "
Dann wird das Suffix Ich schließe meine Leuchtfeuer und ich fügen Sie einige Plugin Parameter: "width = 100 height = 190% = lang = de maptype G_HYBRID_MAP}
Die Adresse, die ich später geben können, werden direkt als Parameter für mein Plugin integriert werden.
Wichtig! Bisher ist es nicht möglich, ein Plugin, das Pipe-Zeichen verwendet verwenden "|" in den Einstellungen, weil es einen Fehler erzeugt.
- Textarea
Ich werde jetzt eine Fläche, die mir erlauben, zusätzliche Adresse mit den folgenden Werten geben wird:
Ich entscheide nicht, um den HTML-Editor zu aktivieren und reduziere ich die Gegend zu fünf Zeilen, um nicht zu überlasten, meinen Eintrag zu sehen. (Der Bereich "Höhe des Herausgebers" entspricht nur dem Pixel Höhe der HTML-Editor)
- Datum
Ich werde jetzt das Feld, um das Datum der Einweihung des Stadions aufnehmen. Dieses Feld wird mir erlauben, um ein Datum über einen Kalender, der neben meinem Feldern angezeigt wird dynamisch zu wählen.
Ich will eine Darstellungsform, die nicht existiert in der Liste, so dass ich die Option "Benutzerdefinierte Größe" und ich nehme meinen Format: "% d /% m /% Y", um ein Datum, das wie dieses '14 aussehen wird angezeigt / 07/1979 '. Ich habe auch deaktiviert mehrere Werte.
Ich füge eine zome E-Mail, dass ich die verschiedenen Kontaktadressen zu verstehen.
Ich rief meinen Bereich "Kontakt", ich deute Anweisungen in der Beschreibung eingetragen. Ich werde mehrere Werte mit einem Maximum von 5 Kontakte ermöglichen. Ich habe auch beschlossen, um die Werte in meiner Vorlage anzuzeigen, Trennung durch ein Komma.
Vorsicht, es gibt keine Kontrolle, wenn Format der Eingabe von Werten, die der Benutzer eingeben, was sie wollen (also etwas anderes als E-Mail-Adresse). In der Vorlage wird FLEXIcontent fügen Sie einfach eine "mailto:".
- Weblink
Ich möchte für jedes meiner Künstlernamen und die offizielle Vereins-Website zu spielen auf dem Rasen anzuzeigen.
Ich rief meinen Feld "site_stade" und ich sagte in der Beschreibung sollte nicht in das "http://" in meine Adresse. (Obwohl wir später sehen werden, dass automatisch verwaltet die FLEXIcontent) Ich vergrößert, ein bisschen die Größe meiner Feld als eine Web-Adresse wird ein wenig mehr Platz zu nehmen.
Ich benutze auch den Titel meiner Link, anstatt die Website-Adresse. Dies ermöglicht es mir, den Namen des Clubs, anstatt den Namen seiner Website zu zeigen.
Schließlich will ich nicht der Benutzer verlässt meiner Seite, wenn sie Auf den Link klicken, so schickte ich in einem neuen Fenster.
- Bild
Ich werde jetzt ein Bild Feld, um ein Bild von meinem Praktikum zu sehen. Ich nehme die folgenden Parameter:
Ich rief meinen Feld "image_stade" Ich informiert dann das, indem sie sagt, dass ich nur erlauben JPG-und PNG-Dateien. Ich entscheide nicht, um das Feld Beschriftung angezeigt werden, da für ein Bild, das soll dargestellt meiner Seite sehe ich nicht den Punkt.
I zeigt die Typen erlaubt Erweiterungen, hüte dich ist es wichtig, die Erweiterung in Klein-und Großbuchstaben eingeben. Ich beschränke meine maximale Dateigröße auf 500 KB (500.000 Bytes).
Vorschaubild Qualität ist die Rate der Kompression, nicht gerade an einer großen Menge an Bild, das ich lieber eine gute Qualität (möglicher Wert 1 -> 100) zu halten
Ich ändern Sie den Pfad zu den Thumbnails-Verzeichnis, um alle meine Bilder später im gleichen Verzeichnis für FLEXIcontent zentralisieren, kann ich angeben images / FLEXIcontent / Thumbnails
Wir haben die Möglichkeit, ein Wasserzeichen (Bild im ursprünglichen Bild, um die Nutzungsrechte zu gewährleisten eingebettet) verwalten, also werde ich sie nutzen. Ich verlasse die Deckkraft auf 100%, weil ich direkt gelingen wird, die Transparenz in meinem Image-Datei. Positioniere ich mein Wasserzeichen in der unteren rechten.
FLEXIcontent erzeugt automatisch drei Arten von Thumbnails beim Hochladen unser Image. Wir können dann später in unseren Templates verschiedenen Bildgrößen verwenden und somit die Ladezeiten zu optimieren.
Für jede Größe ich meine maximale Breite und Höhe. Für große und mittelständische miniature, lasse ich das Bild Skala und ich beschlossen, meinen eigenen Wasserzeichen zu speichern, dass ich an der folgenden Position einbetten: images / FLEXIcontent / core / watermark.png. ![]()
Für meine kleine Miniatur Ich würde nicht mit dem Wasserzeichen der geringen Größe meines Bildes.
Schließlich ist es auch möglich, automatisch zu verknüpfen mein Mini mit meinem ursprünglichen Bild über ein Popup erscheint automatisch in meine Vorlage. Sie können zwischen der Wirkung Rockbox oder Multibox wählen.
- Queue
Ich möchte nun einen Bereich, wo ich verschiedene Ressourcen zur Verfügung auf der Bühne machen könnte hinzufügen: Plan Foren, verfügbare Dienste, Broschüren ... also ich meine Zonentyp "Datei" die ich "Ressourcen" zu nennen.
Dieser Bereich wird mir erlauben, um mehrere Dateien automatisch hinzuzufügen. Wählen Sie die Art von Trennzeichen zwischen verschiedenen Dateien.
"Use MIME-Symbol 'ermöglicht es Ihnen, auf dem Frontend ein kleines Symbol vor dem Dateinamen, die direkt abhängig vom MIME-Typ der Datei an.
"Verwenden Sie einen Download-Button", damit können Sie einen Button "Download", anstatt einen Link zu der Datei anzuzeigen. Die Sorge ist, dass wenn ich diese Funktion aktivieren, gelang mir nicht eine Datei, damit es nicht interessiert mich.
- Wählen
Für jede Stufe Ich möchte die Musik während dem Eingang der Spieler auf dem Platz gespielt assoziieren. Ich werde eine Liste, die direkt abhängen wird FLEXIcontent Dateien. Zuvor habe ich einige Änderungen in den allgemeinen Einstellungen von FLEXIcontent machen, ermächtige ich die Upload von MP3-Dateien und dann ändere ich die Upload-Pfad "images / FLEXIcontent / files /". Kann ich das Plugin installieren JosDewPlayer , die mir erlauben, um die MP3-Dateien korrekt gelesen werden.
Ich rief meinen Feld "Hymne". Ich aktiviere das Plugin Ausführung auf den Inhalt und wähle ich nur josdewplayer, um den Betrieb zu optimieren.
Ich ermöglichen auch die Entfernung von Leerzeichen in Namen von Fehlern in der Datei-Adresse zu vermeiden.
So richten Sie das Lesen meiner Akte, ich voranstellen Informationen: {play} images / FLEXIcontent / files /, dann Suffix {/ play}
Ich möchte SQL verwenden, um meine Liste direkt aus Dateien FLEXIcontent informieren. Ich fülle meine SQL-Abfrage:
Ein 2 3 | value , filename AS text SELECT Wert als Dateinamen, Dateinamen Text AS VON AS fi # __ flexicontent_files ext = "mp3" AND fi . published = 1 Wobei fi. Ext = "mp3" und FI. Veröffentlicht = 1 |
Muss eine Abfrage mit zwei Feldern durchzuführen, um anzuzeigen, dass zwangsläufig assoziieren die alias "Wert" und "Text", der natürlich entspricht dem Wert und dem Text der Liste. Seien Sie sich bewusst, dass der Standardwert, der zurückgegeben wird beim Betrachten der Vorlage werden wird "Text" zu sein. Filtere ich die Dateien, indem Sie nur die mp3, die veröffentlicht werden.
- Wählen Sie mehrere
Ich wünschte, zu assoziieren und zeigt die verschiedenen Partner des Clubs. Ich ein "Mehrfach-Auswahl", um mit der Komponente von Bannern in Joomla in Verbindung gebracht werden, so dass Sie mehrere Partner auswählen können. Ich rief meinen Bereich "Partner"
Ich werde ein Plugin nutzen, um meine Banner einbinden, vergesse ich nicht, auch laufen die Content-Plugins und ich wähle meine plugin " Mos Banner 0,4 "vorher installiert werden. Ich lösche die Leerzeichen. Ich nehme meine Tags Präfix "mosbanner {: id =" dann meine Suffix "}".
Ich werde die Liste in die Liste der Joomla-Banner veröffentlicht verknüpfen, so wende ich mich, und ich gehe auf meine SQL-Abfrage:
Ein 2 3 4 | value , name AS text SELECT Angebot als Wert, Name als Text AB # __ Banner ba showBanner = 1 Denen BA. ShowBanner = 1 name ORDER BY-ba. Name |
Schließlich wähle ich comma-separated values, weil es der Charakter durch mein Plugin verwendet wird.
Wir werden später sehen, dass das Ergebnis nicht wirklich gewünschte Wort, und ich muss meine eigene Feldtyp zu erstellen (siehe nächster Abschnitt)
- Checkbox, Checkbox Bild, Radio-Buttons und Radio-Buttons Bild
Diese Felder werden in der gleichen Weise abgesehen von der Tatsache, dass in einigen wir Bilder hinzufügen verwaltet.
Ich werde wählen Sie die "Checkbox-Bild" und lernen Sie die Elemente in dem Format
"Value-Label :::: Bild%%", meine Werte, "Drink :: Getränke :: wc :: boissons.gif%%%% wc.gif Toiletten :: Restaurant :: Restaurants ::%% resto.gif Parkplatz Parkplatz parking.gif ::::%% :: Rauchen :: Rauchverbot fumer.gif "
Nehmen Sie das doppelte Prozentsatz am Ende der Liste.
Ich habe dann den Pfad zu meinen Bildern "images / FLEXIcontent / core /" geändert. Es ist auch möglich, um die Standardwerte zu überprüfen, mit dem Standard. Es genügt, die "Werte", durch Kommas getrennt zu erfassen.
Meine benutzerdefinierte Felder sind nun abgeschlossen.
Erstellen Sie Ihre eigenen Feldtyp
FLEXIcontent erlaubt Ihnen, Ihre eigenen Feldtypen erstellen, können wir uns vorstellen zu tun, wie ein Feld mit einem inkrementellen Zähler (+, -) oder sogar eine Schriftrolle, um Werte zu bestimmen. Ich werde einfach zu präsentieren, die Möglichkeiten für mich, weil ich gerade mache eine Kopie von "select multiple", um das Rendering, die derzeit in dieser Form zu transformieren: In diesem neuen Format ... Ich möchte: [prefixe_plugin] [Wert1] [Trennzeichen] [Wert2] [Trennzeichen] ... [suffixe_plugin]
Ein Feldtyp in FLEXIcontent ist eigentlich ein Plugin, Plugins werden automatisch in den plugins / flexicontent_fields / installiert und besteht aus zwei Dateien [nom_plugin]. XML [nom_plugin]. Php Dateien und Sprache verbunden.
Die XML-Datei
Ich machte dann eine Kopie der Original-selectmultiple.xml ich selectmultiple.php benennt. Diese Datei ist eine Standard-Joomla-Installation, gibt es zunächst die rechtlichen und Beschreibung, ich habe gerade ändert die Namen meines Plugin, um die ursprüngliche Plugin zu unterscheiden, fügte ich bei dem Autor und ich werde die Version zu aktualisieren:
Ein 2 3 4 5 6 7 8 9 10 11 | encoding = "utf-8" ?> <? Xml version = "1.0" encoding = "UTF-8"?> type = "plugin" group = "flexicontent_fields" method = "upgrade" > <install "1.5" version = type = group = "plugin" "flexicontent_fields" "upgrade" Methode => <name> Wählen Sie Mehrere Erweiterte </ name> <author> Emmanuel Danan, Maxime Update Danjou (NetAssoPro) </ author> <creationDate> März 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> |
I gibt den Namen der Datei von meinem Plugin:
12 13 14 | <Files> > selectmultiplead.php </filename > <filename "selectmultiplead" Plugin => selectmultiplead.php </ filename> </ Files> |
Wir finden dann die Plugin-Parameter. Ich füge zwei Parameter, die erste nenne ich "postext_mode", die mir erlauben zu sagen, wenn wir das Präfix und Suffix für jeden Wert, oder nur den Anfang und das Ende aller Werte verwenden werden. Meine zweite Parameter "value_mode" bestimmt, ob ich meine Werte und meine Etiketten anzuzeigen.
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 |
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 :
Ein
| if ( $field -> field_type != 'selectmultiplead' ) return ; |
Je rajoute donc les conditions dans mon code et j'enlève également les dans mes séparateurs afin de ne pas créer de bug avec mon plugin.
Ein 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 switch ( $separatorf ) { case 0 : $separatorf = ' ' ; break ; case 1 : $separatorf = '<br />' ; break ; case 2 : $separatorf = '|' ; break ; case 3 : $separatorf = ',' ; break ; case 4 : $separatorf = $closetag . $opentag ; break ; default : $separatorf = ' ' ; 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 = ' ';
break;
case 1:
$separatorf = '<br />';
break;
case 2:
$separatorf = '|';
break;
case 3:
$separatorf = ',';
break;
case 4:
$separatorf = $closetag . $opentag;
break;
default:
$separatorf = ' ';
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 :
Dans 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.














Le 27/01/2010 à 20:51 , NetAssoBlog | Tutoriel – Template FLEXIcontent – Part1 : la structure a dit:
[...] Part2 : Les types de champs disponibles pour créer son template [...]