Como criar positions para seu template no OpenCart 1.4

  • Olá,

    Estou fazendo umas alterações em uma loja OpenCart e vou aproveitar e colocar no blog o que eu for descobrindo sobre o sistema.

    OBS: essas instruções foram feitas para a versão 1.4.9.5 versões posteriores podem não funcionar, assim que possível criarei um novo post falando das positions da versão 1.5.x.

    Bom, os módulos no OpenCart podem ser gerenciados facilmente. Em cada módulo é definido as posições que os mesmo irão aparecer no template, mas quando você quer desenvolver um template mais elaborado precisará criar mais posições ou mesmo mudar as posições padrão do sistema de acordo com a necessidade do projeto.

    Vou exemplificar aqui criando uma posição adicional para o módulo de visualização do carrinho. O nome da posição será Bar fixed e será chamada na pagina header.tpl do template.

    - Abra o arquivo admin/controller/module/cart.php e adicione o trecho em vermelho abaixo (no arquivo original da versão 1.4.9.3 adicione abaixo da linha 25):

    $this->data['text_left'] = $this->language->get(‘text_left’);
    $this->data['text_right'] = $this->language->get(‘text_right’);
    $this->data['text_bar_fixed'] = $this->language->get(‘text_bar_fixed’);

    $this->data['entry_ajax'] = $this->language->get(‘entry_ajax’);

    -  Abra o arquivo admin/language/(english ou portuguese-br depende de qual linguagem esta usando na loja)/module/cart.php e adicione o trecho em vermelho em qualquer parte desse arquivo:

    $_['text_bar_fixed']       = ‘Bar fixed’;

    - Abra o arquivo admin/view/template/module/cart.tpl e adicione o trecho em vermelho abaixo (no arquivo original da versão 1.4.9.3 adicione abaixo da linha 39):

    <?php if ($cart_position == ‘bar_fixed’) { ?>
    <option value=”bar_fixed” selected=”selected”><?php echo $text_bar_fixed; ?></option>
    <?php } else { ?>
    <option value=”bar_fixed”><?php echo $text_bar_fixed; ?></option>
    <?php } ?>

    Nesse ponto você já terá como escolher a posição “Bar Fixed” pelo administrativo:

    Agora colocaremos o código para aparecer os módulos adicionados nessa posição no template do frontend no local que o projeto necessitar, nesse caso estarei adicionando na arquivo header.tpl.

    - Abra o arquivo catalog/controller/module/cart.php catalog/controller/common/header.php e adicione o trecho em vermelho abaixo (no arquivo original da versão 1.4.9.3 adicione abaixo da linha 179):

    $this->load->model(‘checkout/extension’);
    $module_data = $this->model_checkout_extension->getExtensionsByPosition(‘module’, ‘bar_fixed’);
    $this->data['modules'] = $module_data;
    foreach ($module_data as $result) {
    $this->children[] = ‘module/’ . $result['code'];
    }

    - Abra o arquivo catalog/view/theme/default(ou pasta de seu template)/template/common/header.tpl e adicione o trecho em vermelho no local desejado:

    <?php foreach ($modules as $module) { ?>
    <?php echo ${$module['code']}; ?>
    <?php } ?>

    Pronto, agora é só formatar os módulos adicionados nessa posição.

    Se inscreva em nosso curso de OpenCart que logo abriremos as inscrições.

    Abraço

     



    Related Posts Plugin for WordPress, Blogger...




7 Comentarios

  • poderia ter explicado melhor pq colocou os códigos em determinadas linhas

  • Olá,

    Esqueci de falar mas essas instruções é para versão 1.4.9 qual a versão do opencart que esta tentando aplicar essas instruções?

    Chegou a tentar a seguir o tutorial e não deu certo?

    Abraço.

  • tentei estou usando a versão 1.49 e da erro Notice: Undefined variable: modules…Invalid argument supplied for foreach() in…
    :(

  • Prezado,

    Teria como informar o nome do arquivo que esta dando problema e mandar a mensagem completa do erro? É que assim poderei me localizar melhor.

    Abraço

  • Olá,

    O código que você colocou no arquivo catalog/controller/module/cart.php não seria no arquivo catalog/controller/common/header.php ?

    Abs

  • Olá Marcos,

    Muito obrigado pela observação, acabei de testar o tutorial e realmente estava informando o arquivo errado. O correto é o arquivo que citou. Acabei de corrigir no post.

    Abraço.

  • Por nada. =)

    Abs

Comente aqui

* Nome, Email e comentário são obrigatórios