Fieldsattach, Mostrar campos con el API

Escrito por | 30 Noviembre 2012 | Publicado en Dic. 2012
Fieldsattach es un componente para expandir Joomla. Nos permite adjuntar todo tipo de campos a nuestros artículos. Por ejemplo, un googlemaps, una imagen o una galería de imágenes. Lo que se conoce como "Content Construction Kit" o CCK. La ventaja de este componente respecto a otros como K2, Flexicontent es que es mucho más simple y trabaja con los artículos joomla por defecto. La integración con joomla es total.

Para más información podemos leer el artículo anterior, "Tutorial - Fieldsattach, agregando campos extras a Joomla!"
En este artículo nos centraremos en como mostramos esos campos en nuestra página web.

El componente nos ofrece dos maneras de mostrar los campos:

  1. Automáticamente: Con el plugin
  2. Manualmente: Con la sencilla API

Automáticamente, con el plugin

Es la manera más fácil y automática. Para ello deberemos ir a la edición del campo y configurar los campos "Visible with plugin" a "Show". También vemos que podemos configurar la situación dentro del artículo, antes o después del artículo.

Automática

Con esta configuración el campo saldrá automáticamente, SOLAMENTE, en la edición del artículo. Si deseáramos mostrar los campos en el listado tendríamos de usar la API como veremos a continuación.

Manualmente, con la API

La API es la manera más potente para mostrar los campos. Podremos realizar la composición que deseemos, y si nuestro nivel de PHP es suficiente, hasta podremos crear condiciones, muy útiles en muchos casos.

Vamos a ello. El ejemplo que mostraremos es muy sencillo pero nos mostrara la sencillez de este sistema. Crearemos un listado tipo BLOG, con un campo creado con fieldsattach. Uno de tipo texto. Sencillo.

Para empezar deberemos copiar el layout default en nuestro directorio. Para ello vamos al directorio /components/com_content/view/category/tmpl/ y copio todos los ficheros blog* en mi template /templates/[MI PLANTILLA]/html/com_content/category/ .
Con esto el sistema nos mostrará nuestro layout antes que el layout por defecto.

Editamos el fichero blog.php y pegamos la siguiente línea de código:

// require helper file
JLoader::register('fieldattach', 'components/com_fieldsattach/helpers/fieldattach.php');

Recordar que debe estar dentro de las etiquetas PHP.

<?php

// require helper file
JLoader::register('fieldattach', 'components/com_fieldsattach/helpers/fieldattach.php');

?>

Con esto estamos cargando las funciones de fieldsattach.

A continuación editaremos el fichero blog_item.php y buscaremos la línea donde queremos añadir nuestros campos. En este ejemplo, después del texto del artículo, después de la línea:

<?php echo $this->item->introtext; ?>

El código para mostrar un campo es:

<?php fieldattach::getFieldValue([ID ARTICLE], [ID FIELDSATTACH], [CATEGORY: true o false]);?>

[ID ARTICLE]

En este caso, el id del artículo es:

$this->item->id

[ID FIELDSATTACH]

Identificador del campo.
El Identificador del campo extra lo podemos encontrar en el listado de los campos. Nos dirigimos al componente “Fieldsattach”, y en el listado lo podemos encontrar. En nuestro caso 9.

Identificador del campo

[CATEGORY] 

Si es un campo de artículo o de categoría.  Para nosotros FALSE, es un campo para artículo.

Por tanto nuestra función será:

<?php fieldattach::getFieldValue($this->item->id, 9 , false);?>

El resultado es el siguiente:

Resultado

Ya tenemos lo que queríamos, ahora por ejemplo, como hariamos para poner en negrita el nombre del campo. Pues para eso podemos sobrescribir el formato de salida del extrafield.

Copiaremos el fichero /plugins/fieldsattachment/input/tmpl/input.tpl , lo copiamos en /template /templates/[MI PLANTILLA]/html/com_fieldsattach/plugins/fields/input.tpl y lo editamos.

El fichero es el siguiente:

<div id="cel_[FIELD_ID]">
   <span class="title">[TITLE]</span>
   <span class="value">[VALUE]</span>
</div>

Los elementos entre corchetes son los que el sistema sustituirá por los valores de nuestro campo.
En este caso:

[FIELD_ID] -> Identificador del campo
[TITLE] -> Título del campo
[VALUE] -> Valor

Podemos modificarlo a nuestra conveniencia, en nuestro ejemplo lo modificamos como:

<div id="cel_[FIELD_ID]">
   <strong class="title">[TITLE]</strong>
   <span class="value">[VALUE]</span>
</div>

Únicamente hemos puesto negritas en el título.

Tener en cuenta que estos ficheros no pueden contener sentencias PHP, solamente html.

El resultado:

Resultado

De esta forma pueden formatear los campos como deseéis. Los tmpl pueden ser o para todos los tipos de campo del mismo tipo (lo que hemos hecho) o para un campo solamente. Teneis más información en http://fieldsattach.com/index.php/documentation/templating-output-types.

En el próximo tutorial profundizaremos con otro ejemplo el uso del API.

Soporte

Teneis un foro y la posibilidad de contratar al desarrollador por horas. Todo está en inglés pero podéis entrar en el foro en español también.

El componente está traducido al español.

Enlace al componente en el Centro de extensiones de Joomla! aquí.

Contacto directo con el desarrollador

Twitter: @bcn_percha

Linkedn: cristiangrano

 

 

Visto 5355 veces Etiquetado como Spanish, Desarrollador