Sé que esta pregunta es un poco antigua, pero me preguntaba lo mismo y esta es la solución que se me ocurrió si cambia el archivo index.php de plantillas con un poco de código adicional, podría crear múltiples posiciones de módulo en función del subdominio , y luego asigna el elemento de menú correcto al subdominio 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; ?>
En el ejemplo anterior, la línea que comienza $ sub es lo que necesitaría personalizar para su propio sitio web, en la actualidad, el ejemplo crea un espacio para un módulo de navegación según el subdominio; esto se creó para un sitio con dos subdominios y un dominio general y, por lo tanto, crea tres posiciones de navegación para cada subdominio: navigationhome navigationplus y navigationgroup.
Algunas cosas a tener en cuenta con el código:
para encontrar el subdominio, he usado la función in_array. Podría haber usado una declaración de cambio en $ dom [1] para encontrar el subdominio, pero esto no funcionaría si alguien escribiera algo como www.plus.mysite.co.uk ya que www estaría en $ dom [1] ... p.ej
switch ( $dom[1] )
{
case 'group' : $sub = 'group' ; break ;
case 'plus' : $sub = 'plus' ; break ;
default : $sub = 'home' ; break ;
}
la explosión inicial usa str_replace para reemplazar // con. esto es para que el http / https inicial termine en su propia matriz ($ dom [0] siempre contendrá el http / https que supongo que podría usarse más si quisiera mostrar diferentes sitios dependiendo del protocolo cargado, si eso no estaba allí, entonces alguien se puso en algo como http://plus.mysite.co.uk, entonces la primera matriz contendría http: // plus e in_array no devolvería ninguna coincidencia.
Tenga en cuenta que si el subdominio es el mismo que el dominio del sitio, entonces deberá asegurarse de que sea el último en el? : cadena de declaración; de lo contrario, se asignará a otros subdominios; por ejemplo, si tuviera dos subdominios, uno llamado site.site.co.uk y el otro site1.site.co.uk, la siguiente declaración funcionaría
$sub = ( in_array ( 'site1' ) ? 'site1' : ( in_array ( 'site' ) ? 'site' : 'site' ) ) ;
//it never reaches the in_array ( 'site' ) if sub domain is site1
pero ninguno de estos funcionaría correctamente en esa situación ...
$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
Es poco probable que los use de esta manera, pero vale la pena señalar.