https://www.facebook.com/tr?id=1475801249377226&ev=PixelInitialized

Note de l'utilisateur: 0 / 5

Donnez une note !
0 sur 5 - 0 votes
Merci d'avoir noté cet article.

Sur le forum Aide-joomla, l'ami Miqui pose une question qui soulève un problème technique :

Comment empêcher l'affichage d'un header dans un template sur les autres pages que la page d'accueil.

Comme c'est un peu pour Miqui que ce tutoriel va être fait, je vais donc me baser sur le template qu'il veut utiliser sur son site afin de faire l'exemple. le template Phoca_acero

Il existe plusieurs méthodes pour y arriver: certaines simples, d'autres plus compliquées, ou encore des solutions où il faut un peu ruser.

Je n'aborderai pas ici les frameworks et l'utilisation de javascript dans le template, mais il est possible d'y arriver, certains frameworks proposent dans les choix d'afficher le header ou pas sur la page d'accueil.

Non, nous aborderons tout simplement le problème de manière basique : on a un header dans du html, on a un outil dont on connait les bases : Joomla! Comment fait on pour qu'il ne s'affiche pas sous certaines conditions ?

Le plus simple : dupliquer le template !

  • J'ai installé une première fois mon template phoca_acero
  • Par ftp, je duplique mon template et je renomme mon dossier (peu importe si c'est celui d'origine ou pas qui est renommé, il seront égaux au départ), par exemple phoca_acero_accueil
  • Dans le dossier phoca_acero_accueil, j'édite mon fichier templateDetails.xml et je change la ligne 4
    • Phoca_Acero  ---> devient  ---> Phoca_Acero_accueil
      pourquoi ? : comme cela dans mon gestionnaire de template j'aurai les deux noms affichés et je ne les confondrais pas.

  • Je clique maintenant dans le gestionnaire de template sur mon template acero_accueil et je l'assigne à un élément de menu qui correspond à mes pages d'accueil
    • pourquoi ? : ce template sera la référence pour la page d'acceuil (tous les éléments de menus qui ramènent à la page d'accueil) les autres pages auront l'autre template comme gabarit : acero
    • c'est donc le template acero que je vais modifier pour enlever le header
  • Je vais donc éditer le template acero :
    • soit par ftp
    • soit par l'éditeur de Joomla
  • dans le fichier index.php je localise la div phoca-header situé de la ligne 66 à la ligne 89 et
    • soit je la supprime
    • soit je la commente en faisant ligne 66 = que je transforme en c'est le fichier qui génère l'ensemble du template.

Il ne me reste plus qu'à assigner a ma page d'accueil acero_accueil après avoir mis le template Acero comme template par défaut.

Le plus propre : aller dans le code.

Et si on se débrouillait pour conditionner le header à s'afficher selon certaines conditions ?

  • J'ouvre le fichier index.php :
    • par ftp : /templates/phoca_acero/index.php
    • par l'admin du site : éditer le html on arrive dans le même fichier
  • je cherche toujours la div qui contient le header
<!-- |begin| phoca-header -->

<div id="phoca-header">

<div id="logo"><a href="/"><img src="//templates//images/logo.jpg" alt="" /></a></div>

<div >    
<jdoc:include type="modules" name="search"  />
</div>

<div >
<jdoc:include type="modules" name="banner"  />
</div>

<div>
<jdoc:include type="modules" name="user4"   />
</div>
        
  • on voit très bien les conditions d'affichage des divs.
    chaque bloc s'affiche si il y a quelque chose dans les modules, comme par exemple le module search.

    si on lit bien comment cela fonctionne : la div incluse dans le php ne s'affiche que quand il y a quelque chose dans la position 'search'

    donc nous allons faire la même chose, mais pour le header

  • d'où le code :
    <div id="phoca-header">
    
    <div id="logo"><a href="/"><img src="//templates//images/logo.jpg" alt="" /></a></div>
    
    <div >    
    <jdoc:include type="modules" name="search"  />
    </div>
    
    <div >
    <jdoc:include type="modules" name="banner"  />
    </div>
    
    <div>
    <jdoc:include type="modules" name="user4"   />
    </div>
    <?php endif; ?>        
    </div>
    <?php endif; ?>
    <!-- |end| phoca-header -->
    
     
    
  • bon, il ne faut pas oublier de publier le module recherche en position 'search', par défaut il est souvent en user4, ou alors on modifiera notre appel en conséquence.

  • il faut assigner le module de recherche uniquement à la page d'accueil.


Voila, c'est simple ... il suffisait d'y penser