J'ai un élément de menu et j'ai ajouté une classe CSS personnalisée afin de pouvoir le modifier comme suit:
Dans l'outil de développement F12 de Firefox, lorsque je cherche testphpmenuclass, je le trouve très bien ici:
Je crée donc un module personnalisé (sur chaque tutoriel, d'autres personnes utilisent le "module HTML personnalisé", mais je ne trouve pas ce module mystérieux auquel tout le monde a accès, sauf moi.)
Ensuite, j’ajoute du code pour l’ajout de css j’ai trouvé directement auprès de Sourcerer FAQ site Web
{source}<?php
$css = "
.testphpmenuclass {
display: none !important;
}
";
$doc->addStyleDeclaration( $css );
?>{/source}
Ensuite, je sauvegarde le module, et aller à ma page d'index, et ajoute le module comme suit:
Ensuite, je visite mon site Web et le point de menu est toujours là.
Avant de me dire que l'addon ne fonctionne peut-être pas, j'ai testé une fonction printf dans la section php, et la fonction printf fonctionne:
Et voici le code:
En essayant tout cela, quelle autre méthode puis-je faire pour masquer un élément de menu?
Mon espoir est de le faire conditionnellement (si l'utilisateur visite à une certaine heure de la journée, le montre, sinon le cache, etc.)
On dirait que vous avez une faute de frappe dans votre CSS. Votre section de code au début est correcte, mais la capture d'écran à la fin de votre message montre une utilisation incorrecte du !important
règle.
Le point-virgule doit être placé after!important
, pas avant:
display: none!important;
De plus, assurez-vous que la règle CSS est réellement appliquée (utilisez l'inspecteur de code en cliquant avec le bouton droit de la souris sur votre élément de menu et en sélectionnant "Inspecter" ou similaire dans le menu déroulant).
Enfin, si cela ne fonctionne toujours pas, vous pouvez essayer d’utiliser jQuery pour masquer l’élément de menu. Placez le code suivant dans votre <script></script>
Mots clés:
jQuery(document).ready(function($){
$('.testphpmenuclass').hide();
});
Le code ajoutera un style inline <li style="display: none;">
qui devrait remplacer tout autre paramètre CSS.
En supposant que ceci soit votre code complet, $doc
n'est pas défini. Ajoutez ceci avant de l'utiliser:
$doc = JFactory::getDocument();
En outre, c’est une façon très étrange d’ajouter du CSS. Vous pouvez le faire dans le modèle à la place.
Je pense que vous pouvez également masquer un élément de menu en définissant simplement un niveau d'accès pour l'élément de menu. Par exemple, si l'utilisateur est connecté avec des autorisations x, rendez-le visible. Si non, alors cache-toi. Vous pouvez également définir des modules à afficher sur certaines pages. Les deux méthodes doivent fonctionner.
J'espère que cela t'aides