Tôi biết câu hỏi này hơi cũ nhưng tôi đã tự hỏi điều tương tự và đây là giải pháp tôi đã đưa ra nếu bạn thay đổi tệp index.php với một chút mã bổ sung, bạn có thể tạo nhiều vị trí mô-đun dựa trên tên miền phụ và sau đó bạn chỉ định mục menu chính xác cho tên miền phụ có liên quan.
$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; ?>
Trong ví dụ trên, dòng bắt đầu $ sub là những gì bạn cần tùy chỉnh cho trang web của riêng bạn, hiện tại ví dụ này tạo một khoảng trống cho mô-đun điều hướng tùy thuộc vào tên miền phụ - điều này được tạo cho một trang web có hai tên miền phụ và một tên miền chung và do đó, nó tạo ra ba vị trí điều hướng cho mỗi tên miền phụ - navigationhome navigationplus và navigationgroup.
Một vài điều cần lưu ý với mã -
để tìm tên miền phụ tôi đã sử dụng hàm in_array. Tôi có thể đã sử dụng câu lệnh chuyển đổi trên $ dom [1] để tìm tên miền phụ nhưng điều này sẽ không hoạt động nếu ai đó gõ một cái gì đó như www.plus.mysite.co.uk vì www sẽ ở $ dom [1] ... ví dụ
switch ( $dom[1] )
{
case 'group' : $sub = 'group' ; break ;
case 'plus' : $sub = 'plus' ; break ;
default : $sub = 'home' ; break ;
}
Explode ban đầu sử dụng str numplace để thay thế // bằng. điều này là để http / https ban đầu kết thúc trong mảng riêng của nó ($ dom [0] sẽ luôn chứa http / https mà tôi cho rằng có thể được sử dụng thêm nếu bạn muốn hiển thị các trang web khác nhau tùy thuộc vào giao thức được tải, nếu điều đó sau đó không có ai đó đưa vào một cái gì đó như http://plus.mysite.co.uk thì mảng đầu tiên sẽ chứa http: // plus và in_array sẽ không trả lại kết quả.
Hãy nhớ rằng nếu tên miền phụ giống với tên miền trang web thì bạn cần chắc chắn rằng đó là tên miền cuối cùng trong? : chuỗi câu lệnh nếu không nó sẽ tự gán cho các tên miền phụ khác - ví dụ: nếu bạn có hai tên miền phụ được gọi là site.site.co.uk và trang web khác1.site.co.uk thì câu lệnh sau sẽ hoạt động
$sub = ( in_array ( 'site1' ) ? 'site1' : ( in_array ( 'site' ) ? 'site' : 'site' ) ) ;
//it never reaches the in_array ( 'site' ) if sub domain is site1
nhưng cả hai sẽ không hoạt động đúng trong tình huống đó ...
$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
Bạn không thể sử dụng những thứ này theo cách này nhưng đáng chú ý.