Tutorial - FLEXIcontent plantilla - Parte 2: tipos de campo
FLEXIcontent le permite crear campos personalizados para cada tipo de contenido que desea utilizar. Esto permite obligar al usuario a introducir información diferente en áreas muy específicas que me pueden enviar más tarde como yo lo veo conveniente. También puede convertir esos campos en los criterios de búsqueda o filtros ... Así que con un poco de imaginación, usted puede hacer todas las plantillas que desee y, una vez más puertas abiertas que quedan cerca de Joomla.
Los tipos de campos disponibles son: casilla de verificación, la imagen de casilla, la fecha, el correo electrónico, archivos, imágenes, botones de radio, radio botones, imagen de selección, selección múltiple, de texto, área de texto y enlace web. Baste decir que le falta muy poco para hacerte feliz.
Además de los campos personalizados, FLEXIcontent también le da acceso a características adicionales de cada contenido:
- Gestión de versiones
- Un sistema integrado de votación
- Energía almacenada favoritos
- Un contador de visitas
- Gestión de las palabras clave
- Asignación de varias categorías a un único contenido
Todas sus características, que aparecen como campos, se asignan automáticamente a un tipo de contenido cuando se crean y los campos de base de datos (título, descripción, autor, fecha de creación, fecha de modificación, el estado de publicación)
Voy a seguir creando mi plantilla mediante la configuración de algunos campos típicos y añadir campos personalizados. Este ejemplo es de hormigón por supuesto, nada, sólo la intención de ilustrar las diversas características.
Resumen de la guía de aprendizaje:
- Campos de información general FLEXIcontent
- Los campos típicos
- Los campos personalizados y el uso de plugins
- Crea tu propio tipo de campo
- Campos de posición en la plantilla
Campos de información general FLEXIcontent
FLEXIcontent, puede asociar un campo con uno o más tipos de contenido. Cada uno tiene sus propias opciones de campos personalizados. De hecho, los tipos de campo (área de texto, casilla de verificación, lista ...) se generan a través de un plugin específico, así que si quieres nada le impide crear el tipo de campo propio.
Para cada uno de los tipos de campo, hay algunas opciones que son comunes:
- Etiqueta: ¿cuál es el nombre que aparecerá (o no) en frente de sus campos en la plantilla. Tenga cuidado si usted desea cambiar la etiqueta del campo de descripción y quiere diferenciarse según el tipo de contenido, es preferible en este momento para cambiar este valor directamente en los lugares donde se ofrece como una opción para este fin.
- Nombre: el nombre utilizado para identificar los campos, es importante utilizar únicamente los caracteres AZ, az y 0-9, sin espacios, ya que es el nombre que nos permitirá hacer referencia a nuestro campo en la plantilla. De forma predeterminada cuando se crea un campo, llamado el FLEXIcontent "fieldxx" Les insto a cambiar para orientarse a partir de entonces.
- Publicado: permite o no un campo. Algunos de los campos (título, descripción, creado, creado por, última modificación, revisado por) no puede ser dépubliés porque son necesarios para el control de versiones adecuado. Sin embargo, hay un truco si no desea que aparezcan la hora de crear nuevo contenido, sólo que no afecten a los campos para el tipo de contenido que se trate y nuestro problema está resuelto.
- Buscar: Indica si el contenido de los campos será indexado para una búsqueda o no.
- Búsqueda Avanzada: Esta función se puede utilizar desde la versión 1.7 FLEXIcontent que está prevista para finales de marzo.
- Filtro: Indica si los campos se mostrará como un filtro en la categoría de modo de visualización de contenido. Si desea utilizar esta característica en un inicio se debe establecer el valor en sí en los campos que se filtran. ¡Atención! sólo los campos con valores predefinidos (casilla de verificación, la imagen Casilla de verificación, Select, Select múltiple, Radio, Radio Imagen) puede ser utilizado como un filtro. Entonces no te olvides de activar los filtros dentro de los parámetros de la categoría y seleccione de la lista de los campos correspondientes.
- Nivel de acceso: El nivel de acceso a los campos, los niveles básicos relacionados con el ligamento cruzado anterior de Joomla.
- Orden: Determina el orden de visualización de los campos cuando entran en el contenido.
- Descripción: Se especifican las instrucciones para el usuario para entrar en el campo. De la misma manera que para la etiqueta, si quieres aprender diferentes descripciones para el campo "descripción", que usted aprenderá en los parámetros de tipo.
- Tipo: Seleccione aquí el tipo que desea asociar a su campo (presione la tecla Ctrl para seleccionar varios tipos)
- Mostrar etiqueta: Le permite introducir un parámetro que se puede utilizar en la plantilla para determinar si es o no muestra la etiqueta del campo.
- Prefijo y un sufijo: Disponible en la mayoría de los campos (pero no todos). Estos dos parámetros que permiten la capacidad de agregar valor antes y después de los contenidos de los campos. Usted puede agregar, por ejemplo, el sufijo de símbolo € si se desea mostrar un campo de moneda. Se pueden utilizar también para agregar código html o incluso los utilizan para implementar un plugin (para ver la última parte de este tutorial)
- Plugins específicos: Esta lista muestra todos los plugins instalados en el contenido de su sitio Joomla, usted puede elegir los plugins específicos en la lista o dejar en blanco para que el contenido compatible con cualquier plug-in. Esta característica es útil en algunos casos para evitar los conflictos, las múltiples pantallas o reduzca la carga. Tenga en cuenta que cuando el complemento se utiliza en un campo, se ejecutará automáticamente en todos los campos en el bucle.
Los campos típicos
Algunos campos se asignan automáticamente al crear un nuevo tipo, estos son los tipos de FLEXIcontent campos.
Algunos están directamente relacionados con el core de Joomla:
- Título: El título de su contenido
- Descripción: ¿Cuál es el contenido de su artículo en Joomla. Si usted desea hacer la compatibilidad con plugins de contenidos Joomla, no se olvide de comprobar que en la configuración de este cuadro de la opción "Ejecutar plugins de contenido".
- * Creado: Conocer el contenido.
- Creado por: el contenido de Autor.
- * Última modificación: Fecha de la última modificación del contenido.
- Revisado por: Nombre del último usuario que modificó el contenido.
- Hits: Número de veces que el contenido se ha publicado. (Por defecto se tiene un sufijo de la información: "vistas")
- Tipo de documento: El tipo de contenido.
- Versión: La versión de los contenidos.
- Estado: El estado de la publicación de contenidos.
* Para los campos de fecha, es posible cambiar el formato de visualización de la configuración del campo a través de una lista de valores predeterminados o crear un formato de presentación personalizado con la configuración de PHP strftime ( http :/ / php.net / manual / es / function.strftime.php ).
Otros campos se corresponden con características muy específicas de FLEXIcontent:
- Votación:
Funcionalidad para evaluar el contenido de enero a mayo. La votación está simbolizada por una imagen de 25 × 75 (com_flexicontent o activos, imágenes o star.gif) dividido en tres sub-imágenes que representan las Acciones: No seleccionar, seleccionado, y se ciernen. Usted puede crear su propia imagen, a continuación, cambiar la ruta de acceso en los campos de configuración para señalar la ruta a su archivo. Así que me doy cuenta de mi pequeño cuadro con los globos, es más divertido para evaluar etapas. También puede cambiar el tamaño de visualización de los valores por defecto de imagen de 16 píxeles. - Favoritos:
Permite a un usuario registrado para clasificar a esta página en sus favoritos. - Categorías: Tiendas de las categorías en las que se clasifica el contenido. Una opción para seleccionar el separador que se verá más adelante en el frontend (barra vertical, salto de línea, coma, espacio)
- Tags: Tiendas de etiquetas en las que los contenidos están clasificados. Una opción para seleccionar el separador que se verá más adelante en el frontend (barra vertical, salto de línea, coma, espacio)
Campos personalizados
Como dije anteriormente FLEXIcontent nos ofrece muchas posibilidades para personalizar la entrada de mostrar su contenido, sino también a través de campos personalizados. Ahora voy, mientras que la reanudación de mi ejemplo de cómo crear una plantilla para presentar las etapas del fútbol francés, que tienen diferentes tipos de campos personalizados. Yo no usaría los campos para cada conjunto de parámetros disponibles, pero a través de todo el tutorial voy a cubrir todas las funciones disponibles.
Recuerde que para cada campo para seleccionar los tipos de afectados en nuestro tipo "estadio".
- Texto:
Voy a empezar por agregar mi campo personalizado en primer lugar, quiero mostrar la dirección del estadio. Pero eso no es todo lo que voy a disfrutar con la dirección que ha introducido para mostrar la ubicación de mi GoogleMap etapa.
En primer lugar he instalado y activado la última versión del plugin de GoogleMap ( http://www.kksou.com/php-gtk2/Joomla-Gadgets/googleMaps-plugin.php descarga # ).
Puedo agregar mis campos con los siguientes valores:
Llamé a la etiqueta y el nombre del campo "dirección", a continuación, selecciono mi tipo de campo: "Texto". Puedo completar mi descripción que indica al usuario cómo se debe informar el contenido "Introduzca la dirección del estadio con el siguiente formato:. 'Número de la calle', 'nombre de la calle', 'ciudad'"
Quiero correr el plugin GoogleMap en ese campo, así que cambiar el valor de "Ejecutar plugins de contenido" que indica el valor "sí".
Me quito el prefijo en el comienzo de la etiqueta de mi plugin de GoogleMap: {addr = googleMaps "
A continuación, el sufijo cierro mi faro y puedo añadir algunos parámetros del plugin específicos: "width = 100 height = 190% = lang = es mapType G_HYBRID_MAP}
La dirección que yo pueda entrar más tarde se integrará directamente como un parámetro para mi plugin.
¡Importante! Hasta el momento no es posible usar un plugin que utiliza el carácter "|" en los ajustes, ya que genera un error.
- Área de texto
Ahora voy a agregar un área que me permite introducir la dirección adicional con los siguientes valores:
Decido no activar el editor de HTML y reducir el área de cinco líneas con el fin de no sobrecargar mi página de entrada. (El área de "Altura de la editorial" sólo corresponde a la altura en píxeles de el editor de HTML)
- Fecha
Ahora voy a agregar el campo para registrar la fecha de la inauguración del estadio. Este campo me permite elegir una fecha a través de un calendario que se muestra al lado de mis campos de forma dinámica.
Quiero un formato de presentación que no existe en la lista, así que seleccione "Tamaño personalizado" y me quito el formato: "% d /% m /% Y" para mostrar una fecha en la que se verá así '14 / 07/1979 '. También deshabilita varios valores.
Voy a añadir un correo electrónico zome que yo pueda entender las diferentes direcciones de contacto.
Llamé a mi campo de "contacto", que indican las instrucciones inscritas en la descripción. Voy a permitir múltiples valores, con un máximo de 5 contactos. También decidí mostrar los valores en mi plantilla, que separa por una coma.
Tenga cuidado, no hay control de formato al introducir valores, el usuario puede introducir lo que quieren (es decir, algo diferente a la dirección de correo electrónico). En la plantilla, FLEXIcontent simplemente añadir un "mailto:".
- Weblink
Quiero mostrar para cada uno de mi nombre artístico y la página web oficial del club jugando en el césped.
Llamé a mi campo "site_stade" y yo le dije en la descripción no debe entrar en el "http://" en mi dirección. (A pesar de que se verá más adelante que administra automáticamente el FLEXIcontent) amplié un poco el tamaño de mi campo como una dirección web se llevará a la habitación de un poco más.
También utilizo el título de mi enlace, en lugar de mostrar la dirección del sitio web. Esto me permite mostrar el nombre del club en lugar del nombre de su sitio.
Por último no quiero que el usuario sale de mi sitio, si hacen clic en el enlace, así que envié en una nueva ventana.
- Imagen
Ahora voy a añadir un campo de la imagen para ver una foto de mi pasantía. Puedo tomar los siguientes parámetros:
Llamé a mi campo "image_stade" Yo le informa a la descripción diciendo que sólo permiten que los archivos jpg y png. Decido que no muestre la etiqueta del campo, como por una imagen que se supone que ilustra mi página, no veo el punto.
Me muestra los tipos de extensiones permitidas, ten cuidado que es importante para entrar en la extensión en minúsculas y mayúsculas. Me limitaré mi tamaño máximo de archivo de 500 KB (500.000 bytes).
Calidad de las miniaturas es la tasa de compresión, no a trabajar en una gran cantidad de imágenes que prefiere mantener una buena calidad (valor posible 1 -> 100)
Puedo cambiar la ruta de acceso a directorio de imágenes en miniatura para centralizar todas mis imágenes más adelante en el mismo directorio para FLEXIcontent, puedo especificar imágenes o FLEXIcontent / miniaturas
Tenemos la capacidad de gestionar una marca de agua (imagen incrustada en la imagen original para asegurar los derechos de uso), por lo que voy a explotar. Puedo dejar la opacidad al 100% porque yo gestionará directamente la transparencia en mi archivo de imagen. Yo posicionar mi marca de agua en la parte inferior derecha.
FLEXIcontent generará automáticamente tres tipos de miniaturas al subir nuestra imagen. A continuación, puede utilizar más adelante en nuestros tamaños de imagen diferentes plantillas y por lo tanto optimizar los tiempos de carga.
Para cada tamaño me puse mi máxima anchura y altura. Para grandes y medianas en miniatura, dejé que la escala de la imagen y me decidí a integrar mis propias marcas de agua que almacenan en la siguiente ubicación: las imágenes / FLEXIcontent / core / watermark.png. ![]()
Para mi pequeña miniatura Yo no usaría la marca de agua al pequeño tamaño de mi imagen.
Por último, también es posible vincular automáticamente mi Mini con mi imagen original a través de una ventana emergente que aparecerá automáticamente en mi plantilla. Usted puede elegir entre el efecto Rockbox o Multibox.
- Cola
Ahora quiero añadir un área donde pudiera poner a disposición varios recursos sobre el escenario: los foros del plan, los servicios disponibles, folletos ... así que puedo añadir mi tipo de zona "archivo" lo que yo llamo "recursos".
Esta zona me permite agregar varios archivos de forma automática. Elija el tipo de separador entre diferentes archivos.
"Use MIME icono" le permite mostrar en la interfaz de un pequeño icono en frente del nombre de archivo que dependen directamente del tipo MIME del archivo.
"Usar un botón de descarga", esto le permite mostrar un botón "Download" en lugar de un enlace al archivo. La preocupación es que si puedo activar esta función, que no podía manejar un archivo para que no me interesa.
- Seleccionar
Para cada etapa que desea asociar la música que se reproduce en la entrada de los jugadores en la cancha. Voy a utilizar una lista que dependerá directamente de los archivos FLEXIcontent. Antes, hago algunos cambios en la configuración general de FLEXIcontent, autorizo a los archivos mp3 de carga y luego cambiar las rutas de carga "images / FLEXIcontent / files /". ¿Puedo instalar el plugin JosDewPlayer que me permite leer los archivos mp3 correctamente.
Llamé a mi campo "himno". Que activar el plugin de la ejecución sobre el contenido y seleccione josdewplayer sólo para optimizar la operación.
También permitirá la eliminación de espacios en los nombres para evitar errores en la dirección del archivo.
Para configurar la lectura de mi archivo, el prefijo de información: {play} imágenes o FLEXIcontent / files /, entonces el sufijo {/ play}
Quiero usar SQL para informar a mi lista de archivos directamente desde FLEXIcontent. Debo llenar mi consulta SQL:
A 2 3 | value , filename AS text SELECT valor como nombre de archivo, nombre de archivo como texto DE COMO flexicontent_files fi __ # ext = "mp3" AND fi . published = 1 Donde fi. Ext. = "mp3" y FI. Publicado = 1 |
Debe realizar una consulta con dos campos para mostrar que, necesariamente, debe asociar el alias de "valor" y "texto" que por supuesto se corresponde con el valor y el texto de la lista. Tenga en cuenta que el valor por defecto que será devuelto cuando se ve la plantilla será "texto". Puedo filtrar los archivos, seleccionando sólo los mp3 que se publican.
- Seleccione múltiples
Que desea asociar y visualizar los distintos socios del club. He creado un "Selección múltiple" que se asocia con el componente de banners en Joomla para que pueda seleccionar múltiples parejas. Llamé a mi campo "socios"
Voy a usar un plugin para mostrar mi bandera, no se olvide de ejecutar, incluso los plug-ins de contenido y selecciono mi plugin " Banner Mos 0.4 "instalado previamente. Puedo borrar los espacios. Me quito las etiquetas prefijo "mosbanner {: id =" entonces mi sufijo "}".
Voy a vincular la lista a la lista de banners Joomla publicada, así que me doy vuelta y me voy a mi consulta SQL:
A 2 3 4 | value , name AS text BID SELECT como valor, el nombre de AS de texto A PARTIR DEL # ba bandera __ showBanner = 1 DONDE BA. ShowBanner = 1 name ORDEN de BA. Nombre |
Por último, me seleccione valores separados por comas, porque es el carácter utilizado por mi plugin.
Veremos más adelante que el resultado no es realmente que usted desea, y tengo que crear mi propio tipo de campo (ver sección siguiente)
- Casilla de verificación, casilla de verificación de imágenes, botones de opción y botones de selección de imagen
Estos campos son controlados de la misma manera, aparte del hecho de que en algunos podemos añadir imágenes.
Voy a seleccionar el "cuadro de casilla de verificación" y aprender los elementos en el formato
"Valor de la etiqueta de la imagen ::::%%", mis valores ", bebida Bebidas :: :: wc :: boissons.gif%%%% wc.gif Sanitarios :: Restaurante :: Restaurantes ::%% Aparcamiento resto.gif parking.gif Aparcamiento ::::%% :: fumar :: fumer.gif prohibición de fumar "
No ponga el porcentaje doble al final de la lista.
Luego modificó la ruta de acceso a mis imágenes "images / FLEXIcontent / core /". También es posible comprobar los valores por defecto, utilizando el valor predeterminado. Es suficiente para capturar a los 'valores', separados por comas.
Mis campos personalizados se han completado.
Crea tu propio tipo de campo
FLEXIcontent te permite crear tus propios tipos de campo, haciendo lo que podemos imaginar como un campo con un contador incremental (+, -), o incluso un pergamino para determinar los valores. Voy a presentar las posibilidades para mí, porque sólo voy a hacer una copia de "seleccionar múltiples" para transformar la prestación que actualmente se encuentra en esta forma: En este nuevo formato ... quiero: [prefixe_plugin] [valor1] [separador] [valor2] [separador] ... [suffixe_plugin]
Un tipo de campo en FLEXIcontent es en realidad un plugin, los plugins se instalan automáticamente en los plugins / o flexicontent_fields y constará de dos archivos [nom_plugin]. XML [nom_plugin]. Php y archivos de lenguaje asociados.
El archivo XML
Luego hizo una copia de la original que cambia el nombre de selectmultiple.xml selectmultiple.php. Este archivo es una instalación estándar de Joomla, no es la primera legal y la descripción, yo se modifica la nombre de mi plug-in para distinguir el plugin original, añade el autor y voy a actualizar la versión:
A 2 3 4 5 6 7 8 9 10 11 | March 2009 </creationDate > <copyright > Copyright (C) 2009 Emmanuel Danan </copyright > <license > GNU/GPL Advanced Multiple </ name> <author> Emmanuel Danan, Maxime actualización Danjou (NetAssoPro) </ autor> <creationDate> marzo 2009 </ creationDate> <copyright> Copyright (C) 2009 Emmanuel Danan </ copyright> <license> GNU / GLP |
Que indica el nombre del archivo de mi plugin:
12 13 14 | <Files> > selectmultiplead.php </filename > <nombre "selectmultiplead" plugin de => selectmultiplead.php </ filename> </ Files> |
A continuación encontrará los parámetros del 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" > <option value = "0" > No </option > <option value = "1" > Yes </option > </param > </params > <params group = "group-selectmultiplead" addpath = "/administrator/components/com_flexicontent/elements" > <option value = "0" > FLEXI_NO </option > <option value = "1" > FLEXI_YES </option > </param > <option value = "0" > FLEXI_NO </option > <option value = "1" > FLEXI_YES </option > </param > <option value = "0" > FLEXI_NO </option > <option value = "1" > FLEXI_YES </option > </param > <option value = "0" > FLEXI_NO </option > <option value = "1" > FLEXI_YES </option > </param > <option value = "0" > FLEXI_FIELD_LABEL </option > <option value = "1" > FLEXI_FIELD_VALUE </option > </param > <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 > </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 :
A
| 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.
A 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.
Eso es todo por esta vez en la siguiente parte voy a referirme a la parte de la creación de contenidos a través de nuestro tipo personalizado . Esto le permitirá a la vista previa del diseño de los distintos campos y su modo de entrada.














El 27/01/2010 a las 20:51, NetAssoBlog | Tutorial - FLEXIcontent plantilla - Parte 1: estructura , dijo:
[...] Parte 2: Los tipos de campos disponibles para crear una plantilla de [...]