web-gelistirme-sc.com

Farklı bir alt alanda nasıl menü öğesi oluşturabilirim?

Ben Joomla 2.5 böyle bir menü yapısı oluşturmak istiyorum:

  • Kök (www.example.com)
    • Hakkında (www.example.com/about)
    • Site a (a.example.com)
    • Site b (b.example.com)

Farklı alt alan adlarına sahip menü öğeleri oluşturmak mümkün müdür ve bunları nasıl oluştururum? Daha önce CMS "typo3" ile çalıştım ve bunu yaparken hiçbir sorun yoktu, ama internet üzerinden uzun bir arama bu sorun bana yardımcı olmadı.

DÜZENLE:a.example.com ve b.example.com aynı Joomla kurulumunda, bu yüzden bir alt alan adı ile yeni bir "Tek Makale" yapmak istiyorum.

8
Marc T.

Ben denemedim, ama Artio JoomSef böyle bir işlevsellik sağladığını iddia ediyor.
Web sitenizin farklı alt alanlar için kullanılacak bölümlerini belirtebilirsiniz. Kontrol etmeye değer olabilir.

Artio JoomSEF belgeleri

JoomSEF - Subdomains configuration

Daha karmaşık yapılandırmalar arıyorsanız, Joomla MultiSites uzantıları tek bir kurulumdan çeşitli yapılandırmalarla birçok joomla sitesini çalıştırmanıza izin verir. Bu JED bölümüne bir bağlantı burada başka bir cevapta verilmiştir.

4
FFrewin

Alt alan adlarınıza bağlamanız gereken menü öğeleri için şu adrese gidin:

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

Daha sonra Link alanına alt alan adlarınızın URL'sini yazabilirsiniz.

2
web-tiki

Bunu yerel Joomla ile gerçekten yapamazsınız, ancak bunu yapmanıza yardımcı olmaya çalışan bir uzantı kullanabilirsiniz.

Onları JED adresinde bulabilirsiniz.

1
Harald Leithner

Bunun için harici bir bileşen kullanmak istemiyorsanız, menünüzde a.example.com ve .htaccess dosyasını sitenizin mevcut bağlantısından içerik alabilirsiniz.

Örneğin

<IfModule mod_rewrite.c>
    RewriteEngine on

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

Kullanıcınız bu URL'yi ziyaret ederse a.example.com/user/sd, içerik example.com/user/sd tarayıcıdaki gerçek URL'yi değiştirmeden.

Bu yönteme yalnızca .htaccess dosya kullanımı ve manuel düzenleme ile tamam. Bu, yalnızca birkaç URL için yeni uzantıyı kullanmak istemiyorsanız kullanışlıdır.

1
Saurin Dashadia

Bu sorunun biraz eski olduğunu biliyorum ama aynı şeyi merak ediyordum ve burada şablon index.php dosyasını biraz fazladan kodla değiştirirseniz, alt alan adına dayalı birden fazla modül konumu oluşturabileceğiniz çözüm burada ve ardından ilgili alt alana doğru menü öğesini atarsınız.

    $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; ?>

Yukarıdaki örnekte, $ sub ile başlayan satır, kendi web siteniz için özelleştirmeniz gereken şeydir, şu anda örnek, alt alana bağlı olarak bir gezinme modülü için bir alan oluşturur - bu, iki alt etki alanı ve bir genel etki alanı ve böylece her alt alan için üç gezinme konumu oluşturur - navigationhome navigationplus ve navigationgroup.

Kod ile dikkat edilmesi gereken birkaç şey -

in_array işlevini kullandığım alt etki alanını bulmak için. Alt etki alanını bulmak için $ dom [1] üzerinde bir anahtar deyimi kullanmış olabilirim ama biri www $ dom [1] olarak www.plus.mysite.co.uk gibi bir şey yazdıysa bu işe yaramazdı ... Örneğin.

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

ilk patlaması // ile değiştirmek için str_replace kullanır. Bu, ilk http/https kendi dizisinde biter ($ dom [0], yüklenen protokole bağlı olarak farklı siteleri göstermek istiyorsanız daha fazla kullanılabileceğini düşündüğüm http/https'yi her zaman içerecektir. o zaman http://plus.mysite.co.uk gibi bir şey koymuşlarsa ilk dizi http: // plus ve in_array eşleşme yok.

Alt alanın site alan adıyla aynı olması durumunda, alan adındaki son alan olduğundan emin olmanız gerektiğini unutmayın. : deyim zinciri aksi takdirde kendisini diğer alt alanlara atayacaktır - ör. biri site.site.co.uk ve diğer site1.site.co.uk adında iki alt alan adınız varsa, aşağıdaki ifade işe yarayacaktır

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

ancak bunların hiçbiri bu durumda düzgün çalışmaz ...

    $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

Bunları bu şekilde kullanmanız pek olası değildir, ancak kayda değer.

0
TheKLF99