Forum pragmaMx France 25 Mai 2012 à 12:13:12 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.


Connexion avec identifiant et mot de passe
 
Accueil Aide Rechercher
Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Menu personnel et la class "current"  (Lu 1213 fois)
Skud29
Membre Héroïque Mx
*****
Hors ligne Hors ligne

Messages: 732



« le: 09 Novembre 2010 à 22:50:26 »

Bonsoir,

Depuis que je code des thèmes avec pragmaMx et surtout depuis que "j'incorpore" des menus perso, je n'arrive plus à récupérer le "Current" (lien actif) dans le menu.

A partir du moment que j'ajoute le commentaire PHP dans le HTML pour activer cette fonction, mon menu perd son style CSS.

La fonction PHP (si c'est elle) ne trouve plus les différentes classes associées au li du menu lui même. J'avoue que je tourne en rond, j'ai fouillé les fichiers PHP à savoir:

function.php
setting.php

Je sais que le menu se configure via le fichier "setting.php" mais impossible de lui attribuer nos propre classes CSS.

Ma question est la suivante:

Comment se fait-il qu'au moment de l'ajout du commentaire PHP (<!-- START headmenue -->), ce dernier ne trouve plus certains style CSS associé au menu ?

Merci Clin d'oeil
« Dernière édition: 09 Novembre 2010 à 22:54:59 par Skud29 » Journalisée

..:: TemplatesMx (Portages et créations) ::.. www.templatesmx.niloo.fr
Diabolo
Administrateur
Ultra membre Mx
******
Hors ligne Hors ligne

Messages: 5480



« Répondre #1 le: 09 Novembre 2010 à 23:32:12 »

Slt,
En fait <!-- START headmenue --> va chercher une fonction qui écrase tes liens dans theme.html

Cette fonction se trouve dans function.php

Code:
$part[] = array("{NAVBAR}", theme_get_navbars());

Code:
/* die Navigationsbuttons im header, Quelle in settings.php */
function theme_get_navbars()
{
    global $themesetting;
    foreach ($themesetting['headnav'] as $title => $menue) {
        if (empty($current) && in_array(1, $menue['case'])) {
            $current = ' class="current"';
        } else {
            $current = '';
        }
        $part[] = '<li' . $current . '><a href="' . $menue['link'] . '">' . $title . '</a></li>';
    }
    // mxDebugFuncVars($themesetting, $part);
    return implode("\n", $part);
}

Si tu regarde le code il va chercher les liens définis dans setting.php et les affiche en boucle dans un <li>

Le current est là qui s'affiche pour la page en cours.

Ou va til chercher le NAVBAR me dira tu, et  bien ici
Code:
   // das Kopfmenue durch die tatsaechlichen Daten ersetzen
    theme_extract_optional_part($template, 'headmenue', '{NAVBAR}');

quand tu regarde cette ligne, le moteur de template va extraire automatiquement ce qu'il y a entre tes commentaires <!-- START headmenue -->........<!-- END headmenue --> et les remplacer par les liens de la fonction theme_get_navbars

La  boucle est bouclée  Sourire
Pour ton problème regarde bien si tout est là.
« Dernière édition: 09 Novembre 2010 à 23:34:25 par Diabolo » Journalisée

..:: Veuillez consulter les règles du forum ::..- Avez-vous consulté notre documentation avant de poser votre question ?-Pas de support en MP ou par courriel, le forum est là pour ça !Nouvelle question=Nouveau Sujet
Skud29
Membre Héroïque Mx
*****
Hors ligne Hors ligne

Messages: 732



« Répondre #2 le: 10 Novembre 2010 à 00:05:19 »

Bonsoir Diabolo,

Je suis justement dessus Clin d'oeil

Merci pour ton explication, je commence à voir plus clair maintenant.
Journalisée

..:: TemplatesMx (Portages et créations) ::.. www.templatesmx.niloo.fr
Zoltatem
Membre Héroïque Mx
*****
Hors ligne Hors ligne

Messages: 651



« Répondre #3 le: 10 Novembre 2010 à 04:54:42 »

Bonjour a vous

J'ai moi aussi une question avec ce menue.

J'aimerais créer une class pour les liens: Home, Services, Information, About, Contact, Administration.
Code:
<a href="./">Home</a>
Remplacer par:
Code:
<a href="./"><div class="cur">Home</div></a>

La class cur correspond a un padding-top: 6px, qui touche seulement le nom du li.
Dans ce li, j'ai une image a droite.

Je cherche une façon d'abaisser le texte sans toucher aux li, je sais que je pourrais simplement désactiver la fonction <!-- START headmenue --> pour que ma class cur puisse fonctionner dans pragmamx, mais le thèmes (menue) ne sera plus multilingues.

@++
Journalisée

Zoltatem
Membre Héroïque Mx
*****
Hors ligne Hors ligne

Messages: 651



« Répondre #4 le: 10 Novembre 2010 à 05:17:17 »

Ça va j'ai trouvé  Sourire
Merci pour ton code Diabolo !
Code:
$part[] = '<li' . $current . '><a href="' . $menue['link'] . '" class="cur">' . $title . '</a></li>';

@+_+
« Dernière édition: 10 Novembre 2010 à 05:25:12 par Zoltatem » Journalisée

Diabolo
Administrateur
Ultra membre Mx
******
Hors ligne Hors ligne

Messages: 5480



« Répondre #5 le: 10 Novembre 2010 à 09:24:44 »

Slt,
Oui vous pouvez modifier le code html à l'inétrieur du li, souvent dans les menus y a un span qui permet de rajouter des regle css, ce qui donnerais par exemple

Code:
<li' . $current . '><a href="' . $menue['link'] . '"><span>' . $title . '</span></a></li>

C'est pareil, si vous voulez vous pouvez aussi changer le nom des commentaires dans theme.html

ex:
Code:
<!-- START menuhaut -->...................<!-- END menuhaut -->

Faut juste penser à modifier ensuite la ligne
Code:
// das Kopfmenue durch die tatsaechlichen Daten ersetzen
    theme_extract_optional_part($template, 'menuhaut', '{NAVBAR}');





@zolatamem pour ton cas j'aurais plutot mis:

Code:
/* die Navigationsbuttons im header, Quelle in settings.php */
function theme_get_navbars()
{
    global $themesetting;
    foreach ($themesetting['headnav'] as $title => $menue) {
        if (empty($current) && in_array(1, $menue['case'])) {
            $current = 'current';
        } else {
            $current = '';
        }
        $part[] = '<li class="' . $current . ' cur"><a href="' . $menue['link'] . '">' . $title . '</a></li>';
    }
    // mxDebugFuncVars($themesetting, $part);
    return implode("\n", $part);
}

« Dernière édition: 10 Novembre 2010 à 09:27:58 par Diabolo » Journalisée

..:: Veuillez consulter les règles du forum ::..- Avez-vous consulté notre documentation avant de poser votre question ?-Pas de support en MP ou par courriel, le forum est là pour ça !Nouvelle question=Nouveau Sujet
Pages: [1]   Haut de page
Imprimer
Forum pragmaMx France  |  Thèmes  |  Thèmes & Design (Modérateurs: Diabolo, kroms, phi56360)  |  Fil de discussion: Menu personnel et la class "current"
 
Aller à:  

Powered by SMF 1.1.15 | SMF © 2006-2009, Simple Machines

Plus