Menú de filtros

Hola Amigos:

Ejemplo de un menu de filtros
Ejemplo de un menu de filtros

Traigo para ustedes una clase programada por mi, que sirve para crear un menú de filtros. ¿Para que sirve en menú de filtros? Sirve para los casos en los que tenemos una base de datos con una tabla autos, y dentro de ella varios tipos de filtros: Autos rojos, autos verdes, y a la vez, autos caros y autos baratos.

Entonces, la idea de el menú sería la de crear lo siguiente:

Filtrar búsqueda por:

Color
-Rojo
-Azul
-Verde

Precio
-Barato
-Moderado
-Caro

Lo bueno de esta clase es que permite la recursión infinita de fitros, lo que permite usar varias categorías y subcategorías.

El código necesario para producir un menú sería el siguiente:

 
$possibleFilters = array(
		// category
		'anythingCanGoHere' => array( // key is string, ergo is category
			'name' => 'Colors',
			'0' => array( //key is_numeric, ergo is filter
				'name' => 'red',
				'url' => '?filter=red',
				'id' => 1,
			),
			'1' => array(
				'name' => 'green',
				'url' => '?filter=green',
				'id' => 2,
			),
			'2' => array(
				'name' => 'red',
				'url' => '?filter=blue',
				'id' => 3,
			),
		),
		//category w/ link
		'asLongAsItsAString' => array(
			'name' => 'weight',
			'url' => 'heavy.php',
			'0' => array(
				'name' => 'Less than 100KG',
				'url' => 'index.php?weight=100kg',
				'id' => 4,
			),
			'1' => array(
				'name' => 'between 100KG and 200KG',
				'url' => 'index.php?weight=200kg',
				'id' => 5,
			),
			'2' => array(
				'name' => 'more than 200KG',
				'url' => 'index.php?weight=300kg',
				'id' => 6,
			),
		),
	);

	$currentFilters = array(
		'1',
		'6'
	); // array de ID's que van a estar marcadas como seleccionadas

	$filterSearch = new filterSearch();
	$filterSearch->output_filter($possibleFilters, $currentFilters);

Como verán, una vez obtenida la información, el código necesario para producir el menu se reduce a dos líneas de código.

Existen varias configuraciones posibles, que deben aplicarse al objeto filterSearch

$filterSearch = new filterSearch();
$filterSearch->debug = 0; // debug? bool
$filterSearch->use_headers = 1; // usar headers alrededor de los títulos de las categorías
$filterSearch->available_headers = array(
	    '<h1 class="pagination_category">%</h1>',
	    '<h2 class="pagination_category">%</h2>',
	    '<h3 class="pagination_category">%</h3>',
	    '<h4 class="pagination_category">%</h4>',
	    '<h5 class="pagination_category">%</h5>',
	    '<h6 class="pagination_category">%</h6>',
    ); // Headers que va a utilizar la clase. Puedes usar cualquier tag HTML, solamente es importante recordar colocar un % donde iría el nombre de la categoría.
$filterSearch->extra_class = "filterSearchLink"; // clase para agregar a todos los links.
$filterSearch->output_filter($possibleFilters, $currentFilters);

¡Espero sea de utilidad!
Un saludo,
Pedro

2 thoughts on “Menú de filtros

  1. Para una persona que esta recien aprendiendo, no es muy claro. NO defines la clase de manera explicita. Podrias mejorar tu ejemplo quer esta muy bueno.
    Gracias.

    1. Hola Dam,

      Mucho me temo que este articulo lo escribi hace demasiado, y creo que nunca publique el codigo :S

      Un error de principiante, lo lamento mucho.

      Un abrazo grande,
      Pedro

Agrega un comentario! los comentarios se aprueban automaticamente

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s