Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Por Deco
#86260
Bom dia pessoal, tudo bem.

Estou a algum tempo pesquisando alguns artigos/tutoriais de como criar módulos para opencart, porém não encontro nada muito esclarecedor para que eu possa estar estudando esta parte.

Alguém teria alguns links de artigos, tutoriais para que eu possa entender como desenvolver meu próprio módulo?
A principio é para estudos!

Obrigado,
André.
Por Deco
#86372
Boa tarde galera do OC.

Pesquisando muito encontrei alguns artigos que mostram dicas para implementar módulos, caso não puder colocar link de referência, por favor, me avisem que não quero descumprir nenhuma regra aqui do fórum:

Link:
https://code.tutsplus.com/categories/opencart?page=2

A dúvida é: estes tutoriais são da versão 2x, mas podem servir de exemplo para desenvolver para versões 3x ?

Grato,
André:smiley:
Por veteranodf
Mensagens Especiais
#86373
O layout para criar módulo é a mesma MVC, pode ocorrer do diretório onde fica armazenado os módulos mude de uma versão para outra; Se deseja criar uma extensão para tal área na administração por exemplo e não sabe onde deve ficar os arquivos vou te da um exemplo abaixo;

Menu catalogo

http://minhaloja.com.br/admin/index.php?route=catalog/product&user_token=xxxxxxxxxxxxx

A query string route te mostra onde esta o caminho "catalog/product", toda route chama o controller do opencart, sendo assim você sabe que o arquivo esta dentro da pasta "admin/controller", o caminho completo fica assim "admin/controller/catalog/product.php", o nome após a última barra é um arquivo php ou um método, no caso do exemplo é o "product.php", sendo assim o controller esta chamando o arquivo "product.php";

Outro exemplo

http://minhaloja.com.br/admin/index.php?route=catalog/product/edit&user_token=xxxxxxxxxxxxx

No link acima o controller esta chamando o método "edit()" no arquivo "admin/controller/catalog/product.php";

A dica que te dou é multiplicar um módulo já existente mudando o nome da classe e tudo relacionado ao outro módulo, caso conseguir fazer funcionar esta indo no passo certo; Eu mesmo a muito tempo comecei por esse método;
Por Deco
#86376
Boa tarde galera,

Ok veteranodf, muito obrigado pelas dicas, vou segui-las para pegar a manha no desenvolvimento de módulos OC.
Vou tentar implementar um e posteriormente posto o resultado.

Obrigado e ótima semana à todos::slightly_smiling_face:
Por Deco
#86491
Galera, bom dia. Espero que estejam todos bem :D

Estou criando uma label para colocar nos produtos em promoção, mas tenho pouca exp em OpenCart e php, a minha dúvida é a seguinte:

Segui os passos do veterano para criar módulos, realmente é o caminho para se iniciar no desenvolvimento para OC.
Porém, estou editando direto o arquivo special.twig.

Está dando erro ao fazer o calculo em porcentagem do produto nas variaveis : product.price e product.special, estou fazendo o seguinte:
Código: Selecionar todos
{% if product.special %}
            <!-- Label Desconto -->
            <div class="label_left">
              <span class="text_descount">
                  {{ (( product.price - product.special ) * 100 / product.price ) }}
              </span>
            </div>
 {% endif %}
Me retorna o erro:

Warning: A non-numeric value encountered no arquivo /opt/lampp/htdocs/opencart/system/library/template/Twig/Environment.php(403) : eval()'d code na linha 202Warning: A non-numeric value encountered no arquivo /opt/lampp/htdocs/opencart/system/library/template/Twig/Environment.php(403) : eval()'d code na linha 202Warning: A non-numeric value encountered no arquivo /opt/lampp/htdocs/opencart/system/library/template/Twig/Environment.php(403) : eval()'d code na linha 202Warning: Division by zero no arquivo /opt/lampp/htdocs/opencart/system/library/template/Twig/Environment.php(403) : eval()'d code na linha 202

Pelo que entendi, estou calculando sobre uma variavel não numérica, mas ambas são float :roll:

Alguém para me ajudar...

Obrigado,
André :D
Por veteranodf
Mensagens Especiais
#86496
O correto é você fazer a operação no controller responsável por enviar esses dados para o twig, e no twig só imprimir o resultado por uma variável {{ label }} por exemplo; Ou pode tentar mudar seu código para o abaixo removendo "(" do código, essa segunda opção não sei se irá funcionar corretamente;
Código: Selecionar todos
 {{ product.price - product.special * 100 / product.price }}
Por Deco
#86507
Olá veteranodf e galera do fórum.

Alterei o arquivo no controller criando a variavel como indicado, coloquei a mesma no twig e deu certo.

Muito Obrigado pela ajuda.

A quem se interessar, segue:

No arquivo: catalog/controller/product/special.php, criei a seguinte instrução:
Código: Selecionar todos
// label de desconto
			if($special) {
				
				$label = round(($result['price'] - $result['special']) * 100 / $result['price']) . '%';
			}
			else {
				$label = false;
			}
e Adicionei no array a variável label para chamá-la posteriormente:
Código: Selecionar todos
$data['products'][] = array(
				'product_id'  => $result['product_id'],
				'thumb'       => $image,
				'name'        => $result['name'],
				'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
				'price'       => $price,
				'special'     => $special,
				'tax'         => $tax,
				'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
				'rating'      => $result['rating'],
				'href'        => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url),
				'label'		 => $label
			);
No arquivo: catalog/view/theme/default/template/product/special.twig

Adicionei o código dentro da tag <div class="product-thumb">
Código: Selecionar todos
 {% if product.special %}
            <!-- Label Desconto -->
            <div class="label_left">
              <span class="text_descount">
                  {{ product.label }}
              </span>
            </div>
            {% endif %}
Obs: criando também o css para label, que no meu caso foi:
Código: Selecionar todos
/* Label desconto */
div.label_left, div.label_right {
  display: flex;
  position: absolute;
  top: 4px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  z-index: 1;
  padding: 5px;
  justify-content: center;
  align-items: center;
  /* text-align: center; */
  cursor: default;
  background-color: #ab003d;
}

div.label_left {
  left: 30px;  
}

div.label_right {
  right: 30px;
}

span.text_descount {
  color: #FFFFFF;
  font-size: 1em;
  font-weight: bold;
  position: relative;
  line-height: 1.5;
}
/*Label Desconto*/
Assim como veteranodf me ajudou a criá-la, estou compartilhando, no meu caso foi para compreender as funcionalidades do opencart, vou criar o módulo em arquivos separados para instalar na loja e futuramente posto.

Obrigado mais uma vez veteranodf e a todos envolvidos,

André.
veteranodf gostou disso
Por Deco
#86519
Boa tarde veteranodf e amigos,

Criei um modelo de label de desconto e um script que valida se o total do produto for menor que 1, ele altera o layout colocando o aviso produto indisponivel e mais abaixo um botao para encomendar o produto (que ainda tenho que criar o script para envio de um email), ok.

Porém a dúvida é a seguinte:
Na página special ele aparece a label e o aviso de falta de produto, mas em outro arquivo que adicionei o mesmo script, por exemplo a search, não aparece. Alguém tem alguma ideia do que seria?

Link do special (produtos em promoção)
https://paolaconstance.com.br/loja/inde ... ct/special

Link do search (pesquisa de produtos)
https://paolaconstance.com.br/loja/inde ... ch=anabela

Como percebido no arquivo de search, o percentual de desconto não aparece e também os textos de aviso de falta de produto e o botão para encomendar também não.

Outra dúvida é, eu configurei para ter todas as urls amigáveis, mas tem algumas que ainda não funcionam, como forçar seu uso?

Obrigado,
André:smiley:
Por veteranodf
Mensagens Especiais
#86522
Deve acrescentar a mesma função que fez no controller special no arquivo catalog/controller/product/search.php
Por Deco
#86530
Boa tarde veteranodf e amigos do fórum,

Mais uma vez obrigado.

Mas o que eu percebi foi que desenvolvendo via localhost todos os controllers e demais arquivos aceitaram as alterações, mas quando upo todos os arquivos para um servidor remoto, ele não aceita, somente o controller special.

Att,
André.:smiley:
Melhora no detalhamento do Pedido

@Tiago Camargo , contrate um freelancer que traba[…]

@reds obrigada pela atenção […]

@Manoel Vidal Obrigada pelos esclarecimento.

Estou com o mesmo problema, porem nao sei onde fa&[…]