it-swarm-id.com

Bagaimana saya bisa membuat item menu pada subdomain yang berbeda?

Saya ingin membuat struktur menu seperti ini di Joomla 2.5:

  • Rooting (www.example.com)
    • Tentang (www.example.com/about)
    • Situs a (a.example.com)
    • Situs b (b.example.com)

Apakah mungkin untuk membuat item menu dengan subdomain yang berbeda dan bagaimana cara membuatnya? Saya bekerja dengan CMS "typo3" sebelumnya dan tidak ada masalah dalam melakukan ini, tetapi pencarian panjang melalui internet tidak membantu saya dengan masalah ini.

EDIT: Perhatikan bahwa a.example.com dan b.example.com berada di instalasi Joomla yang sama, jadi saya ingin membuat "Artikel Tunggal" baru dengan subdomain.

8
Marc T.

Saya belum mencobanya, tetapi Artio JoomSef mengklaim untuk menyediakan fungsionalitas tersebut.
Anda dapat menentukan bagian situs web Anda yang akan digunakan untuk berbagai subdomain. Mungkin layak untuk memeriksanya.

Dokumentasi Artio JoomSEF

JoomSEF - Subdomains configuration

Jika Anda mencari konfigurasi yang lebih kompleks, ekstensi Joomla MultiSites memungkinkan Anda menjalankan banyak situs joomla, dari satu instalasi, dengan berbagai konfigurasi. Tautan ke bagian JED ini diberikan dalam jawaban lain di sini.

4
FFrewin

Untuk item menu yang perlu Anda tautkan ke sub domain Anda, buka:

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

Kemudian di bidang Link Anda dapat mengetik URL dari sub domain Anda.

2
web-tiki

Anda tidak dapat benar-benar melakukan ini dengan Joomla asli, tetapi Anda dapat menggunakan ekstensi yang mencoba membantu Anda melakukan ini.

Anda dapat menemukannya di JED

1
Harald Leithner

Jika Anda tidak ingin menggunakan komponen eksternal untuk ini, maka Anda dapat membuat URL eksternal di menu Anda menunjuk ke a.example.com Dan menggunakan file .htaccess Anda untuk mendapatkan konten dari tautan situs Anda yang ada .

Sebagai contoh

<IfModule mod_rewrite.c>
    RewriteEngine on

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

Misalkan, jika pengguna Anda mengunjungi URL ini a.example.com/user/sd, Maka kontennya akan menjadi example.com/user/sd Tanpa mengubah URL aktual di browser.

Ikuti metode ini hanya jika Anda terbiasa dengan penggunaan file .htaccess Dan ok dengan pengeditan manual. Ini berguna jika Anda tidak ingin menggunakan seluruh ekstensi baru hanya untuk beberapa url.

1
SD.

Saya tahu ini agak lama pertanyaan ini, tetapi saya bertanya-tanya hal yang sama dan di sini adalah solusi yang saya buat jika Anda mengubah file templat index.php dengan sedikit kode tambahan Anda dapat membuat beberapa posisi modul berdasarkan subdomain , dan kemudian Anda menetapkan item menu yang benar ke subdomain yang relevan.

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

Dalam contoh di atas, baris awal $ sub adalah apa yang perlu Anda sesuaikan untuk situs web Anda sendiri, saat ini contoh membuat ruang untuk modul navigasi tergantung pada subdomain - ini dibuat untuk situs dengan dua sub domain dan domain umum sehingga menciptakan tiga posisi navigasi untuk setiap subdomain - navigationhome navigationplus dan navigationgroup.

Beberapa hal yang perlu diperhatikan dengan kode -

untuk menemukan subdomain saya telah menggunakan fungsi in_array. Saya bisa menggunakan pernyataan switch pada $ dom [1] untuk menemukan subdomain tetapi ini tidak akan berhasil jika seseorang mengetikkan sesuatu seperti www.plus.mysite.co.uk karena www akan berada di $ dom [1] ... misalnya.

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

ledakan awal menggunakan str_replace untuk menggantikan // dengan. ini agar http/https awal berakhir di array itu sendiri ($ dom [0] akan selalu berisi http/https yang saya kira bisa digunakan lebih lanjut jika Anda ingin menampilkan situs yang berbeda tergantung pada protokol yang dimuat, jika itu tidak ada maka seseorang memasukkan sesuatu seperti http://plus.mysite.co.uk maka array pertama akan berisi http: // plus dan in_array akan kembali tanpa kecocokan.

Ingatlah bahwa jika sub-domain sama dengan domain situs maka Anda harus memastikan itu adalah yang terakhir di? : rantai pernyataan jika tidak, ia akan menugaskan dirinya sendiri ke subdomain lain - mis. jika Anda memiliki dua sub domain, satu bernama site.site.co.uk dan lainnya site1.site.co.uk, pernyataan berikut akan berfungsi

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

tapi tak satu pun dari ini akan berfungsi dengan baik dalam situasi itu ...

    $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

Tidak mungkin Anda akan menggunakan ini dengan cara ini tetapi perlu dicatat.

0
TheKLF99