it-swarm-es.tech

¿Cómo puedo crear un elemento de menú en un subdominio diferente?

Quiero crear una estructura de menú como esta en Joomla 2.5:

  • Raíz (www.example.com)
    • Acerca de (www.example.com/about)
    • Sitio a (a.example.com)
    • Sitio b (b.example.com)

¿Es posible crear elementos de menú con diferentes subdominios y cómo los creo? Trabajé con el CMS "typo3" anteriormente y no hubo ningún problema para hacerlo, pero una larga búsqueda en Internet no me ayudó con este problema.

EDITAR: Tenga en cuenta que a.example.com y b.example.com están en la misma instalación de Joomla, así que me gustaría hacer un nuevo "Artículo único" con un subdominio.

8
Marc T.

No lo he probado, pero Artio JoomSef dice que ofrece esa funcionalidad.
Puede especificar secciones de su sitio web para utilizarlas en diferentes subdominios. Puede valer la pena comprobarlo.

documentación de Artio JoomSEF

JoomSEF - Subdomains configuration

Si está buscando configuraciones más complejas, las extensiones Joomla MultiSites le permiten ejecutar muchos sitios de Joomla, desde una instalación, con varias configuraciones. Un enlace a esta sección JED se proporciona en otra respuesta aquí.

4
FFrewin

Para los elementos del menú que necesita vincular a sus subdominios, vaya a:

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

Luego, en el campo Link puede escribir la URL de sus subdominios.

2
web-tiki

Realmente no puedes hacer esto con Joomla nativo, pero puedes usar una extensión que intente ayudarte a hacerlo.

Puede encontrarlos en JED

1
Harald Leithner

Si no desea utilizar un componente externo para esto, puede crear una URL externa en su menú que apunte a a.example.com y usa tu .htaccess archivo para obtener contenido del enlace existente de su sitio.

Por ejemplo

<IfModule mod_rewrite.c>
    RewriteEngine on

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

Supongamos que si su usuario visita esta URL a.example.com/user/sd, entonces el contenido será de example.com/user/sd sin cambiar la URL real en el navegador.

Siga este método solo si está familiarizado con .htaccess uso de archivos y ok con edición manual. Esto es útil si no desea utilizar una extensión completamente nueva para solo unas pocas URL.

1
SD.

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, por lo que 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 y in_array sería No devuelve ningún partido.

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 instrucciones; de lo contrario, se asignará a otros subdominios, p. 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.

0
TheKLF99