Opencart: cómo esta estructurado, cómo añadir contenido al site

Introducción

OpenCart utiliza una arquitectura pseudo MVC. Puedes aprender más sobre MVC en Google, pero en OpenCart esta montado de la forma siguiente:

Hay dos “caras” del sistema OpenCart: “admin” & “catalog”. Está muy claro lo que hace cada una. Pero lo mejor sobr eesto, es que ambas tienen la misma estructura y funcionalidad. Hay también un conjunto de ficheros comunes que llamamos “library”. Los ficheros dentro del library son utilizados para crear las estructuras y variables globales necesarias para el resto del carrito de la compra, asi como funcionalidades básicas.

Para simplificar, en el siguiente ejemplo, trabajaremos del lado “catalog”.

Componentes MVC

Hay 3 partes principales en cada pantalla que se muestra:

1. Controlador

Este es el fichero core donde tienen lugar todos los calculos, queries de DB y magia diversa. Aqui es también son configuradas las variables para valores e idiomas que son pasadas a la variables de vista para que se muestren. Los ficheros del Controller están localizados en el directorio “controller” tanto en catalog como en admin, dependiendo de qué estes modificando.

2. Idioma

Aqui es donde los idiomas son configurados. Los ficheros de idioma utilizan una configuración del tipo ‘constant=value’. El nombre de la constante se utiliza en el código, y nunca cambia. Solo cambia el valor según el idioma. Por ejemplo:

ENGLISH: $_['text_review'] = 'Product Review';
SPANISH: $_['text_review'] = 'De Revisión de Producto';
GERMAN:  $_['text_review'] = 'Produkt Bewertung';

Observese que el lado izquierdo (constante) no cambia.

Los ficheros de idioma están alojados en el directorio “language”

3. Vista

Esto se refiere al template o ficheros tpl. Todas las variables que son pasadas desde el controlador a la vista pueden ser utilizadas para mostrar la salida de los cálculos o funcionalidad. Por ejemplo, si quieres mostrar el total del carrito de la compra, primero necesitas definirlo en el controlador y pasarlo como variable de vista. Algunos ejemplos:

$view = $this->locator->create('template');
set('entry_page', $language->get('entry_page'));
set('text_review_by', $language->get('text_review_by')); 

/* Sets a variable called "text_review_by" to the value pulled
from the language file for the constant matching that variable name */

Los fichero de vista están localizados en el directorio “template”.

Poniéndolo todo junto

La mayoría de los controladores tienen un nombre intuitivo para explicar lo que ellos representan:

product.php = the product page
cart.php = the cart page
home.php = the home page

Ellos también tienen nombres similares para sus ficheros de vista e idiomas correspondientes.

Ejemplo

Digamos que queremos añadir un nuevo mensaje a la página principal que diga “Jander CLander”

1.- Editamos el fichero controller:

EDIT: catalog/controller/home.php

Localizasmos una variable existente para utilizar la como guía (no inventemos la rueda).

FIND:

$view->set('text_latest', $language->get('text_latest'));

AFTER, ADD:

$view->set('text_jander', $language->get('text_jander'));

2.-Ahora insertamos el nuevo valor a nuestro fichero de idioma:

EDIT: catalog/language/english/controller/home.php

Nos servimos de guia de una existente:

$_['text_latest']   = 'Latest Products';

Añadimos

$_['text_jander']   = 'Happy Holidays to your family from www.MySite.com!';

3.- Finalmente , lo insertamos en el fichero de template:

EDIT: catalog/template/default/content/home.tpl

FIND:

<?php echo $text_greeting; ?>

AFTER, ADD:

<?php echo $text_jander; ?>

DONE!

Ya debes poder ver el nuevo mensaje en la home