No importa con qué negocio se encuentre, siempre es importante contar con herramientas que lo ayuden a analizar las estadísticas generales de los acontecimientos cotidianos. Por supuesto, también le ayuda a desarrollar estrategias adicionales para su negocio en caso de que las cosas no estén en el camino correcto.
Hoy, discutiremos las herramientas de informes en el contexto de OpenCart. Encontrarás muchos informes útiles en el núcleo mismo. Hay cuatro categorías principales para ser precisos: Ventas, Productos, Clientes y Marketing, y cada una de ellas ofrece más opciones para ver la información en diferentes contextos..
En nuestro ejemplo, crearemos un informe que muestre todos los productos que se ven pero que aún no se han comprado. Por supuesto, es un caso de uso simple, pero puede seguir adelante y crear uno más complejo según sus requisitos.
Supongo que está utilizando la última versión de OpenCart y está familiarizado con el proceso de desarrollo del módulo básico en OpenCart, ya que enfatizaremos la generación de informes en lugar de los pasos básicos de desarrollo del módulo. Si desea explorar el desarrollo de módulos básicos en OpenCart, hay un buen artículo sobre el tema..
Vamos a enumerar los archivos que deben implementarse para nuestro informe personalizado:
admin / controller / report / product_custom.php
: Es el archivo del controlador principal que se utiliza para cargar datos del modelo y configurar las variables.admin / model / report / product_custom.php
: Es un archivo modelo que se utiliza para configurar consultas SQL para recuperar los datos de la base de datos.admin / view / template / report / product_custom.tpl
: Es un archivo de vista que contiene la lógica de presentación..admin / language / english / report / product_custom.php
: Es un archivo de idioma.Sigue adelante y crea un archivo. admin / controller / report / product_custom.php
con los siguientes contenidos.
load-> language ('report / product_custom'); $ this-> document-> setTitle ($ this-> language-> get ('heading_title')); if (isset ($ this-> request-> get ['page'])) $ page = $ this-> request-> get ['page']; else $ page = 1; $ url = "; if (isset ($ this-> request-> get ['page'])) $ url. = '& page ='. $ this-> request-> get ['page']; $ data ['breadcrumbs'] = array (); $ data ['breadcrumbs'] [] = array ('text' => $ this-> language-> get ('text_home'), 'href' => $ this -> url-> link ('common / dashboard', 'token ='. $ this-> session-> data ['token'], 'SSL')); $ data ['breadcrumbs'] [] = array ( 'text' => $ this-> language-> get ('heading_title'), 'href' => $ this-> url-> link ('report / product_custom', 'token ='. $ this-> session- > data ['token']. $ url, 'SSL')); $ this-> load-> model ('report / product_custom'); $ data ['products'] = array (); $ filter_data = array ( 'start' => ($ page - 1) * $ this-> config-> get ('config_limit_admin'), 'limit' => $ this-> config-> get ('config_limit_admin')); $ product_total = $ this-> model_report_product_custom-> getTotalCustomProducts ($ filter_data); $ results = $ this-> model_report_product_custom-> getCustomProducts ($ filter_data); foreach ($ results como $ result) $ data ['products'] [] = array (' nombre '=> $ resultado [' nombre '],' modelo '=> $ resultado [' modelo '],' visto '=> $ resultado [' visto '],); $ data ['heading_title'] = $ this-> language-> get ('heading_title'); $ data ['text_list'] = $ this-> language-> get ('text_list'); $ data ['text_no_results'] = $ this-> language-> get ('text_no_results'); $ data ['text_confirm'] = $ this-> language-> get ('text_confirm'); $ data ['column_name'] = $ this-> language-> get ('column_name'); $ data ['column_model'] = $ this-> language-> get ('column_model'); $ data ['column_viewed'] = $ this-> language-> get ('column_viewed'); $ data ['entry_date_start'] = $ this-> language-> get ('entry_date_start'); $ data ['entry_date_end'] = $ this-> language-> get ('entry_date_end'); $ data ['token'] = $ this-> session-> data ['token']; $ url = "; $ pagination = new Pagination (); $ pagination-> total = $ product_total; $ pagination-> page = $ page; $ pagination-> limit = $ this-> config-> get ('config_limit_admin') ; $ pagination-> url = $ this-> url-> link ('report / product_custom', 'token ='. $ this-> session-> data ['token']. $ url. '& page = page ',' SSL '); $ data [' pagination '] = $ pagination-> render (); $ data [' results '] = sprintf ($ this-> language-> get (' text_pagination '), ($ product_total )? (($ page - 1) * $ this-> config-> get ('config_limit_admin')) + 1: 0, ((($ page - 1) * $ this-> config-> get ('config_limit_admin' ))> ($ product_total - $ this-> config-> get ('config_limit_admin')))? $ product_total: ((($ page - 1) * $ this-> config-> get ('config_limit_admin')) + $ this-> config-> get ('config_limit_admin')), $ product_total, ceil ($ product_total / $ this-> config-> get ('config_limit_admin'))); $ data ['header'] = $ this- > load-> controller ('common / header'); $ data ['column_left'] = $ this-> load-> controller ('common / column_left'); $ data ['footer'] = $ this-> load -> controlador ('c ommon / footer '); $ this-> response-> setOutput ($ this-> load-> view ('report / product_custom.tpl', $ data));
Lo importante a tener en cuenta aquí es que lo hemos colocado en el directorio "informe", que es el lugar correcto para todos los archivos relacionados con informes..
Aparte de eso, es un controlador bastante habitual: cargamos el lenguaje y el modelo adecuados en el método de índice y luego configuramos las variables. Al final, hemos asignado product_custom.tpl
como nuestro archivo de plantilla principal que es responsable de la salida del informe principal.
Continuando, configuremos el archivo modelo en admin / model / report / product_custom.php
.
config-> get ('config_language_id'). "'AND p.viewed> 0 AND ISNULL (op.product_id) ORDENADO POR p.viewed DESC"; if (isset ($ data ['start']) || isset ($ data ['limit'])) if ($ data ['start'] < 0) $data['start'] = 0; if ($data['limit'] < 1) $data['limit'] = 20; $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; $query = $this->db-> consulta ($ sql); devuelve $ consulta-> filas; función pública getTotalCustomProducts ($ data) $ sql = "SELECCIONE la cuenta (*) como total DE". DB_PREFIX. "producto p ÚNICA IZQUIERDA". DB_PREFIX. "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN". DB_PREFIX. "order_product op ON p.product_id = op.product_id WHERE pd.language_id = '". (int) $ this-> config-> get ('config_language_id'). "'AND p.viewed> 0 AND ISNULL (op.product_id)"; $ query = $ this-> db-> query ($ sql); devuelve $ consulta-> fila ['total'];
Hay dos métodos en nuestro archivo modelo: getCustomProducts
obtiene los registros apropiados de la base de datos, mientras que getTotalCustomProducts
devuelve el recuento total de registros utilizado por el componente de paginación en el controlador.
A continuación, el archivo de vista debe estar ubicado en admin / view / template / report / product_custom.tpl
.
- ">
Mostrará la lista de productos de una manera agradable y tabular, y por supuesto, es sensible, ya que bootstrap está en el núcleo ahora!
Al final, vamos a crear un archivo de idioma en admin / language / english / report / product_custom.php
.
Así que eso es todo en cuanto a la configuración del archivo..
Otorgar permiso para el informe personalizado
Aunque hemos terminado con nuestro módulo de informe personalizado, todavía no podrá acceder a él. Esto se debe a que se considera un nuevo recurso y el grupo de usuarios administradores debe tener permiso para acceder a este recurso. Por lo tanto, avancemos y otorguemos permiso para este recurso al grupo de usuarios administradores..
Navegar a Sistema> Usuarios> Grupo de usuarios y editar el Administrador grupo de usuario. Bajo la Permiso de acceso cuadro desplegable, compruebe el report / product_custom Recurso y guardar el grupo..
Ahora, deberías poder acceder a este recurso.
Cómo acceder a nuestro informe en el back-end
Necesitaremos modificar
admin / view / template / common / menu.tpl
para incluir nuestro enlace de informe personalizado. En aras de la simplicidad, lo modificaremos directamente, pero es posible que desee lograr lo mismo con la extensión OCMOD. Le permite cambiar los archivos principales utilizando un sistema de búsqueda / reemplazo basado en XML.Ahora, abre el
admin / view / template / common / menu.tpl
archiva y busca la siguiente línea.
Después de esa línea, agregue la siguiente línea.
Ahora deberías poder ver nuestro enlace bajo Informes> Productos. Haga clic en eso para ver nuestro increíble informe personalizado!
Enumera todos los productos que se ven y no se han comprado todavía. Entonces, eso es todo en lo que respecta a la creación de informes personalizados; Espero que no haya sido demasiado a la vez. Pero, de todos modos, tienes la idea y puedes extenderla fácilmente según tus requisitos.
Hoy, hemos discutido cómo crear un informe personalizado en OpenCart. Pasamos por el proceso completo de configuración de los archivos necesarios y, en la parte posterior del artículo, demostramos cómo acceder al informe desde el back-end..
Si está buscando herramientas adicionales de OpenCart, utilidades, extensiones, etc., que pueda aprovechar en sus propios proyectos o para su propia educación, no se olvide de ver lo que tenemos disponible en el mercado..
Espero que haya disfrutado de todo hasta ahora y permanezca atento para más información sobre OpenCart. En caso de que tenga alguna consulta o sugerencia, puede contactarme a través de Twitter o utilizar el canal de comentarios a continuación..