El objetivo no es crear un e-commerce puro, si no un simple catálogo de productos orientado a pequeños negocios comerciales que desean exponer sus servicios o fabricantes y distribuidores que tercerizan la comercialización de los propios productos. Por ejemplo, un distribuidor de lencería a venta por catálogo o un corralón de materiales para la construcción.
En este artículo se explicará una manera de desarrollar 3 vistas:
Descargar los siguientes modulos:
Activar los siguientes módulos (recomiendo usar drush para hacer las cosas más rápido):
Los dos vocabularios (taxonomy vocabulary) los utilizaremos más adelante en los campos del único tipo de producto con el que trabajaremos.
Taxonomy vocabularies: brand & category
Agregar dos campos que harán referencia a los vocabularios creados en el punto 1. Los campos debn ser de tipo term reference y almacenar solo un valor.
Los campos del tipo de producto (Drupal Commerce Entity)
Agregar una configuración de server y otra de index seleccionando Commerce Product en el campo tipo. En la configuración del índice, seleccionar los campos field_product_brand y field_product_category creados en el punto 2.
Drupal: Search API index de tipo Commerce Product
Seleccionar los blocks de facet api que se utilizarán.
Drupal: Facets
Crear una vista seleccionando "Product" (o el nombre elegido para identificar al índice del motor de búsqueda de Search API creado en el punto 3).
Dejar sin seleccionar las opciones para crear una página o un bloque. Más adelante, agregaremos una visualización de tipo content pane. En realidad, esto es más a gusto del desarrollador. En este caso, las tres vistas del sitio serán administradas con Panels, que resulta seguramente mucho más funcional que Views.
Creamos un tipo de contenido nuevo cuyos contenidos se publicarán periodicamente y que contendrá un campo donde podremos seleccionar los productos en oferta. El campo deberá ser de tipo Entity Reference. En el caso en que se quiera utilizar el widget autocomplete, será conveniente instalar el módulo Multiple Fields Remove Button para poder eliminar elementos del campo.
Como en el caso anterior, creamos una vista sin seleccionar ni page ni block. Más adelante agregaremos una vista de tipo content pane. Imaginemos por un momento que se publicará cada mes un mini-catalogo de ofertas. La vista deberá entonces seleccionar solo un node: el último publicado. Para llevar a cabo esto, podemos crear un contextual filter configurando un valor predeterminado utilizando PHP code. Ingresamos el siguiente código que realiza una consulta devolviendo el último node publicado (en este caso, el content type se llama leaflet)
$query = db_select('node','n');
$query->fields('n',array('nid','title','status','type'));
$query->condition('n.status','1','=');
$query->condition('n.type',array('leaflet'),'IN');
$query->orderBy('created','DESC');
$query->range(0,1);
$results = $query->execute()->fetchAll();
return $results[0]->nid;
Ir a /admin/structure/pages y crear una nueva página indicando un título y una url. Agregar la vista creada en el punto anterior. En este artículo no se hablará de como crear un layout personalizado.
Igual que en el punto anterior, creamos una página para visualizar la vista creada en el punto 5. Además de la vista, podremos agregar los blocks de Facet API presentes en la parte content de Panels.
Drupal: Panels y Facet API