Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Invente

[Resolvido] Menu Oscommerce - parecido com o da americanas

Recommended Posts

Menu Oscommerce - Parecido com o da Americanas

 

Como fazer um menu oscommerce que tipo aparecem as categorias e as subcategorias de uma só vez, sem precisar clicar para ver as sub-categorias, como na americanas;

 

Pois tenho um menu aqui que mostra as categorias, e ao clicar mostra as subcategorias:

 

Vocês sabem o que tenho que mudar abaixo para exibir todos de uma vez....?

 

 

<?php
/*
  $Id: categories.php,v 1.25 2003/07/09 01:13:58 hpdl Exp $

  E-Commerce Solutions

  Copyright (c) 2005 www.flash-template-design.com

  Released under the GNU General Public License
*/

  function tep_show_category($counter) {
	global $tree, $categories_string, $cPath_array, $cat_str;
	$cat_str = "";

   for ($i=0; $i<$tree[$counter]['level']; $i++) {
	   $cat_string = "    ";
	 }
 if ($tree[$counter]['parent']==0) {
	$categories_string .= '<table border="0" cellpadding="0" cellspacing="0" height="24" style="background:url(images/categories_main_bg.gif) repeat-x;"><tr><TD width="200" valign="top" height="19" align="left"  style="padding-left:10px; padding-top:5px;"><a class="h11" href="';
	}
	else
	$categories_string .= '<table border="0" cellpadding="0" cellspacing="0"><tr><TD width="200" valign="middle" height="17" align="left" style="padding-left:10px;">'.$cat_string.'<img src="images/categories_marker.gif" width="3" height="6" alt="" border="0" />  <a class="m11" href="';

	if ($tree[$counter]['parent'] == 0) {
	  $cPath_new = 'cPath=' . $counter;
	} else {
	  $cPath_new = 'cPath=' . $tree[$counter]['path'];
	}

	$categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">';

	if (isset($cPath_array) && in_array($counter, $cPath_array)) {
	  $categories_string .= '<b>';
	}

// display category name
	$categories_string .= $tree[$counter]['name'];

	if (isset($cPath_array) && in_array($counter, $cPath_array)) {
	  $categories_string .= '</b>';
	}

   // if (tep_has_category_subcategories($counter)) {
   //   $categories_string .= '->';
   // }

	$categories_string .= '</a>';

	if (SHOW_COUNTS == 'true') {
	  $products_in_category = tep_count_products_in_category($counter);
	  if ($products_in_category > 0) {
		$categories_string .= ' <span style="color:#6d7066;FONT-SIZE: 11px;">(' . $products_in_category . ')</span>';
	  }
	}

	$categories_string .= '</td></tr></table>';
	

	if ($tree[$counter]['next_id'] != false) {
	  tep_show_category($tree[$counter]['next_id']);
	}
  }
?>
<!-- categories <div style="padding-top:1px; "></div>  //-->
	<tr>
				<td valign="top">			
<?php
  $info_box_contents = array();
   $info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES);
?>
  <?php new infoBoxHeading($info_box_contents, true, true);?>
	
	
<table border="0" cellpadding="0" cellspacing="0" height="125%"  width="100%" style="border:1px solid #ffffff; margin-top:1px; background-color:#ffffff; ">
	<tr>
	<td>
						<?php
  





  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
  while ($categories = tep_db_fetch_array($categories_query))  {
	$tree[$categories['categories_id']] = array('name' => $categories['categories_name'],
												'parent' => $categories['parent_id'],
												'level' => 0,
												'path' => $categories['categories_id'],
												'next_id' => false);

	if (isset($parent_id)) {
	  $tree[$parent_id]['next_id'] = $categories['categories_id'];
	}

	$parent_id = $categories['categories_id'];

	if (!isset($first_element)) {
	  $first_element = $categories['categories_id'];
	}
  }

  //------------------------
  if (tep_not_null($cPath)) {
	$new_path = '';
	reset($cPath_array);
	while (list($key, $value) = each($cPath_array)) {
	  unset($parent_id);
	  unset($first_id);
	  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
	  if (tep_db_num_rows($categories_query)) {
		$new_path .= $value;
		while ($row = tep_db_fetch_array($categories_query)) {
		  $tree[$row['categories_id']] = array('name' => $row['categories_name'],
											   'parent' => $row['parent_id'],
											   'level' => $key+1,
											   'path' => $new_path . '_' . $row['categories_id'],
											   'next_id' => false);

		  if (isset($parent_id)) {
			$tree[$parent_id]['next_id'] = $row['categories_id'];
		  }

		  $parent_id = $row['categories_id'];

		  if (!isset($first_id)) {
			$first_id = $row['categories_id'];
		  }

		  $last_id = $row['categories_id'];
		}
		$tree[$last_id]['next_id'] = $tree[$value]['next_id'];
		$tree[$value]['next_id'] = $first_id;
		$new_path .= '_';
	  } else {
		break;
	  }
	}
  }
  tep_show_category($first_element); 

  $info_box_contents = array();
  $info_box_contents[] = array('text' => $categories_string);

  new infoBox($info_box_contents);
?>
		</td>
	  </tr>
		</table>	
	</td>
</tr>

<!-- categories_eof //-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Bruno, não entendo de php, então nem olhei seu código.

 

Mas o que você pode fazer é, executar um loop nas suas categorias, coisa que provavelmente já está fazendo, e dentro desse loop, executar um outro loop com suas subcategorias, selecionando-as pela categoria que acabou de "escrever" na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso aqui ;)

 

<?php
/*
  $Id: categories.php,v 1.25 2003/07/09 01:13:58 hpdl Exp $

  E-Commerce Solutions

  Copyright (c) 2005 www.flash-template-design.com

  Released under the GNU General Public License
*/

  function tep_show_category($counter) {
    global $tree, $categories_string, $cPath_array, $cat_str;
	$cat_str = "";

   for ($i=0; $i<$tree[$counter]['level']; $i++) {
	   $cat_string = "    ";
     }
 if ($tree[$counter]['parent']==0) {
    $categories_string .= '<table border="0" cellpadding="0" cellspacing="0" height="24" style="background:url(images/categories_main_bg.gif) repeat-x;"><tr><TD width="200" valign="top" height="19" align="left"  style="padding-left:10px; padding-top:5px;"><a class="h11" href="';
	}
	else
    $categories_string .= '<table border="0" cellpadding="0" cellspacing="0"><tr><TD width="200" valign="middle" height="17" align="left" style="padding-left:10px;">'.$cat_string.'<img src="images/categories_marker.gif" width="3" height="6" alt="" border="0" />  <a class="m11" href="';

    if ($tree[$counter]['parent'] == 0) {
      $cPath_new = 'cPath=' . $counter;
    } else {
      $cPath_new = 'cPath=' . $tree[$counter]['path'];
    }

    $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">';

    if (isset($cPath_array) && in_array($counter, $cPath_array)) {
      $categories_string .= '<b>';
    }

// display category name
    $categories_string .= $tree[$counter]['name'];

    if (isset($cPath_array) && in_array($counter, $cPath_array)) {
      $categories_string .= '</b>';
    }

   // if (tep_has_category_subcategories($counter)) {
   //   $categories_string .= '->';
   // }

    $categories_string .= '</a>';

    if (SHOW_COUNTS == 'true') {
      $products_in_category = tep_count_products_in_category($counter);
      if ($products_in_category > 0) {
        $categories_string .= ' <span style="color:#6d7066;FONT-SIZE: 11px;">(' . $products_in_category . ')</span>';
      }
    }

    $categories_string .= '</td></tr></table>';
	

    if ($tree[$counter]['next_id'] != false) {
      tep_show_category($tree[$counter]['next_id']);
    }
  }
?>
<!-- categories <div style="padding-top:1px; "></div>  //-->
	<tr>
			    <td valign="top">			
<?php
  $info_box_contents = array();
   $info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES);
?>
  <?php new infoBoxHeading($info_box_contents, true, true);?>
	
	
<table bgcolor="#FFFFFF" border="0" cellpadding="0" cellspacing="0" height="100%"  width="100%" style="border:1px solid #a0a596; margin-top:1px; background-color:#ffffff; ">
	<tr>
	<td>
						<?php
						  $categories_string = '';
						  $tree = array();
							$i=0;
							$cPath_array=array();
						  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
						  while ($categories = tep_db_fetch_array($categories_query))  {
						    $tree[$categories['categories_id']] = array('name' => $categories['categories_name'],
						                                                'parent' => $categories['parent_id'],
						                                                'level' => 0,
						                                                'path' => $categories['categories_id'],
						                                                'next_id' => false);
						
						    if (isset($parent_id)) {
						      $tree[$parent_id]['next_id'] = $categories['categories_id'];
						    }
						
						    $parent_id = $categories['categories_id'];
						
						    if (!isset($first_element)) {
						      $first_element = $categories['categories_id'];
						    }
							$cPath_array[$i]=$categories['categories_id'];
							$i++;
						  }
						
						  //------------------------
						 // if (tep_not_null($cPath)) {
						
						    $new_path = '';
						    reset($cPath_array);
						    while (list($key, $value) = each($cPath_array)) {
							
						      unset($parent_id);
						      unset($first_id);
						      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
						      if (tep_db_num_rows($categories_query)) {
						        $new_path .= $value;
						        while ($row = tep_db_fetch_array($categories_query)) {
						          $tree[$row['categories_id']] = array('name' => $row['categories_name'],
						                                               'parent' => $row['parent_id'],
						                                               'level' => $key+1,
						                                               'path' => $new_path . '_' . $row['categories_id'],
						                                               'next_id' => false);
						
						          if (isset($parent_id)) {
						            $tree[$parent_id]['next_id'] = $row['categories_id'];
						          }
						
						          $parent_id = $row['categories_id'];
						
						          if (!isset($first_id)) {
						            $first_id = $row['categories_id'];
						          }
						
						          $last_id = $row['categories_id'];
						        }
						        $tree[$last_id]['next_id'] = $tree[$value]['next_id'];
						        $tree[$value]['next_id'] = $first_id;
						        $new_path .= '_';
						      } //else {
						       // break;
						      //}
						    }
						 // }
						  
						  tep_show_category($first_element); 
						
						  $info_box_contents = array();
						  $info_box_contents[] = array('text' => $categories_string);
						?>
						 
						  <?php
						  new infoBox($info_box_contents);
						?>
						</td>
						</tr>
		</table>	
	</td>
</tr>

<!-- categories_eof //-->

Abraços xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

eai bruno beleza? tem como me dar a dica desse esquema ai, qual arquivo que você ta colocando esse codigo? se tiver como passar para mim dar uma estudada agradeço muito vlwwwwwwwwwwwwwwwwwwwww

Compartilhar este post


Link para o post
Compartilhar em outros sites

eai bruno beleza? tem como me dar a dica desse esquema ai, qual arquivo que você ta colocando esse codigo? se tiver como passar para mim dar uma estudada agradeço muito vlwwwwwwwwwwwwwwwwwwwww

 

 

Boa tarde Zombie;

 

É o seguinte, é só alterar o arquivo geralmente neste endereço -> loja/includes/boxes/categories.php

 

Lembrando que isso é para deixar todas as subcategorias visíveis, além das categorias;

 

É deletar tudo que está lá e colar o seguinte código abaixo:

 

 

<?php
/*
  $Id: categories.php,v 1.25 2003/07/09 01:13:58 hpdl Exp $

  E-Commerce Solutions

  Copyright (c) 2005 www.flash-template-design.com

  Released under the GNU General Public License
*/

  function tep_show_category($counter) {
    global $tree, $categories_string, $cPath_array, $cat_str;
        $cat_str = "";

   for ($i=0; $i<$tree[$counter]['level']; $i++) {
           $cat_string = "    ";
     }
 if ($tree[$counter]['parent']==0) {
    $categories_string .= '<table border="0" cellpadding="0" cellspacing="0" height="24" style="background:url(images/categories_main_bg.gif) repeat-x;"><tr><TD width="200" valign="top" height="19" align="left"  style="padding-left:10px; padding-top:5px;"><a class="h11" href="';
        }
        else
    $categories_string .= '<table border="0" cellpadding="0" cellspacing="0"><tr><TD width="200" valign="middle" height="17" align="left" style="padding-left:10px;">'.$cat_string.'<img src="images/categories_marker.gif" width="3" height="6" alt="" border="0" />  <a class="m11" href="';

    if ($tree[$counter]['parent'] == 0) {
      $cPath_new = 'cPath=' . $counter;
    } else {
      $cPath_new = 'cPath=' . $tree[$counter]['path'];
    }

    $categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">';

    if (isset($cPath_array) && in_array($counter, $cPath_array)) {
      $categories_string .= '<b>';
    }

// display category name
    $categories_string .= $tree[$counter]['name'];

    if (isset($cPath_array) && in_array($counter, $cPath_array)) {
      $categories_string .= '</b>';
    }

   // if (tep_has_category_subcategories($counter)) {
   //   $categories_string .= '->';
   // }

    $categories_string .= '</a>';

    if (SHOW_COUNTS == 'true') {
      $products_in_category = tep_count_products_in_category($counter);
      if ($products_in_category > 0) {
        $categories_string .= ' <span style="color:#6d7066;FONT-SIZE: 11px;">(' . $products_in_category . ')</span>';
      }
    }

    $categories_string .= '</td></tr></table>';
        

    if ($tree[$counter]['next_id'] != false) {
      tep_show_category($tree[$counter]['next_id']);
    }
  }
?>
<!-- categories <div style="padding-top:1px; "></div>  //-->
        <tr>
                            <td valign="top">                   
<?php
  $info_box_contents = array();
   $info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES);
?>
  <?php new infoBoxHeading($info_box_contents, true, true);?>
        
        
<table bgcolor="#FFFFFF" border="0" cellpadding="0" cellspacing="0" height="100%"  width="100%" style="border:1px solid #a0a596; margin-top:1px; background-color:#ffffff; ">
        <tr>
        <td>
                                                <?php
                                                  $categories_string = '';
                                                  $tree = array();
                                                        $i=0;
                                                        $cPath_array=array();
                                                  $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
                                                  while ($categories = tep_db_fetch_array($categories_query))  {
                                                    $tree[$categories['categories_id']] = array('name' => $categories['categories_name'],
                                                                                                'parent' => $categories['parent_id'],
                                                                                                'level' => 0,
                                                                                                'path' => $categories['categories_id'],
                                                                                                'next_id' => false);
                                                
                                                    if (isset($parent_id)) {
                                                      $tree[$parent_id]['next_id'] = $categories['categories_id'];
                                                    }
                                                
                                                    $parent_id = $categories['categories_id'];
                                                
                                                    if (!isset($first_element)) {
                                                      $first_element = $categories['categories_id'];
                                                    }
                                                        $cPath_array[$i]=$categories['categories_id'];
                                                        $i++;
                                                  }
                                                
                                                  //------------------------
                                                 // if (tep_not_null($cPath)) {
                                                
                                                    $new_path = '';
                                                    reset($cPath_array);
                                                    while (list($key, $value) = each($cPath_array)) {
                                                        
                                                      unset($parent_id);
                                                      unset($first_id);
                                                      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
                                                      if (tep_db_num_rows($categories_query)) {
                                                        $new_path .= $value;
                                                        while ($row = tep_db_fetch_array($categories_query)) {
                                                          $tree[$row['categories_id']] = array('name' => $row['categories_name'],
                                                                                               'parent' => $row['parent_id'],
                                                                                               'level' => $key+1,
                                                                                               'path' => $new_path . '_' . $row['categories_id'],
                                                                                               'next_id' => false);
                                                
                                                          if (isset($parent_id)) {
                                                            $tree[$parent_id]['next_id'] = $row['categories_id'];
                                                          }
                                                
                                                          $parent_id = $row['categories_id'];
                                                
                                                          if (!isset($first_id)) {
                                                            $first_id = $row['categories_id'];
                                                          }
                                                
                                                          $last_id = $row['categories_id'];
                                                        }
                                                        $tree[$last_id]['next_id'] = $tree[$value]['next_id'];
                                                        $tree[$value]['next_id'] = $first_id;
                                                        $new_path .= '_';
                                                      } //else {
                                                       // break;
                                                      //}
                                                    }
                                                 // }
                                                  
                                                  tep_show_category($first_element); 
                                                
                                                  $info_box_contents = array();
                                                  $info_box_contents[] = array('text' => $categories_string);
                                                ?>
                                                 
                                                  <?php
                                                  new infoBox($info_box_contents);
                                                ?>
                                                </td>
                                                </tr>
                </table>        
        </td>
</tr>

<!-- categories_eof //-->

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao tive sucesso aqui nao, qdo altero e vou testar, nao aparece nada, fica tudo branco apenas, o que pode ser? qual versao você usa do oscommerce? abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.