Página 2 de 3

Re: Duvida no Menu Departamentos

Enviado: 02 Out 2012, 23:38
por rdturbo
Valeu obrigado mesmo assim.
Acho que terei que editar o arquivo category.tpl pra tentar resolver.

Re: Duvida no Menu Departamentos

Enviado: 03 Out 2012, 15:21
por rdturbo
Depois de algumas pesquisas, imagino que devo ter que editar o arquivo header.tpl ao que nao sei como fazer

O trecho do codigo a ser editado pelo que entendi deve ser o seguinte:
Código: Selecionar todos
<?php if ($categories) { ?>
<div id="menu">
  <ul>
    <?php foreach ($categories as $category) { ?>
    <li><a href="<?php echo $category['href']; ?>" title="<?php echo $category['name']; ?>"><?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']; ?>" title="<?php echo $category['children'][$i]['name']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
          <?php } ?>
          <?php } ?>
        </ul>
        <?php } ?>
      </div>
      <?php } ?>
    </li>
    <?php } ?>
  </ul>
</div>
<?php } ?>
Ja tentei de algumas formas porem nao deu certo.

Re: Duvida no Menu Departamentos

Enviado: 03 Out 2012, 19:23
por rlasmar
Estou querendo fazer isso tbm.. se alguem souber por favor nos ajude

Re: Duvida no Menu Departamentos

Enviado: 01 Nov 2012, 01:07
por luhh
Gente também preciso, meu website tem umas 50 categorias + e fica muito desorganizado, gostaria de deixar as categorias PAI - Sub categorias em seguida nas sub as marcas...

Pelo visto ninguém sabe ainda como fazer, se alguém souber posta ai será muito útil.

Re: Duvida no Menu Departamentos

Enviado: 22 Nov 2012, 08:41
por lucianopoa
Também pretendo fazer esta alteração. Acredito que não seja muito complicado fazer essa modificação. Caso eu obtenha sucesso, colocarei a modificação nesse tópico.

Re: Duvida no Menu Departamentos

Enviado: 22 Nov 2012, 09:09
por lucianopoa
rdturbo escreveu:Depois de algumas pesquisas, imagino que devo ter que editar o arquivo header.tpl ao que nao sei como fazer

O trecho do codigo a ser editado pelo que entendi deve ser o seguinte:
Código: Selecionar todos
<?php if ($categories) { ?>
<div id="menu">
  <ul>
    <?php foreach ($categories as $category) { ?>
    <li><a href="<?php echo $category['href']; ?>" title="<?php echo $category['name']; ?>"><?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']; ?>" title="<?php echo $category['children'][$i]['name']; ?>"><?php echo $category['children'][$i]['name']; ?></a></li>
          <?php } ?>
          <?php } ?>
        </ul>
        <?php } ?>
      </div>
      <?php } ?>
    </li>
    <?php } ?>
  </ul>
</div>
<?php } ?>
Ja tentei de algumas formas porem nao deu certo.


Também pretendo fazer esta alteração. Acredito que não seja muito complicado fazer essa modificação. Caso eu obtenha sucesso, colocarei a modificação nesse tópico.

Acredito que a alteração do trecho selecionado alteraria apenas o menu superior.

Acredito que a alteração no menu lateral seja em catalog/view/theme/default/template/module/category.tpl :

<div class="box">
<div class="box-heading"><?php echo $heading_title; ?></div>
<div class="box-content">
<div class="box-category">
<ul>
<?php foreach ($categories as $category) { ?>
<li>
<?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 } ?>
<?php if ($category['children']) { ?>
<ul>
<?php foreach ($category['children'] as $child) { ?>
<li>
<?php if ($child['category_id'] == $child_id) { ?>
<a href="<?php echo $child['href']; ?>" class="active"> - <?php echo $child['name']; ?></a>
<?php } else { ?>
<a href="<?php echo $child['href']; ?>"> - <?php echo $child['name']; ?></a>
<?php } ?>
</li>
<?php } ?>
</ul>
<?php } ?>
</li>
<?php } ?>
</ul>
</div>
</div>
</div>

Também pretendo analisar o arquivo catalog/view/theme/default/template/product/category.tpl , pois também tem alguma coisa sobre as categorias.

O arquivo catalog/controller/common/header.php também tem alguma coisa sobre o menu superior.

E tem pelo menos mais 2 arquivos (catalog/controller/product/category.php e catalog/controller/module/category.php ) que pode ter algo para ser modificado.

Vou analisar os arquivos e quando tiver algo mais concreto, retorno.

__________________________________________________________

Editado:

Acredito que para quem conhece o código do Open Cart, essas alterações são simples. Entretanto, eu não possuo este conhecimento.

Pesquisei os arquivos que talvez tivesse que alterar, mas não descobri como fazê-lo. Como preciso dessas alterações para "ontem", solicitei ajuda para resolver essa questão em um outro fórum.

Se conseguir obter a resposta (não aguardarei muito pela resposta), colocarei a resolução do problema aqui. Caso contrário, terei que adquirir o módulo pago de um usuário desse fórum, que, supostamente, resolve esse problema (nesse caso, por questões éticas, não poderei colocar a resolução aqui) em relação ao menu lateral.

Re: Duvida no Menu Departamentos

Enviado: 22 Nov 2012, 19:30
por rlasmar
Obrigado luciano, não deixe de nos avisar! No aguardo.

Re: Duvida no Menu Departamentos

Enviado: 22 Nov 2012, 21:04
por rodrigoem
Bom, pelo visto nao sou so eu que estou precisando disso.

Eu tentei mudar o arquivo do header do meu template, mas tambem nao consegui..

O que eu fiz esta abaixo em vermelho, em azul e o codigo padrao, mas lembrando que NAO funcionou.. Provavelmente nao funcionou pois a variavel $category nao é um vetor bi dimensional, e eu nao achei qual arquivo define esta variavel/ array, alguem achou?


<div id="menu">
<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 if ($category['children'][$i]['children']) { ?>
<div>
<?php for ($k = 0; $k < count($category['children'][$i]['children']);) { ?>
<ul>
<?php $l = $k + ceil(count($category['children'][$i]['children']) / $category['children'][$i]['column']); ?>
<?php for (; $k < $l; $k++) { ?>
<?php if (isset($category['children'][$i]['children'][$k])) { ?>
<li><a href="<?php echo $category['children'][$i]['children'][$k]['href']; ?>"><?php echo $category['children'][$i]['children'][$k]['name']; ?></a></li>
<?php } ?>
<?php } ?>
</ul>
<?php } ?>
</div>
<?php } ?>



<?php } ?>
<?php } ?>
</ul>
<?php } ?>
</div>
<?php } ?>
</li>
<?php } ?>

</ul>
</div>

Re: Duvida no Menu Departamentos

Enviado: 23 Nov 2012, 09:21
por lucianopoa
Observei que no Banco de Dados, na tabela category, existem os campos category_id e parent_id , que servem para relacionar uma categoria filho para o pai. Entretanto, não vi em nenhum dos arquivos, até agora, qualquer menção ao campo parent_id.

Observei que no Mapa da Loja (sitemap) é a única parte do Opencart onde as categorias são exibidas em todos os níveis (pelo menos até o 3º). Lá (no arquivo catalog/controller/information/sitemap.php ) consta o seguite trecho de código que pretendo analisar para servir como base para as alterações:

$this->load->model('catalog/category');
$this->load->model('catalog/product');

$this->data['categories'] = array();

$categories_1 = $this->model_catalog_category->getCategories(0);

foreach ($categories_1 as $category_1) {
$level_2_data = array();

$categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);

foreach ($categories_2 as $category_2) {
$level_3_data = array();

$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);

foreach ($categories_3 as $category_3) {
$level_3_data[] = array(
'name' => $category_3['name'],
'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id'])
);
}

$level_2_data[] = array(
'name' => $category_2['name'],
'children' => $level_3_data,
'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'])
);
}

$this->data['categories'][] = array(
'name' => $category_1['name'],
'children' => $level_2_data,
'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'])
);
}

_____________________________________________

Editado:

localizei no arquivo catalog/model/catalog/category.php a função que chama a tabela category:

<?php
class ModelCatalogCategory extends Model {
public function getCategory($category_id) {
$query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");

return $query->row;
}

public function getCategories($parent_id = 0) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)");

return $query->rows;
}

public function getCategoriesByParentId($category_id) {
$category_data = array();

$category_query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "category WHERE parent_id = '" . (int)$category_id . "'");

foreach ($category_query->rows as $category) {
$category_data[] = $category['category_id'];

$children = $this->getCategoriesByParentId($category['category_id']);

if ($children) {
$category_data = array_merge($children, $category_data);
}
}

return $category_data;
}

public function getCategoryLayoutId($category_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_to_layout WHERE category_id = '" . (int)$category_id . "' AND store_id = '" . (int)$this->config->get('config_store_id') . "'");

if ($query->num_rows) {
return $query->row['layout_id'];
} else {
return $this->config->get('config_layout_category');
}
}

public function getTotalCategoriesByCategoryId($parent_id = 0) {
$query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'");

return $query->row['total'];
}
}
?>

Re: Duvida no Menu Departamentos

Enviado: 23 Nov 2012, 17:05
por rodrigoem
Pessoal..

Eu achei na net um script que requer vQmod que atende parcialmente o que queremos..

Instalei o vQmod e o script e parece que funciona. Mas somente mais 1 nivel. Para mais niveis, precisa comprar..

URL de acesso:
http://www.opencart.com/index.php?route ... _license=0

Demo no meu site
Http://www.seekstore.com.br