microTECHing
29Sep/116

Pintar los extrafields de k2 de forma selectiva

No cabe duda que los extrafields de k2 (Joomla) son de una utilidad enorme, pero la forma en la que por defecto se pintan en la ficha de un ítem, hace que pueda resultar un poco compleja la personalización de la presentación de los mismos.

K2 por defecto, se limita a recorrer los extrafields y pintarlos en una lista donde en cada línea esta el nombre, y el valor.

En la mayoría de proyectos esto puede resultar insuficiente, y lo que realmente queremos es poder pedir cualquier valor de cualquier extrafield en el momento que queramos. Es decir, obtenerlos de forma selectiva.

Para ello podéis utilizar esta función:

function get_extrafield_value($extra_fields, $name, $default = ''){
    foreach ($extra_fields as $extraField) {
        if ($extraField->name == $name) return $extraField->value;
    }
    return $default;
}

Al llamar a la función, le pasamos el vector (array) de extrafields, y el nombre del campo que queremos, y la función lo busca y nos devuelve el valor.

De esta forma, podemos presentar los extrafields como queramos:

get_extrafield_value($extra_fields, 'Tipo de vía').' '.get_extrafield_value($extra_fields, 'Nombre de la vía').', '.get_extrafield_value($extra_fields, 'Nº').'. '.get_extrafield_value($extra_fields, 'Código postal').' - '.get_extrafield_value($extra_fields, 'Localidad')

Esperamos que os ayude!

13Dic/1010

Filtros sobre campos extra en el buscador de k2

La verdad es que el buscador que ofrece K2 en el módulo mod_k2_tools, es bastante pobre. Solo nos permite mostrar una sola caja de búsqueda.

Gracias a K2 Extra fields Filter & Search podemos añadir filtros en base a campos extra que tengamos definidos.
Ver el enlace para ver los detalles, ya que el módulo necesita algunas modificaciones del código de k2.

A fecha de hoy 13 de diciembre de 2010, las modificaciones del core que te puedes descargar en la página, se han quedado obsoletas.
Si en el encabezado de los ficheros que hay que machacar (guardad copia) pone que el id es el 553 de fecha 13-09-2010, es mejor que utiliceis los paquetes que aquí os paso (del módulo no he cambiado nada).

com_k2v2.2-553_2010-09-13_filter_overwrite_0.92.rar

mod_k2v2.2_filter_0.92.zip

13Dic/100

Provincias españolas en un campo extra de K2

Si tenemos que ir añadiendo provincia a provincia las 52 en la interfaz de k2, nos podemos volver tarumbas.
Así que lo mejor es crear el campo 'provincia' con cualquier valor en las opciones, y luego vamos a la base de datos, a la tabla "jos_k2_extra_fields", modificamos nuestro campo, y en la columna value, ponemos directamente las 52 provincias en el formato que entiende k2:

[{"name":"\u00c1lava","value":1,"target":null},{"name":"Albacete","value":2,"target":null},{"name":"Alicante","value":3,"target":null},{"name":"Almer\u00eda","value":4,"target":null},{"name":"\u00c1vila","value":5,"target":null},{"name":"Badajoz","value":6,"target":null},{"name":"Baleares","value":7,"target":null},{"name":"Barcelona","value":8,"target":null},{"name":"Burgos","value":9,"target":null},{"name":"C\u00e1ceres","value":10,"target":null},{"name":"C\u00e1diz","value":11,"target":null},{"name":"Castell\u00f3n","value":12,"target":null},{"name":"Ciudad Real","value":13,"target":null},{"name":"C\u00f3rdoba","value":14,"target":null},{"name":"La Coru\u00f1a","value":15,"target":null},{"name":"Cuenca","value":16,"target":null},{"name":"Gerona","value":17,"target":null},{"name":"Granada","value":18,"target":null},{"name":"Guadalajara","value":19,"target":null},{"name":"Guip\u00fazcoa","value":20,"target":null},{"name":"Huelva","value":21,"target":null},{"name":"Huesca","value":22,"target":null},{"name":"Ja\u00e9n","value":23,"target":null},{"name":"Le\u00f3n","value":24,"target":null},{"name":"L\u00e9rida","value":25,"target":null},{"name":"La Rioja","value":26,"target":null},{"name":"Lugo","value":27,"target":null},{"name":"Madrid","value":28,"target":null},{"name":"M\u00e1laga","value":29,"target":null},{"name":"Murcia","value":30,"target":null},{"name":"Navarra","value":31,"target":null},{"name":"Orense","value":32,"target":null},{"name":"Asturias","value":33,"target":null},{"name":"Palencia","value":34,"target":null},{"name":"Las Palmas","value":35,"target":null},{"name":"Pontevedra","value":36,"target":null},{"name":"Salamanca","value":37,"target":null},{"name":"S.C. Tenerife","value":38,"target":null},{"name":"Cantabria","value":39,"target":null},{"name":"Segovia","value":40,"target":null},{"name":"Sevilla","value":41,"target":null},{"name":"Soria","value":42,"target":null},{"name":"Tarragona","value":43,"target":null},{"name":"Teruel","value":44,"target":null},{"name":"Toledo","value":45,"target":null},{"name":"Valencia","value":46,"target":null},{"name":"Valladolid","value":47,"target":null},{"name":"Vizcaya","value":48,"target":null},{"name":"Zamora","value":49,"target":null},{"name":"Zaragoza","value":50,"target":null},{"name":"Ceuta","value":51,"target":null},{"name":"Melilla","value":52,"target":null}]

Como habrá quien en vez de provincias quiera otros valores, pongo tambien este pequeño script de php que sirve para sacar los valores que tendriamos que poner en la base de datos, desde un array con los valores que queremos:

<?php
$a_prov = array("Álava","Albacete","Alicante","Almería","Ávila","Badajoz","Baleares","Barcelona","Burgos","Cáceres","Cádiz","Castellón","Ciudad Real","Córdoba","La Coruña","Cuenca","Gerona","Granada","Guadalajara","Guipúzcoa","Huelva","Huesca","Jaén","León","Lérida","La Rioja","Lugo","Madrid","Málaga","Murcia","Navarra","Orense","Asturias","Palencia","Las Palmas","Pontevedra","Salamanca","S.C. Tenerife","Cantabria","Segovia","Sevilla","Soria","Tarragona","Teruel","Toledo","Valencia","Valladolid","Vizcaya","Zamora","Zaragoza","Ceuta","Melilla");

$output = '[';
$i=1;
foreach ($a_prov as $prov) {
 if ($i > 1) $output .= ',';
 $output .= '{"name":' . json_encode($prov) . ',"value":'. $i .',"target":null}';
 $i++;
}
$output .= ']';

echo $output;
?>

Espero que os sirva.