Type de mise en page personnalisé & lien de menu

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • Type de mise en page personnalisé & lien de menu

    Bonjour à tous,

    Je cherche à utiliser un deuxième type de mise en page de type "blog".
    J'ai donc créé dans l'override "html" de mon template les fichiers nécessaires,
    et je retrouve ensuite dans la liste de "types de mise en page" mon nouveau
    type.
    Le problème est que si l'affichage d'une catégorie est géré par un lien de menu,
    il est alors impossible d'utiliser notre nouveau type de mise en page.
    J'y suis tout de même parvenu en modifiant l'url de mon lien de menu dans la
    config (en passant par la base de données car le champ est en lecture seule):
    index.php?option=com_content&view=category&layout= blog&id=11
    index.php?option=com_content&view=category&layout= NOUVEAU_TYPE&id=11

    Ma question est donc, existe t-il un moyen conventionnel de parvenir au même
    résultat ? (sans être obligé de passer par la bdd...)

  • #2
    Re : Type de mise en page personnalisé & lien de menu

    Bon cette solution n'est pas viable, si on modifie l'url du lien de menu via la bdd, joomla ne reconnait plus vraiment le type du lien de menu en question et n'affiche plus ensuite dans la config les options liées à l'affichage du blog. Il repasse par défaut en type de lien de menu -> article
    Une autre solution plus efficace que j'utilise du coup à la place, est de shunter dans le code la gestion de la priorité des types de mise en page.
    Joomla permet d'utiliser des types de mise en page personnalisés (article, category, categories...) uniquement si le lien
    de menu qui appelle celui-ci n'est pas actif (allez savoir pourquoi, il n'y a pas plus illogique (arrêtez moi si je me trompe)).
    Si votre mise en page perso est directement appelée par un élément de menu, c'est la mise en page de l'élément de menu qui est prioritaire (et il n'y a aucun moyen de modifier cela dans la config).
    Ce qui nous donne, dans le fichier view.html.php (dossier component/com_content/views/category) ou ...views/article si le type de mise en page personnalisé concerne les articles.. etc.. :
    Recherche la condition qui ressemble à cela :

    // Check for layout override only if this is not the active menu item
    // If it is the active menu item, then the view and category id will match
    $active = $app->getMenu()->getActive();
    if ((!$active) || ((strpos($active->link, 'view=category') === false) || (strpos($active->link, '&id=' . (string) $category->id) === false))) {
    // Get the layout from the merged category params
    if ($layout = $category->params->get('category_layout')) {
    $this->setLayout($layout);
    }
    }

    Et inverser la condition, ce qui donne ça :
    if (!(!$active) || (...

    Ce n'est certainement pas la solution la plus propre, mais ça marche.
    Si quelqu'un peut me dire comment faire en moins barbare, ou simplement m'expliquer pourquoi cette gestion de la priorité des types de mise en page dans joomla, qui me parait vraiment étrange...

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X