web-dev-qa-db-fra.com

Masquer un élément de menu avec PHP dans Sourcer dans Joomla 3.8.1

J'ai un élément de menu et j'ai ajouté une classe CSS personnalisée afin de pouvoir le modifier comme suit:

enter image description here

Dans l'outil de développement F12 de Firefox, lorsque je cherche testphpmenuclass, je le trouve très bien ici:

enter image description here

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.)

enter image description here

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:

enter image description here

Ensuite, je visite mon site Web et le point de menu est toujours là.

enter image description here

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:

enter image description here

Et voici le code:

enter image description here

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.)

2
arsarc

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.

3
johanpw

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.

0
Sharky

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

0
Nick