Eu sei que essa pergunta é um pouco antiga, mas eu estava pensando a mesma coisa e aqui está a solução que eu criei se você alterar o arquivo index.php dos modelos com um pouco de código extra, você poderá criar várias posições do módulo com base no subdomínio e, em seguida, você atribui o item de menu correto ao subdomínio relevante.
$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; ?>
No exemplo acima, a linha que inicia $ sub é o que você precisa personalizar para seu próprio site. Atualmente, o exemplo cria um espaço para um módulo de navegação dependendo do subdomínio - isso foi criado para um site com dois subdomínios e um geral e, portanto, cria três posições de navegação para cada subdomínio - navigationhome navigationplus e navigationgroup.
Algumas coisas a serem observadas com o código -
Para encontrar o subdomínio, usei a função in_array. Eu poderia ter usado uma instrução switch em $ dom [1] para encontrar o subdomínio, mas isso não funcionaria se alguém digitasse algo como www.plus.mysite.co.uk, pois www estaria em $ dom [1] ... por exemplo
switch ( $dom[1] )
{
case 'group' : $sub = 'group' ; break ;
case 'plus' : $sub = 'plus' ; break ;
default : $sub = 'home' ; break ;
}
a explosão inicial usa str_replace para substituir // por. isto é para que o http / https inicial termine em sua própria matriz ($ dom [0] sempre conterá o http / https que, suponho, poderia ser usado ainda mais se você quisesse mostrar sites diferentes, dependendo do protocolo carregado, se isso Se não houvesse lá, alguém colocasse algo como http://plus.mysite.co.uk , a primeira matriz conteria http: // plus e in_array não retornaria nenhuma correspondência.
Lembre-se de que, se o subdomínio for igual ao domínio do site, será necessário garantir que ele seja o último no domínio? : cadeia de instruções caso contrário, ela se atribuirá a outros subdomínios - por exemplo, se você tivesse dois subdomínios, um chamado site.site.co.uk e o outro site1.site.co.uk, a instrução a seguir funcionaria
$sub = ( in_array ( 'site1' ) ? 'site1' : ( in_array ( 'site' ) ? 'site' : 'site' ) ) ;
//it never reaches the in_array ( 'site' ) if sub domain is site1
mas nenhum deles funcionaria corretamente nessa situação ...
$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
É improvável que você os use dessa maneira, mas vale a pena notar.