Parece que no tienen documentación, excepto algunas llamadas a la API en sus foros oficiales. Tengo experiencia con el framework Zend y CodeIgniter. ¿Puede algún maestro de OpenCart recomendarme la mejor manera de aprenderlo y dominarlo en el menor tiempo posible? Tengo que hacer un gran proyecto con él pronto.
98

Respuestas:
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 laCartclase, que se encuentra en/system/library/cart.phpy se puede acceder mediante$this->cart->getProducts()Artículos de uso común
customer.php- Funciones relacionadas con el clienteuser.php- Funciones relacionadas con el usuario administradorcart.php- Funciones relacionadas con el carritoconfig.php- Todos los ajustes se cargan desde esteurl.php- Funciones de generación de URLComprender el parámetro de ruta
El marco de OpenCart se basa en el
route=aaa/bbb/cccpará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 lasaaa/bbbque deberían verse como dos partes, sin embargo algunas contienen tres partes.aaa/bbb/cccLa primera parteaaageneralmente 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.phpni 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 layour-languagesubcarpeta. Dentro de esto, los valores de texto generales utilizados en varias páginas se almacenan en elyour-language.phparchivo dentro de la carpeta, por lo que para el idioma inglés en el lado del catálogo, encontrará los valores encatalog/language/english/english.php. Para un texto de página específico, necesitará elroutepara 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 rutaproduct/searchy, por lo tanto, el texto específico del idioma para esa página se puede encontrar encatalog/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
Luego, puede utilizar la función de biblioteca de idiomas
getpara recuperar textos de idiomas específicos, comoLas 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.phpdeberías encontrar algo similar aLos valores en el archivo de idioma global
english/english.phpse cargan automáticamente y están disponibles para su uso sin el$this->language->loadmétodoEntender los controladores
Los controladores se cargan en función del
routey 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.phpdentro de esta carpeta. Observe de nuevo que.phpse utiliza la ruta seguida por .Al abrir el archivo del controlador, verá un nombre de clase Pascal Case que extiende la
Controllerclase, llamadoControllerProductSearch. De nuevo, esto es específico de la ruta,Controllerseguido 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
publicson accesibles para ejecutarse a través de la ruta;privateno lo son. De forma predeterminada, con una ruta estándar de dos partes (aaa/bbbarriba),index()se llama a un método predeterminado . Sicccse usa la tercera parte de una ruta ( arriba), este método se ejecutará en su lugar. Por ejemplo,account/return/insertcargará el/catalog/controller/account/return.phparchivo y la clase e intentará llamar alinsertmétodoComprensió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 deEsto cargará el archivo en la subcarpeta
xxxllamadayyy.php. Entonces está disponible para su uso a través del objetoy al igual que con los controladores, solo puede llamar a sus
publicmétodos. Por ejemplo, para cambiar el tamaño de una imagen, usaría eltool/imagemodelo y llamaría a suresizemétodo de la siguiente maneraComprender 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->datavariable, que es esencialmente una matriz de pares clave => valor. Como ejemploAcceder 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_varclave se convierte$example_vary 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 ladefaultcarpetaEl 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
templatecarpeta 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 esproduct/search.tpl. Para rutas con tres partes, generalmente está adentro,aaa/bbb_ccc.tplaunque 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 encatalog/product_list.tply el formulario de edición de productos está encatalog/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
DB_PREFIXcomo sugiere el nombre es una constante que contiene el prefijo de la base de datos si existe$resultdevolverá un objeto paraSELECTconsultas, que contiene algunas propiedades$result->rowcontiene los datos de la primera fila si uno o más se devuelven como una matriz asociativa$result->rowscontiene una matriz de resultados de fila, ideal para recorrer con foreach$result->num_rowscontiene el número de resultados devueltosTambién hay algunos métodos adicionales que
$this->dbtiene el objeto$this->db->escape()usa mysql_real_escape_string () en el valor pasado$this->db->countAffecteddevuelve el número de filas afectadas por unaUPDATEconsulta 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,$_REQUESTY$_SERVER$_SESSIONse edita utilizando$this->session->datadonde los datos son una matriz asociativa que imita el$_SESSIONSe puede acceder a todos los demás usando
$this->requesty se han "limpiado" para cumplir con las comillas mágicas habilitadas / deshabilitadas, por lo que$_GETse convierte en$this->request->get$_POSTse convierte en$this->request->post$_COOKIEse convierte en$this->request->cookie$_FILESse convierte en$this->request->files$_REQUESTse convierte en$this->request->request$_SERVERse convierte en$this->request->serverResumen
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.
fuente
Métodos de biblioteca global: funciones básicas de biblioteca opencart junto con sus funcionalidades, la mayoría de estas se pueden llamar desde cualquier lugar del catálogo o carpetas de administración (controladores, modelos, vistas)
fuente
Hay un sitio web OpenCart Wiki con documentación para desarrolladores principiantes. Siga las direcciones URL que se proporcionan a continuación para obtener más detalles:
http://wiki.opencarthelp.com/doku.php?id=starthttp://wiki.opencarthelp.com/doku.php?id=methods_referenceVínculos ARCHIVO DE INTERNET
http://web.archive.org/web/20160305131349/http://wiki.opencarthelp.com/doku.php?id=start http://web.archive.org/web/20160305131349/http://wiki .opencarthelp.com / doku.php? id = referencia_métodos
Por ejemplo, la referencia del método tiene detalles para:
Aún así, hay algunas páginas en construcción, pero será útil.
[Actualizar]
A partir de enero de 2018, el dominio opencarhelp.com está inactivo.
fuente
Aunque este tema ya ha sido respondido muchas veces, me gustaría ofrecer otro enfoque para dominar OpenCart basado en mi experiencia.
Aprender haciendo
Al crear su propio marco OpenCart desde cero con un puñado de archivos, puede comprender cómo se organiza todo. Estaré imitando la estructura de archivos de OpenCart por ti.
Crea un archivo
index.php1. Registro
Opencart usa el patrón de Registro para enumerar todas las instancias de clases cargadas. Es el corazón de su aplicación OpenCart. Luego, el objeto de registro se pasa a todas las categorías, modelos y bibliotecas para acceder rápidamente a otros objetos.
crear un archivo con ruta
/system/engine/registry.phpen tus
index.php2. Salida
Ahora agreguemos una salida que será nuestro HTML en el futuro. Después de todo, la idea es enviar una cadena de texto al navegador.
Crea un archivo
system/library/response.phpy en tu
index.php3. Controladores
Piense en los controladores como páginas. Definirán lo que se mostrará al cliente: texto, html, json, descarga o incluso una imagen. Por ahora, solo queremos una página que envíe texto.
Crearemos un controlador para la
homepágina.agregar un archivo con ruta
catalog/controller/common/home.phpy edita tu
index.php4. Enrutador
No queremos que los controladores estén codificados, ¿no? Usaremos un parámetro
routede la dirección URL para decirle a nuestro carrito qué controlador cargar.Crea un archivo con ruta
system/library/request.phpCree la clase Router que será responsable de inicializar el archivo del controlador en función de la ruta (en otras palabras: llamar dinámicamente al controlador)
cárgalo en tu
index.phpEsta publicación ya es demasiado larga, pero espero que brinde una comprensión básica del patrón MVC en OpenCart.
También echa un vistazo a mi https://www.youtube.com/dreamvention de Youtube y a mi blog https://dreamvention.com/blog. ¡Publicaré más consejos y tutoriales para ustedes!
fuente
PHP es un lenguaje bastante grande con más de 5000 funciones integradas, por lo que una estrategia para aprender una nueva plataforma es identificar qué funciones usa con más frecuencia y dedicar un tiempo a conocerlas muy bien.
Ejecuté algunas consultas en el código fuente de OpenCart y las 10 funciones más utilizadas son:
Los 52 enumerados aquí, así como los comandos bash de Linux que puede usar en cualquier base de código para identificar las funciones de uso común: https://www.antropy.co.uk/blog/efficient-learning-for-new-opencart-developers/
fuente
Esta lista de reproducción de videos de youtube también puede ser útil para convertirse en gurús de desarrolladores de OpenCart:
Tutoriales de vídeos de OpenCart
Patrón MVCL, flujo de código y solicitud y respuesta en OpenCart Muestra el patrón MVCL, flujo de código y solicitud y respuesta en OpenCart. Describen el flujo como en la siguiente imagen:
Instalar, configurar y desinstalar el módulo OpenCart Muestra tres formas de cargar módulos, luego instalar, configurar y desinstalar el módulo / extensión OpenCart 3.
Diseños y posición en OpenCart 3 Describe los diseños y posiciones de OpenCart 3. Muestra cómo mostrar diseños personalizados para diferentes páginas, dando ejemplos de páginas de categorías. Mostramos el diseño diferente para una categoría diferente.
Descripción general de eventos de OpenCart Aprenderá qué son los eventos en OpenCart, cómo funcionan y qué los hace tan útiles.
Documentación de la API de Opencart para desarrolladores Este video mostrará cómo usar y hacer una API de Opencart personalizada
Una vez que vea estos videos, puede comenzar a codificar :)
fuente