ti-enxame.com

Como posso criar um item de menu em um subdomínio diferente?

Eu quero criar uma estrutura de menus como esta no Joomla 2.5:

  • Raiz (www.example.com)
    • Sobre (www.example.com/about)
    • Site a (a.example.com)
    • Site b (b.example.com)

É possível criar itens de menu com diferentes subdomínios e como criá-los? Eu trabalhei com o CMS "typo3" anteriormente e não havia nenhum problema em fazer isso, mas uma longa pesquisa na Internet não me ajudou com esse problema.

EDIT: Observe que a.example.com e b.example.com estão na mesma instalação do Joomla, então eu gostaria de criar um novo "Artigo Único" com um subdomínio.

8
Marc T.

Não experimentei, mas o Artio JoomSef alega fornecer essa funcionalidade.
Você pode especificar seções do seu site para serem usadas em diferentes subdomínios. Talvez valha a pena conferir.

documentação do Artio JoomSEF

JoomSEF - Subdomains configuration

Se você estiver procurando configurações mais complexas, as extensões do Joomla MultiSites permitem executar muitos sites joomla, a partir de uma instalação, com várias configurações. Um link para esta seção JED é fornecido em outra resposta aqui.

4
FFrewin

Para os itens de menu que você precisa vincular aos seus subdomínios, acesse:

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

Em seguida, no campo Link, você pode digitar o URL dos seus subdomínios.

2
web-tiki

Você realmente não pode fazer isso com o Joomla nativo, mas pode usar uma extensão que tenta ajudá-lo a fazer isso.

Você pode encontrá-los em JED

1
Harald Leithner

Se você não quiser usar um componente externo para isso, poderá criar um URL externo no menu apontando para a.example.com e use seu .htaccess para obter conteúdo do link existente do seu site.

Por exemplo

<IfModule mod_rewrite.c>
    RewriteEngine on

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

Suponha que, se seu usuário visitar este URL a.example.com/user/sd, o conteúdo será de example.com/user/sd sem alterar o URL real no navegador.

Siga esse método apenas se estiver familiarizado com .htaccess uso de arquivo e ok com edição manual. Isso é útil se você não quiser usar uma nova extensão inteira por apenas alguns URLs.

1
SD.

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 de 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 domínio 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 não estava lá, então alguém colocou algo como http://plus.mysite.co.uk então a primeira matriz conteria http: // plus e in_array retornar nenhuma correspondência.

Lembre-se de que, se o subdomínio for o mesmo que o domínio do site, será necessário garantir que ele seja o último no? : cadeia de instruções, caso contrário, ele 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 seguinte declaração 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.

0
TheKLF99