Guia de início rápido do desenvolvedor OpenCart 1.5.X para iniciantes
Este guia foi escrito para desenvolvedores já familiarizados com PHP, OOP e a arquitetura MVC
A seguir, você verá exemplos para o lado do catálogo do carrinho. O lado do administrador é idêntico em função, com exceção das visualizações que são indicadas na seção relevante
Noções básicas sobre bibliotecas
Todas as funcionalidades da biblioteca podem ser acessadas por meio de Controller, Model e Views usando $this->library_name. Todos eles podem ser encontrados na /system/library/pasta. Por exemplo, para acessar os produtos do carrinho de compras atual, você precisará usar a Cartclasse, que está em /system/library/cart.phpe pode ser acessada usando$this->cart->getProducts()
Itens comumente usados
customer.php - Funções relacionadas ao cliente
user.php - Funções relacionadas ao usuário administrador
cart.php - Funções relacionadas ao carrinho
config.php - Todas as configurações são carregadas a partir deste
url.php - funções de geração de URL
Compreender o parâmetro de rota
A estrutura do OpenCart depende do route=aaa/bbb/cccparâmetro da string de consulta para saber o que carregar e é o recurso de base para encontrar os arquivos que você precisa editar para cada página. Na verdade, a maioria das rotas usa apenas o, aaa/bbbque deve ser visto como duas partes, no entanto, algumas contêm três partes. aaa/bbb/cccA primeira parte aaageralmente está relacionada à pasta dentro de uma pasta genérica, como as pastas do controlador ou do modelo. A segunda parte geralmente está relacionada ao nome do arquivo, sem a extensão .phpou relevante .tpl. A terceira parte é explicada na seção "Compreendendo os controladores" abaixo
Compreender idiomas
Os idiomas são armazenados em uma /catalog/language/pasta na your-languagesubpasta. Dentro dele, os valores de texto gerais usados em várias páginas são armazenados no your-language.phparquivo dentro da pasta, portanto, para o idioma inglês no catálogo, você encontrará os valores em catalog/language/english/english.php. Para um texto de página específico, você precisará do routepara a página (geralmente é o caso, mas nem sempre, pois você pode especificar qualquer arquivo de idioma que desejar). Por exemplo, a página de pesquisa tem a rota product/searche, portanto, o texto específico do idioma para essa página pode ser encontrado em catalog/language/english/product/search.php(Observe que o nome e a subpasta do arquivo correspondem à rota seguida por .php.
Para carregar o idioma em um controlador, você usa
$this->language->load('product/search');
Então você pode usar a função de biblioteca de linguagem getpara recuperar textos de linguagem específicos, como
$some_variable = $this->language->get('heading_title');
As variáveis de idioma são atribuídas no arquivo de idioma usando uma variável especial $_que é uma matriz de chaves e valores de texto. No seu, /catalog/language/english/product/search.phpvocê deve encontrar algo semelhante a
$_['heading_title'] = 'Search';
Os valores no arquivo de idioma global english/english.phpsão carregados automaticamente e disponíveis para uso sem o $this->language->loadmétodo
Compreendendo os controladores
Os controladores são carregados com base no routee são bastante simples de entender. Os controladores estão localizados na /catalog/controller/pasta. Continuando com o último exemplo, o controlador para a página de pesquisa está /product/search.phpdentro desta pasta. Observe novamente que a rota seguida por .phpé usada.
Abrindo o arquivo do controlador, você verá um nome de Controllerclasse Pascal Case estendendo a classe, chamada ControllerProductSearch. Novamente, isso é específico da rota, Controllerseguido pelo nome da subpasta e pelo nome do arquivo sem a extensão em maiúsculas. A capitalização não é realmente necessária, mas é recomendada para facilitar a leitura. É importante notar que os nomes das classes não recebem nenhum valor da subpasta e do nome do arquivo, exceto letras e números. Os sublinhados são removidos.
Dentro da classe estão os métodos. Os métodos na classe declarada publicsão acessíveis para serem executados através da rota - privatenão são. Por padrão, com uma rota padrão de duas partes ( aaa/bbbacima), um index()método padrão é chamado. Se a terceira parte de uma rota ( cccacima) for usada, este método será executado. Por exemplo, account/return/insertirá carregar o /catalog/controller/account/return.phparquivo e a classe e tentar chamar o insertmétodo
Modelos de compreensão
Os modelos no OpenCart são encontrados na /catalog/model/pasta e são agrupados com base na função, não na rota e, portanto, você precisará carregá-los em seu controlador via
$this->load->model('xxx/yyy');
Isso carregará o arquivo na subpasta xxxchamada yyy.php. Ele fica então disponível para uso por meio do objeto
$this->model_xxx_yyy
e como acontece com os controladores, você só pode chamar seus publicmétodos. Por exemplo, para redimensionar uma imagem, você usaria o tool/imagemodelo e chamaria seu resizemétodo da seguinte maneira
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Compreendendo a atribuição de variáveis em visualizações do controlador
Para passar valores do controlador para a visualização, você simplesmente precisa atribuir seus dados à $this->datavariável, que é essencialmente uma matriz de pares chave => valor. Como um exemplo
$this->data['example_var'] = 123;
Acessar isso em uma visão é um pouco fácil de entender se você estiver familiarizado com o método extract () que converte cada chave em uma variável. Portanto, a example_varchave se torna $example_vare pode ser acessada como tal na visualização.
Compreender temas
Os temas estão disponíveis apenas para o catálogo e são basicamente uma pasta de modelos, folhas de estilo e imagens de temas. As pastas do tema são colocadas na /catalog/view/theme/pasta seguida pelo nome do tema. O nome da pasta não é importante com exceção da defaultpasta
O lado do administrador usa /admin/view/template/(pulando o /theme/theme-name/do caminho, pois não permite temas diferentes)
Os arquivos de modelo residem em uma templatepasta dentro da pasta do tema. Se algum modelo não estiver disponível para o tema selecionado no momento, o modelo da pasta padrão será usado como fallback. Isso significa que os temas podem ser criados com muito poucos arquivos e ainda funcionam totalmente. Também reduz a duplicação de código e problemas à medida que as atualizações são feitas
Compreendendo as visualizações (modelos)
Assim como ocorre com a linguagem e os modelos, os arquivos de visualização geralmente estão relacionados à rota, embora não necessariamente. Os modelos no lado do catálogo geralmente são encontrados em, a /catalog/view/theme/your-theme/template/menos que não exista; nesse caso, os modelos do tema padrão serão usados. Para nosso exemplo de página de pesquisa acima, o arquivo é product/search.tpl. Para rotas com três partes, geralmente é in, aaa/bbb_ccc.tplembora não haja nenhuma regra definida. No administrador, a maioria das páginas segue isso, com a exceção de que as páginas que listam itens, como a página de lista de produtos, estão em catalog/product_list.tple o formulário de edição de produtos está em catalog/product_form.tpl. Novamente, eles não são definidos, mas um padrão para o carrinho padrão.
O arquivo de modelo é na verdade apenas outro arquivo php, mas com uma extensão .tpl e é realmente executado no arquivo do controlador, portanto, todas as coisas que você pode codificar em um controlador podem ser executadas em um arquivo de modelo (embora não seja recomendado a menos que seja absolutamente necessário)
Compreendendo o objeto de banco de dados
As consultas são executadas usando
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX como o nome sugere, é uma constante contendo o prefixo do banco de dados, se houver
$resultretornará um objeto para SELECTconsultas, contendo algumas propriedades
$result->row contém os dados da primeira linha se um ou mais forem retornados como uma matriz associativa
$result->rows contém uma matriz de resultados de linha, ideal para repetir usando foreach
$result->num_rows contém o número de resultados retornados
Existem também alguns métodos extras que o $this->dbobjeto possui
$this->db->escape()usa mysql_real_escape_string () no valor passado
$this->db->countAffectedretorna o número de linhas afetadas por uma UPDATEconsulta e assim por diante
$this->db->getLastId()retorna o último id de incremento automático usando mysql_insert_id ()
Compreendendo as variáveis reservadas
OpenCart tem predefinidos variáveis para usar no lugar do padrão $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_REQUESTE$_SERVER
$_SESSIONé editado usando $this->session->dataonde os dados são uma matriz associativa que imita o$_SESSION
Todos os outros podem ser acessados usando $this->requeste foram "limpos" para cumprir as aspas mágicas ativadas / desativadas,
$_GET torna-se $this->request->get
$_POST torna-se $this->request->post
$_COOKIE torna-se $this->request->cookie
$_FILES torna-se $this->request->files
$_REQUEST torna-se $this->request->request
$_SERVER torna-se $this->request->server
Resumo
Embora o texto acima não seja um guia à prova de balas para desenvolvedores, espero que sirva como um bom ponto de partida para quem está começando