Joomla! y K2: Nuevo campo personalizado donde queramos
Hoy hablaremos de Joomla! Y su archiconocida extensión K2, que nos permite tener bien organizados todos nuestros artículos, por ejemplo tipo blog, catálogos de productos, etc…
La extensión es muy potente, ya que la gente de JoomlaWorks ha pensado en todo o casi…
Seguro que muchos habéis necesitado alguna vez crear un campo para poner información adicional, como por ejemplo un subtitulo (debajo del título del artículo), una frase en algún lugar del artículo, alguna imagen más. El inconveniente es que la estructura del artículo es la misma para todos, es decir, si cambiamos el orden (mediante código en ítem.php) de alguno de los elemento, se nos cambian en todos los artículos.
En nuestro ejemplo queremos poner un subtitulo que aparezca de justo encima del ‘fulltext’:
Localizamos y abrimos los archivos:
administrator/components/com_k2/models/item.xml
Aquí insertaremos el campo a rellenar dentro del editor del ítem, en la administración de k2:
El archivo está compuesto por cuatro partes:
- Parámetros de la vista categoría
- Parámetros de la vista ítem
- Campos de la vista categoría
- Campos de la vista ítem
Como nos interesa poner un subtitulo dentro del ítem, insertaremos esta línea en la parte de parámetros de la vista ítem (la identificamos porque todos los ‘name’ de los parámetros empiezan por ‘item’, en la vista de categoría empieza por ‘cat’ ):
En nuestro caso lo colocamos justo debajo del parámetro ‘itemFeaturedNotice’ que no es otro que el de destacados. Como el type es ‘text’ quiere decir que será una cadena de caracteres. Si quisiéramos poner una lista con diferentes opciones, podemos coger el ejemplo:
Una vez tenemos el parámetro, vamos a crear el campo para verlo en la columna de la derecha del editor del K2: Ponemos el siguiente código (fijaos que name y label es el mismo), en la misma posición que hemos puesto el parámetro dentro de la parte de Campos de la vista ítem (También los reconocemos porque empiezan con item):
Si accedemos al Editor de K2 de cualquier ítem ya deberíamos ver el campo en la parte de la derecha:
Ahora tenemos que mostrarlo en el frontend. Podemos ponerlo en la vista del item:
Vamos al archivo: components/com_k2/templates/default/item.php
Insertamos el código:
El código lo ponemos donde nos apetezca que salga, en nuestro ejemplo lo hemos puesto justo entre:
Para la vista de la categoría, exactamente lo mismo pero en el siguiente archivo:
components/com_k2/templates/default/category.php
Lo ultimo que quedaría seria darle estilos con nuestro archivo CSS del K2, en este caso con la etiqueta .subtitle
Y eso es todo.
Y si necesito agregar un campo de tipo fecha? como lo hago?
Gracias, muy buen aporte, necesitaba ayuda con esto. La única diferencia (y lo dejo por si a alguien le resulto distinto a tu excelente explicación) es que el código lo coloque debajo de la etiqueta Que es donde se genera el Titulo del articulo. Como no domino php, tu explicación me vino de lujo.
No apareció el nombre de etiqueta…lo siento: (h2 class=»itemTitle»). Ojalá ahora aparezca.
Muy interesante….. Estoy aplicando todos estos trucos y me funciona de maravilla. El problema que me queda en cuanto al contenido de k2, y que no veo manera de solucionarlo, es el siguiente ( y me gustaría que me dierais alguna pista…. porque no veo la manera ): en un artículo de k2 ( joomla 2.5 ) , cuando incrusto un archivo multimedia ( por ej. un video, o un libro digital , siempre me sale éste ANTES del contenido del artículo. Yo quiero que me salga PRIMERO el contenido ( lo escrito, con su subtítulo imagen…) y ABAJO, el archivo multimedia. Cómo se podría arreglar esto? me sorprende que k2 tenga esta configuración por defecto para la vista de ítems.
muchisimas gracias por adelantado!!!
Hola Claudia, perdón a por el retraso.
La única manera de cambiar el orden en que aparecen los elementos en K2 es cambiando estos de posición en el código de la vista del componente.
El archivo que tendrías que tocar es el com_k2/templates/default/item.php
Localiza los archivos multimedia y recórtalos y pégalos donde desees. Puedes saber que código es porque el archivo está bien comentado. Utiliza la inspección de código de tu navegador para no equivocarte.
SOBRETODO: haz una copia del archivo antes de tocar nada.
Si tienes más dudas dime concretamente donde.
Hola lo que yo necesito es duplicar la pestaña de categorias para hacer combos de categorias tengo instalado la extension multicategory pero esa solo me permite elegir las categorias que desee pero se hace una lista enormeeee y siento que mi usuario no podra ver todas como lo puedo hacer.
Saludos
Hola Miguel Angel, siento no poder ayudarte ya que no hemos utilizado nunca la extensión que mencionas. Puedes ponerte en contacto con los desarrolladores de la misma que seguro podrán ayudarte.
Solo una cosa, no se hasta que punto hacer dos listas del mismo campo será posible. Si te molesta el formato con el que sale la lista de categorías, yo lo que haría sería tocar el css. Puedes hacerla más grande, letra más pequeña, tu mismo.
Utiliza la inspección de código para localizar el archivo css y la línea a tocar. Si tienes dudas, pon concretamente donde, ha ver si podemos ayudar.
Hola Jordi, lo hice y funciono muy bien, en mi caso quise agregar un antetítulo y quedo así
http://prueba-01.com.ar/jaboneria/index.php/item/7-este-libro-de-relleno-es-un-tratado-de-teoria-de-eticas
una pregunta, se puede poner tambien en la vista de la categoria?
saludos desde Argentina
Hola Daniel, si se puede poner sin problema. Haz lo mismo pero en el archivo de la vista de la categoría. Por defecto es el siguiente:
category_item.php (esta en la misma carpeta que el item.php)
Hola, he conseguido hacerlo perfectamente pero me encuentro con el problema de hacerlo para diferentes idiomas cuando estoy utilizando el componente falang. Podríais ayudarme?
Hola Mari,
Hay dos formas de hacerlo:
1- Crea tantos campos como idiomas tengas. Entonces mediante php o css puedes hacer que aparezca uno o otro dependiendo de idioma actual del Joomla. Mira la documentación de Falang para saber como obtener la variable de idioma o prueba con esto (depende de la versión de joomla): get(‘language’); ?>
2- La manera correcta es modificando los archivos xml que subes a falang para poder traducir elementos de k2 y que descargas de la propia web de falang. Hay un archivo que es k2_items.xml, en el debemos añadir un campo más para traducir, por ejemplo:
<field type=»text» name=»itemSubtitle» translate=»1″>SUBTITLE</field>
Volvemos a comprimir el archivo en un zip y lo subimos de nuevo a Joomla mediante el gestor de extensiones. Ahora debería aparecerte en la ficha de traducción de falang el campo ‘SUBTITLE’. Procedes normalmente con falang.
Espero haber podido ayudarte. Por favor, comenta si te ha ido bien la solución para que otros usuarios tomen nota.
Muy buenas noches
Estimado amigo estoy trabajando en una nueva web y te pido una ayuda, la verdad no se que estoy haciendo mal, llegue hasta la parte donde sale el subtitle en el item de ahi para adelante al colocar el codigo div en
/pt/components/com_k2/templates/default/item.php
no aparece en el item.
Muchas gracias por su ayuda
Amarildo
Hola Amarildo, sin más información es difícil ayudarte. Prueba ha rellenar el campo des de la administración. Si guardas y el campo tiene la información que has puesto un vez se recarga la página es que has hecho bien la implementación. Si no te sale nada, revisa la primera parte del código en items.xml
Pero si no te sale en la página del ítem, es que algo no has hecho bien en la parte de insertar el código en el item.php. Revisa ese código. Ten en cuenta que tu tema puede subscribir los archivos de k2 que están en ‘components/com_k2/’. Mira si en tu tema, en la carpeta ‘/tu_template/html/’ hay la carpeta ‘com_k2’. Si está, realiza los cambios de item.php allí.
Espero que una de estas sea la solución. Ya me dirás!
Muchisimas gracias Jordi
Funcionó de mil maravillas, se agradece infinitamente, lo unico pendiente que quedo es la modificacion del CSS que no lo encuentro por ningun lado y lo que encontre no altera en nada.
Muchas gracias nuevamente
Amarildo
Perfecto! Me alegro que haya funcionado.
Lo del CSS lo puedes añadir en cualquier archivo de estilos que use tu tema, mira, por ejemplo, en ‘tu_template/css/styles.css’ (o algo parecido) y ponlo al final, por ejemplo:
.subtitle { color: #009cde; } (tendría que poner-se en azul Milimetric)
Nota: Puede que tu tema ya tenga esta clase.
Hola! Gracias por el aporte. Y si quiero agragar más de una imagen al ítem? No una galería, sino dos o más imágenes
Hola Leo, gracias por comentar!
Lo que yo haría sin complicarme mucho sería crear dos campos como los que has visto en el tutorial y luego en vez de poner un texto pondría la url de la imagen que previamente entraríamos con el FTP o el gestor de imágenes del Joomla.
Luego el código para en el front pondria algo así:
// Recuerda cambiar ‘mediaURl’ por el nombre del campo que has creado.
hola que tal, mi pregunta es como agregar un campo personalizado pero en la parte del formulario general, no en la barra lateral, abajo del campo titulo
gracias
Hola Jordi, muchas gracias por el tutorial, ha funcionado perfecto 😀
Quería hacerte una consulta adicional, se le puede añadir maxlength a los parámetros del xml? o como podríamos limitar los caracteres del campo personalizado?
Muchas gracias por tu atención.
Hola, yo quiero saber si se puede dar estilo mediante algún tipo de etiquetas (y algún ejemplo…) a un artículo nuevo que hago en k2.
Me explico, si yo subo una entrevista, hasta el momento pongo el título, una imagen, texto de pregunta en negrita y texto de respuesta normal.
Si pudiera poner por el medio algún entrecomillado en grande, o un antetítulo para presentar a la persona, o elementos de estilo sería perfecto.
Espero me podáis ayudar.
Gracias