Página 1 de 2

Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 09:02
por piters
Bom dia pessoal.

Personalizei um tema para o Opencart. Utilizei como base o tema default (a estrutura, funções, etc) e o adaptei. O meu tema possui três colunas (contra um do default) e para isso resolvi com o posicionamento da coluna direita e a coluna esquerda lá em EXTENSÕES->MÓDULO. Tudo tranquilo até aí.

Qual a minha dificuldade? Gostaria de saber como listar apenas os filhos de uma determinada categoria na minha coluna esquerda (column_left.tpl).

Tenho DIV´s nessa coluna esquerda onde cada uma representa uma categoria. Em cada DIV dessas gostaria de listar os filhos. Por exemplo: listar os filhos da categoria PÁSSAROS. Listar os filhos da categoria CÃES. E assim por diante.

Como fazer isto?

Obrigado pela atenção.

Piters Macri.

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 09:33
por Renato Frota
Piters,

1- você está usando o módulo catalog/controller/module/category.php para isso?
2- as divs ficarão visíveis todas de uma vez, com uma lista de subcategorias, ou somente a div da categoria atual?

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 15:08
por piters
Olá Renato.

1 - Tentei usar a função de menu (horizontal) do tema default . Como usar o category.php ?
2 - Todas as divs ficarão visiveis de uma vez.

Att.

Piters Macri.

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 15:21
por Renato Frota
Em Extensões > Módulos você tem um módulo chamado Departamentos (se está usando a tradução aqui da comunidade).

Ative-o e coloque o posicionamento em Conteúdo da Esquerda.

Ele exibe, por padrão, a lista de departamentos comprimidas, e somente os departamentos "filhos" do departamento ativo.

Para exibir todos os departamentos expandidos, aplique este mod ou faça a alteração manual em:
/catalog/view/theme/seu-tema/template/module/category.tpl, linha 13
Código: Selecionar todos
          <?php if ($category['children']) { ?>
          <ul>
para:
Código: Selecionar todos
          <?php if ($category['children']) { ?>
          <ul style="display:block">
isso fará todas as <ul> se expandirem, mostrando os departamentos "filhos".

-edit-

agora que percebi, que você pretende que o nome do departamento pai não seja exibido (somente o nome dos deptos. filhos).
Vai estilizar com uma imagem de background, eu pressuponho. Acertei?

Nesse caso, você tem duas opções. A primeira, é estilizar as <ul> (departamento) que conterá os <li> (filhos).
A segunda (que eu acho mais versátil) é englobar cada <ul> em uma <div> com nome de classe e ids específicos, para você trabalhar o CSS delas.

Para criar essas divs, pouco acima, nesse mesmo arquivo, troque:
Código: Selecionar todos
          <?php if ($category['category_id'] == $category_id) { ?>
          <a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
          <?php } else { ?>
          <a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
          <?php } ?>
por:
Código: Selecionar todos
          <?php if ($category['category_id'] == $category_id) { ?>
          <div id="#depto-<?php echo $category['id']; ?>" class="deptos active">
          <?php } else { ?>
          <div id="#depto-<?php echo $category['id']; ?>" class="deptos">
          <?php } ?>
e mais abaixo, troque:
Código: Selecionar todos
          </ul>
          <?php } ?>
por:
Código: Selecionar todos
          </ul></div>
          <?php } ?>
(cuidado nessa alteração, tem muitos fechamentos parecidos nessa parte).

Agora é só estilizar as divs no CSS. Todas as divs terão a classe "deptos" (deptos + active no caso do departamento ativo) e cada uma terá ainda um id único, no formato #depto-X, onde X é o ID da categoria.

Mastigado, hein? compartilha o resultado com a galera (e o tema comigo :D ) ou então... clique aqui :mrgreen:

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 19:23
por piters
Muito obrigado Renato.

Vou testar aqui e trago sim para todos o resultado.

Obrigado.

Piters Macri. :)

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 19:40
por piters
Olá Renato.

Bom você acertou na sua observação sobre apenas exibir os departamentos filhos, é isso mesmo.

Lá em Extensões -> Módulos não tem nenhum módulo chamado "Departamentos". Não me recordo aonde baixei essa tradução pt-br, não seria no meu caso o módulo "Categorias"?

Bom, apesar de conhecer muito bem Wordpress este é o meu primeiro trabalho com Opencart, na verdade eu não sei como "chamar" o category.tpl no meu arquivo column_left.tpl do meu tema personalizado.

Tentei chamar desta forma, mas ocorreu um erro:
Código: Selecionar todos
<ul>
    <?php foreach ($categories as $category) { ?>
    <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
      <?php if ($category['children']) { ?>
      <div>
        <?php for ($i = 0; $i < count($category['children']);) { ?>
        <ul>
          <?php $j = $i + ceil(count($category['children']) / $category['column']); ?>
          <?php for (; $i < $j; $i++) { ?>
          <?php if (isset($category['children'][$i])) { ?>
          <li><a href="<?php echo $category['children'][$i]['href']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
          <?php } ?>
          <?php } ?>
        </ul>
        <?php } ?>
      </div>
      <?php } ?>
    </li>
    <?php } ?>
  </ul>
Obrigado pela dica :)

Piters Macri.

Re: Apenas filhos da categoria por DIV

Enviado: 26 Fev 2012, 20:44
por Renato Frota
Não precisa chamar. É só ativar o módulo lá no painel administrativo.

Sua tradução não é aqui da comunidades. Nós utilizamos o nome "departamentos" em vez "categorias", com isso, o módulo se chama Departamentos.

O OpenCart é o 1.5.1.3? Se for, recomendo baixar a tradução aqui da comunidade, até mesmo para facilitar o suporte.

Só lembrando os que estão chegando agora e estão por fora do assunto, seguindo as orientações que eu passei, o módulo Departamentos passa a exibir apenas as os departamentos "filhos", sem os departamentos "pai".

Re: Apenas filhos da categoria por DIV

Enviado: 27 Fev 2012, 21:27
por piters
Olá Renato.

Eu realizei a modificação de código que você me indicou no arquivo category.tpl e não deu certo.

Na verdade ele listou os departamentos e não os filhos:

Pássaros (0)
Cães (0)
Gatos (0)
Peixes (0)
Roedores (0)
Serviço (0)
Quem Somos (0)
Fale Conosco (0)

Fica dessa maneira, mesmo habilitando o filho na aba Dados do Departamento os filhos. Não tem como tirar esse "(0)" dos departamentos?

Me tira outra dúvida: nessa aba (Departamentos -> aba Dados) existe um campo chamado "entry_top" e "entry_column". Não sei para que servem.

Att.

Piters Macri.

Re: Apenas filhos da categoria por DIV

Enviado: 28 Fev 2012, 06:46
por Renato Frota
Essas linhas que você perguntou, estão assim porque você está com uma tradução incompleta. Baixe a oficial aqui da comunidade.

quanto ao módulo, não testei, mas reli o código e tenho certeza que não era pra listar como você falou. estou no celular, vejo isso hoje à tarde. enquanto isso, tente pegar o arquivo original e aplicar às alterações novamente.

Re: Apenas filhos da categoria por DIV

Enviado: 28 Fev 2012, 21:59
por piters
Olá Renato Frota.

Já atualizei a versão do OC para pt-br daqui da comunidade (versão 1.5.1.3), porém não houve alteração nessas linhas. Não entendo por que. Li em outro post que um colega excluiu a tradução em inglês e tudo funcionou, mas tenho medo de fazer isso e "bichar" alguma coisa.

O código que você me passou deu certo sim, obrigado. O que me deixa encucado é esse "(0)" que ele fica mostrando após imprimir o departamento filho.

Obrigado,

Piters Macri :)