Guía de inicio rápido para desarrolladores de OpenCart 1.5.X para principiantes
Esta guía está escrita para desarrolladores que ya están familiarizados con PHP, OOP y la arquitectura MVC.
A continuación, verá ejemplos del lado del catálogo del carrito. El lado de administración es idéntico en función con la excepción de las vistas que se indican en la sección correspondiente
Entendiendo las Bibliotecas
Se puede acceder a toda la funcionalidad de la biblioteca a través de Controlador, Modelo y Vistas usando $this->library_name
. Todos estos se pueden encontrar en la /system/library/
carpeta. Por ejemplo, para acceder a los productos del carrito de la compra actual, deberá utilizar la Cart
clase, que se encuentra en /system/library/cart.php
y se puede acceder mediante$this->cart->getProducts()
Artículos de uso común
customer.php
- Funciones relacionadas con el cliente
user.php
- Funciones relacionadas con el usuario administrador
cart.php
- Funciones relacionadas con el carrito
config.php
- Todos los ajustes se cargan desde este
url.php
- Funciones de generación de URL
Comprender el parámetro de ruta
El marco de OpenCart se basa en el route=aaa/bbb/ccc
parámetro de cadena de consulta para saber qué cargar, y es la característica fundamental para encontrar los archivos que necesita editar para cada página. La mayoría de las rutas en realidad solo usan las aaa/bbb
que deberían verse como dos partes, sin embargo algunas contienen tres partes. aaa/bbb/ccc
La primera parte aaa
generalmente está relacionada con la carpeta dentro de una carpeta genérica como el controlador o las carpetas de plantilla. La segunda parte suele estar relacionada con el nombre del archivo, sin la extensión .php
ni la correspondiente .tpl
. La tercera parte se explica en la sección "Comprensión de los controladores" a continuación.
Entendiendo idiomas
Los idiomas se almacenan en la /catalog/language/
carpeta de la your-language
subcarpeta. Dentro de esto, los valores de texto generales utilizados en varias páginas se almacenan en el your-language.php
archivo dentro de la carpeta, por lo que para el idioma inglés en el lado del catálogo, encontrará los valores en catalog/language/english/english.php
. Para un texto de página específico, necesitará el route
para la página (este es generalmente el caso, pero no siempre, ya que puede especificar cualquier archivo de idioma que desee). Por ejemplo, la página de búsqueda tiene la ruta product/search
y, por lo tanto, el texto específico del idioma para esa página se puede encontrar en catalog/language/english/product/search.php
(Observe que el nombre del archivo y la subcarpeta coinciden con la ruta seguida por .php
.
Para cargar el idioma en un controlador, usa
$this->language->load('product/search');
Luego, puede utilizar la función de biblioteca de idiomas get
para recuperar textos de idiomas específicos, como
$some_variable = $this->language->get('heading_title');
Las variables de idioma se asignan en el archivo de idioma mediante una variable especial $_
que es una matriz de claves y valores de texto. En tu /catalog/language/english/product/search.php
deberías encontrar algo similar a
$_['heading_title'] = 'Search';
Los valores en el archivo de idioma global english/english.php
se cargan automáticamente y están disponibles para su uso sin el $this->language->load
método
Entender los controladores
Los controladores se cargan en función del route
y son bastante sencillos de entender. Los controladores se encuentran en la /catalog/controller/
carpeta. Continuando con el último ejemplo, el Controlador de la página de búsqueda se encuentra /product/search.php
dentro de esta carpeta. Observe de nuevo que .php
se utiliza la ruta seguida por .
Al abrir el archivo del controlador, verá un nombre de clase Pascal Case que extiende la Controller
clase, llamado ControllerProductSearch
. De nuevo, esto es específico de la ruta, Controller
seguido del nombre de la subcarpeta y el nombre del archivo sin la extensión en mayúscula. Las mayúsculas no son realmente necesarias, pero se recomiendan para facilitar la lectura. Vale la pena señalar que los nombres de clase no toman ningún valor de la subcarpeta y el nombre del archivo que no sean letras y números. Se eliminan los guiones bajos.
Dentro de la clase están los métodos. Los métodos de la clase declarada public
son accesibles para ejecutarse a través de la ruta; private
no lo son. De forma predeterminada, con una ruta estándar de dos partes ( aaa/bbb
arriba), index()
se llama a un método predeterminado . Si ccc
se usa la tercera parte de una ruta ( arriba), este método se ejecutará en su lugar. Por ejemplo, account/return/insert
cargará el /catalog/controller/account/return.php
archivo y la clase e intentará llamar al insert
método
Comprensión de modelos
Los modelos en OpenCart se encuentran en la /catalog/model/
carpeta y se agrupan según la función, no la ruta, y por lo tanto deberá cargarlos en su controlador a través de
$this->load->model('xxx/yyy');
Esto cargará el archivo en la subcarpeta xxx
llamada yyy.php
. Entonces está disponible para su uso a través del objeto
$this->model_xxx_yyy
y al igual que con los controladores, solo puede llamar a sus public
métodos. Por ejemplo, para cambiar el tamaño de una imagen, usaría el tool/image
modelo y llamaría a su resize
método de la siguiente manera
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Comprender la asignación de variables en vistas desde el controlador
Para pasar valores a la vista desde el controlador, simplemente necesita asignar sus datos a la $this->data
variable, que es esencialmente una matriz de pares clave => valor. Como ejemplo
$this->data['example_var'] = 123;
Acceder a esto en una vista es un poco, debería ser fácil de entender si está familiarizado con el método extract () que convierte cada clave en una variable. Entonces la example_var
clave se convierte $example_var
y se puede acceder a ella como tal en la vista.
Entendiendo temas
Los temas están disponibles solo en el lado del catálogo y son básicamente una carpeta de plantillas, hojas de estilo e imágenes de temas. Las carpetas de temas se colocan en la /catalog/view/theme/
carpeta seguida del nombre del tema. El nombre de la carpeta no es importante con excepción de la default
carpeta
El lado del administrador usa /admin/view/template/
(omitiendo el /theme/theme-name/
de la ruta ya que no permite diferentes temas)
Los archivos de plantilla residen en una template
carpeta dentro de la carpeta del tema. Si alguna plantilla no está disponible para el tema seleccionado actualmente, la plantilla de la carpeta predeterminada se utiliza en su lugar como alternativa. Esto significa que los temas se pueden crear con muy pocos archivos y seguir funcionando plenamente. También reduce la duplicación de código y los problemas a medida que se realizan actualizaciones.
Comprensión de las vistas (plantillas)
Al igual que con el idioma y los modelos, los archivos de vista generalmente están relacionados con la ruta, aunque no tienen que estarlo en absoluto. Las plantillas en el lado del catálogo generalmente se encuentran a /catalog/view/theme/your-theme/template/
menos que no exista, en cuyo caso se usarán las plantillas del tema predeterminado. Para nuestro ejemplo de página de búsqueda anterior, el archivo es product/search.tpl
. Para rutas con tres partes, generalmente está adentro, aaa/bbb_ccc.tpl
aunque no hay una regla establecida. En el administrador, la mayoría de las páginas siguen esto, con la excepción de que las páginas que enumeran elementos, como la página de listado de productos, están en catalog/product_list.tpl
y el formulario de edición de productos está en catalog/product_form.tpl
. Nuevamente, estos no están establecidos, sino un estándar para el carrito predeterminado.
El archivo de plantilla es de hecho solo otro archivo php, pero con una extensión .tpl y en realidad se ejecuta en el archivo del controlador, por lo tanto, todas las cosas que puede codificar en un controlador se pueden ejecutar en un archivo de plantilla (aunque no se recomienda a menos que sea absolutamente necesario necesario)
Comprender el objeto de la base de datos
Las consultas se ejecutan usando
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
como sugiere el nombre es una constante que contiene el prefijo de la base de datos si existe
$result
devolverá un objeto para SELECT
consultas, que contiene algunas propiedades
$result->row
contiene los datos de la primera fila si uno o más se devuelven como una matriz asociativa
$result->rows
contiene una matriz de resultados de fila, ideal para recorrer con foreach
$result->num_rows
contiene el número de resultados devueltos
También hay algunos métodos adicionales que $this->db
tiene el objeto
$this->db->escape()
usa mysql_real_escape_string () en el valor pasado
$this->db->countAffected
devuelve el número de filas afectadas por una UPDATE
consulta y así sucesivamente
$this->db->getLastId()
devuelve la última identificación de incremento automático usando mysql_insert_id ()
Comprender las variables reservadas
OpenCart ha predefinido de variables para usar en lugar de la norma $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
Y$_SERVER
$_SESSION
se edita utilizando $this->session->data
donde los datos son una matriz asociativa que imita el$_SESSION
Se puede acceder a todos los demás usando $this->request
y se han "limpiado" para cumplir con las comillas mágicas habilitadas / deshabilitadas, por lo que
$_GET
se convierte en $this->request->get
$_POST
se convierte en $this->request->post
$_COOKIE
se convierte en $this->request->cookie
$_FILES
se convierte en $this->request->files
$_REQUEST
se convierte en $this->request->request
$_SERVER
se convierte en $this->request->server
Resumen
Si bien lo anterior no es una guía a prueba de balas para los desarrolladores, es de esperar que sirva como un buen punto de partida para los que comienzan.