Comment créer un élément de menu sur un sous-domaine différent?


8

Je veux créer une structure de menu comme celle-ci dans Joomla 2.5:

  • Racine ( www.example.com)
    • À propos ( www.example.com/about)
    • Site a ( a.example.com)
    • Site b ( b.example.com)

Est-il possible de créer des éléments de menu avec différents sous-domaines et comment les créer? J'ai déjà travaillé avec le CMS "typo3" et cela n'a posé aucun problème, mais une longue recherche sur Internet ne m'a pas aidé à résoudre ce problème.

EDIT: Notez que a.example.comet b.example.comsont sur la même installation Joomla, donc je voudrais faire un nouvel "article unique" avec un sous-domaine.


1
Veuillez nous donner plus d'informations sur votre configuration Joomla. Comment servez-vous les sous-domaines d'une installation Joomla?
TryHarder

1
Quel est le contenu du site a et du site b? Ces éléments de menu sont-ils uniquement liés à un article ou sont-ils plus robustes avec leur propre menu et leurs propres pages?
David Fritsch

Je suis désolé de ne pas avoir eu le temps de répondre hier. Je vais servir ces sous-domaines à la même installation Joomla et que joomla ou un composant doit faire la redirection (a.example.com et non www.example.com/a.hmtl)
Marc T.

Réponses:


4

Je ne l'ai pas essayé, mais Artio JoomSef prétend fournir une telle fonctionnalité.
Vous pouvez spécifier des sections de votre site Web à utiliser pour différents sous-domaines. Il pourrait être utile de le vérifier.

Documentation Artio JoomSEF

JoomSEF - Configuration des sous-domaines

Si vous recherchez des configurations plus complexes, les extensions Joomla MultiSites vous permettent d'exécuter de nombreux sites joomla, à partir d'une seule installation, avec différentes configurations. Un lien vers cette section JED est fourni dans une autre réponse ici.


C'est à peu près ce que je voulais. Je connais également le composant Multi Sites, mais je ne veux pas de sites Web multiples.
Marc T.

2

Pour les éléments de menu que vous devez lier à vos sous-domaines, accédez à:

menu-item parameters > menu item type > system links > choose "External URL"

Ensuite, dans le Linkchamp, vous pouvez saisir l'URL de vos sous-domaines.


Désolé, je n'étais pas assez clair. J'ai fait un montage ci-dessus. Ce devrait être la même installation joomla ET le même site.
Marc T.

1

Vous ne pouvez pas vraiment faire cela avec Joomla natif, mais vous pouvez utiliser une extension qui essaie de vous aider à le faire.

Vous pouvez les trouver sur JED


1

Si vous ne souhaitez pas utiliser un composant externe pour cela, vous pouvez créer une URL externe dans votre menu pointant vers a.example.comet utiliser votre .htaccessfichier pour obtenir du contenu à partir du lien existant de votre site.

Par exemple

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^a.example.com
    RewriteRule ^(.*) http://example.com/$1 [P]
</IfModule>

Supposons que si votre utilisateur visite cette URL a.example.com/user/sd, le contenu sera example.com/user/sdsans modification de l'URL réelle sur le navigateur.

N'utilisez cette méthode que si vous connaissez bien l' .htaccessutilisation des fichiers et que vous êtes d' accord avec l'édition manuelle. Ceci est utile si vous ne souhaitez pas utiliser l'intégralité de la nouvelle extension pour quelques URL seulement.


0

Je sais que cette question est un peu ancienne, mais je me demandais la même chose et voici la solution que j'ai trouvée si vous modifiez le fichier templates index.php avec un peu de code supplémentaire, vous pouvez créer plusieurs positions de module en fonction du sous-domaine , puis vous affectez l'élément de menu correct au sous-domaine correspondant.

    $dom = explode ( '.', str_replace ( '//', '.', JURI::base () ) ) ;
    $sub = ( in_array ( 'plus', $dom ) ? 'plus' : ( in_array ('group', $dom) ? 'group' : 'home' ) ) ;
    if ($this->countModules('navigation'.$sub )) : ?>
        <nav class="navigation">
            <jdoc:include type="modules" name="navigation<?php echo $sub ?>" style="html5" />
        </nav>
    <?php  endif; ?>

Dans l'exemple ci-dessus, la ligne commençant par $ sub est ce que vous devez personnaliser pour votre propre site Web.À l'heure actuelle, l'exemple crée un espace pour un module de navigation en fonction du sous-domaine - cela a été créé pour un site avec deux sous-domaines et un domaine général et crée ainsi trois positions de navigation pour chaque sous-domaine - navigationhome navigationplus et navigationgroup.

Quelques points à noter avec le code -

pour trouver le sous-domaine, j'ai utilisé la fonction in_array. J'aurais pu utiliser une instruction switch sur $ dom [1] pour trouver le sous-domaine mais cela ne fonctionnerait pas si quelqu'un tapait quelque chose comme www.plus.mysite.co.uk car www serait dans $ dom [1] ... par exemple

    switch ( $dom[1] )
    {
        case 'group' : $sub = 'group' ; break ;
        case 'plus' : $sub = 'plus' ; break ;
        default : $sub = 'home' ; break ;
    }

l'explosion initiale utilise str_replace pour remplacer // par. c'est pour que le http / https initial finisse dans son propre tableau ($ dom [0] contiendra toujours le http / https qui je suppose pourrait être utilisé plus loin si vous vouliez montrer différents sites en fonction du protocole chargé, si cela n'était pas là alors quelqu'un a mis quelque chose comme http://plus.mysite.co.uk alors le premier tableau contiendrait http: // plus et in_array ne retournerait aucune correspondance.

Gardez à l'esprit que si le sous-domaine est le même que le domaine du site, vous devez vous assurer qu'il est le dernier du? : chaîne d'instructions, sinon elle se attribuera à d'autres sous-domaines - par exemple, si vous aviez deux sous-domaines, l'un appelé site.site.co.uk et l'autre site1.site.co.uk, l'instruction suivante fonctionnerait

    $sub = ( in_array ( 'site1' ) ? 'site1' : ( in_array ( 'site' ) ? 'site' : 'site' ) ) ;
    //it never reaches the in_array ( 'site' ) if sub domain is site1

mais ni l'un ni l'autre ne fonctionnerait correctement dans cette situation ...

    $sub = ( in_array ( 'site' ) ? 'site' : ( in_array ( 'site1' ) ? 'site1' : 'main' ) ) ; 
    // all domains would be referred to as site because XXX.site.co.uk provides a match
    $sub = ( in_array ( 'site1' ) ? 'site1' : ( in_array ( 'site' ) ? 'site' : 'main' ) ) ; 
    // www.site.co.uk would still be site and not main

Il est peu probable que vous les utilisiez de cette manière, mais il convient de le noter.


-1

Oui, vous pouvez créer cette structure de menu dans Joomla. En général, les éléments de menu pointent vers une vue dans un composant spécifiant l'élément et d'autres paramètres.

Lorsque vous installez Joomla avec les données de démonstration d'apprentissage, vous remarquerez deux exemples de sites complètement différents, y compris la démonstration d'apprentissage, vous apprenant tout sur Joomla.


Pouvez-vous expliquer cela? Je n'ai jamais vu un sous-domaine utilisé comme celui-ci avec une configuration stock joomla. Il a toujours fallu un plugin SEF pour remplacer le stock. Deux sites différents, oui, mais pas dans le menu avec des sous-domaines comme URL.
Brian Peat,

Le contenu d'un site joomla n'est pas lié aux (sous) domaines. Vous configurez votre réseau et votre serveur Web pour gérer cela.
sovainfo

D'accord, mais votre réponse ne donne pas vraiment de solution. Je soupçonne que la solution comprend la configuration correcte du DNS, puis l'utilisation du lien du menu externe pour envoyer l'utilisateur au nom du sous-domaine. Sinon, vous vous retrouveriez sur une page régulière dans joomla (si vous vous contentez de créer un lien vers un article). Ce n'est pas du tout une configuration simple.
Brian Peat

Ne pas avoir d'instructions claires. Souvenez-vous d'avoir créé deux magasins en utilisant hikashop de cette façon, il y a des années. Ne me souviens pas des détails. Vous voulez probablement que certaines choses dans .htaccess dirigent vers les URL appropriées. Tout dépend de vos besoins.
sovainfo

Je suggérerais alors de supprimer cette réponse. Cela ne donne vraiment pas beaucoup d'informations à l'OP.
Brian Peat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.