Recherche menu dynamique pour Oscss

Messagepar Nelson08 » Mer 14 Jan 2009, 12:44

Bonjour, depuis quelques jours, je recherche une contrib qui me permettrait de faire une menu dynamique à l'image de celui de http://www.pixmania.com/ . Vous auriez une idée de la contrib qu'ils ont utilisé?
Merci
Nelson08
Membre inactif
 
Messages: 2
Inscription: Mer 14 Jan 2009, 12:37

Messagepar j4k » Mer 14 Jan 2009, 13:48

Ton titre est mal choisi, tu n'a aucun problème !

ce serait mieux : "recherche menu dynamique pour oscss"

Je ne connais pas de contrib prête à l'emploi pour ce genre de menu, mais ce ne doit pas être très difficile d'adapter un menu dynamique (de type jquery) à partir du menu fourni dans les templates par défaut, regarde du coté du template generic.
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Nelson08 » Jeu 15 Jan 2009, 15:09

Oui, en effet j'essaye d'éditer le titre mais j'y arrive pas. Je laisse le soin à un modérateur de bien vouloir le modifier.

En ce qui concerne le menu, j'ai retrouvé exactement la même contrib sur un autre site ( http://www.leguidesante.co.uk/ ). Existerait-il un autre site proposant des contribs Oscss ?

Merci encore de votre temps
Nelson08
Membre inactif
 
Messages: 2
Inscription: Mer 14 Jan 2009, 12:37

Messagepar j4k » Jeu 15 Jan 2009, 15:48

bientot ;)
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Hesius » Dim 26 Juil 2009, 13:58

Salut Neslon
Comme précise J4K il suffit d'utiliser ce qui existe déjà. Exemple, tu ajoutes une nouvelle boxe que tu appelles comme tu veux (menu_cat.php) puis tu réalises le Css que tu places dans ta feuille de style générale et enfin tu appelles le tout sur ton template.php..

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

osCommerce, Open Source E-Commerce Solutions
http://www.oscss.org

Copyright (c) 2003 osCommerce

Released under the GNU General Public License
*/

function tep_build_tree($entry, $last_member = false, $level = 0, $path = '') {
global $tree, $categories_string;

$prefix = '';
for ($i = 0; $i <= $level; $i++) {
$prefix .= ' ';
}

if (SHOW_COUNTS == 'true') {
$products_in_category = tep_count_products_in_category($entry);
if ($products_in_category > 0) {
$pinc = '&nbsp;(' . $products_in_category . ')';
} else {
$pinc = '';
}
}

if ($path == '') {
$new_path = $entry;
} else {
$new_path = $path . '_' . $entry;
}

$categories_string .= $prefix . '<li class="sousmenu"><a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $new_path) . '">'. addslashes($tree[$entry]['name']) . $pinc .'</a>';

$array_size = sizeof($tree[$entry]['children']);
if ($array_size > 0) {
$categories_string .= "n" . '<ul class="niveau2">' . "n";
$children = $tree[$entry]['children'];
reset($children);
end($children);
$end_key = key($children);
reset($children);
while (list($key, $new_entry) = each($children)) {
$new_last_member = ($key == $end_key) ? true : false;
tep_build_tree($new_entry, $new_last_member, $level + 1, $new_path);
}
$categories_string .= $prefix;
$categories_string .= ($last_member == true) ? '</li>'. "n" . '</ul>' : '</li>';
$categories_string .= "n";
} else {
$categories_string .= ($last_member == true) ? '</li>'. "n" . '</ul>' : '</li>';
$categories_string .= "n";
}
}


$tree = array();
$categories_string = '';
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id, c.sort_order from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = cd.categories_id and cd.language_id='" . $languages_id ."' ");
$last_root = 0;
$first_root = 0;
while ($categories = tep_db_fetch_array($categories_query)) {
$current_id = $categories['categories_id'];
$parent_id = $categories['parent_id'];

if (!isset($tree[$current_id])) {
$tree[$current_id] = array();
$tree[$current_id]['children'] = array();
$tree[$current_id]['next'] = 0;
}

$tree[$current_id]['name'] = $categories['categories_name'];
$tree[$current_id]['parent'] = $parent_id;
$tree[$current_id]['order'] = $categories['sort_order'];

if ($parent_id != 0) {
if (!isset($tree[$parent_id])) {
$tree[$parent_id] = array();
$tree[$parent_id]['children'] = array();
}

$tree[$parent_id]['children'][] = $current_id;
} else {
if ($last_root == 0) {
$last_root = $current_id;
$first_root = $current_id;
} else {
$tree[$last_root]['next'] = $current_id;
$last_root = $current_id;
}
}
}

if ($first_root != 0) {
$categories_string = '' . "n";
$root = $first_root;

do {
$last_member = ($tree[$root]['next'] == 0) ? true : false;
tep_build_tree($root, $last_member);
$root = $tree[$root]['next'];
} while ($root != 0);

$categories_string .= '';
}
?>
<div class="boxes">
<h4 class="<?php echo $language ;?>"><?php echo BOX_HEADING_CATEGORIES ;?></h4>


<ul class="niveau1"> <?php echo $categories_string ; ?>
</div>

?>


exemple pour ton Css:
/*Credits: Menu des catégories */
#menu h4 {
width:165px;
background: transparent url(../images/boxes/box.png) no-repeat;
text-align: left;
text-indent: 5px; font-size: 62.5%;
font: 1.0em Arial,Georgia,Tahoma,sans-serif; color:#fff;
font-weight: bold;
padding:5px
}

div#menu { width: 163px;}
/* fond blanc pour le menu */
div#menu a {color:#000000;font-weight: bold;}
div#menu ul {padding:0px; width: 163px; border:1px solid; margin:0px; background: white}

/* fond different au survol de la souris pour les sous menu et les "basiques"*/
div#menu li:hover {background: #ffff00; font-weight: bold;}
div#menu li.sousmenu:hover {background: #ffff00; font-weight: bold;}

/* Rajout d'une petite fleche pour les sous menu */
div#menu li.sousmenu {background: url(fleche.gif) 95% 50% no-repeat;}

div#menu ul li {position:relative; list-style: none; border-bottom:1px solid;}
div#menu ul ul {position: absolute; top: -1px; left: 164px; display:none}

/* on rajoute une bordure a gauche et des padding, on doit donc réajuster la taille 163-(8 de bordure + 8 de padding) =84 */
div#menu li a {text-decoration: none; padding: 4px 0 4px 8px; display:block; border-left: 8px solid #BBB; width:147px}
div#menu ul.niveau1 li.sousmenu:hover ul.niveau2,
div#menu ul.niveau2 li.sousmenu:hover ul.niveau3 {display:block;}

/* la bordure de chaque hauteur a une couleure de survol*/
div#menu li a:hover {border-left-color: red;}
div#menu ul ul li a:hover {border-left-color: #00FF00;}
div#menu ul ul ul li a:hover {border-left-color: #0000FF;}

exemple pour appeler le tout:
<div id="menu"><?php require_once('cheminXXXX/menu_cat.php); ?> </div>

En clair tu auras un menu comme tu veux très utile pour ceux qui gèrent plusieurs dizaines de catégories et sous cat..

HS
Hesius
Membre inactif
 
Messages: 6
Inscription: Dim 05 Juil 2009, 21:45


Retourner vers Developpement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron