嗨提前網址海基會有我GOOGLE了房子,但沒有解決......爲Joomla自定義組件
我制定了joomla3
與海基會組件的addreess Joomla的一個組成部分是這樣的:
orginal address: domain.com/index.php?option=com_bahaedini&keyword=22&year=2005&month=1&day=4
與菜單:domain.com/menu_name/view_name/keyword/2005/1/4
無菜單:domain.com/component/bahaedini/view_name/keyword/2005/1/4
我的最喜歡的域名是:domain.com/keyword/2005/1/4
但至少該如何刪除URL中的「view_name」或「component/bahaedini」?
我可以hatccess刪除它,但我不能發送parametrs到組件......
我想至少有以下格式:
domain.com/keyword/2005/1/4
domain.com/menu_name/keyword/2005/1/4
或
domain.com/view_name/keyword/2005/1/4
domain.com/bahaedini/keyword/2005/1/4
<?php
defined('_JEXEC') or die ;
//http://127.0.0.1/archives?option=com_bahaedini&view=items&date=2014-12-9
function BahaediniBuildRoute(&$query)
{
$segments = array();
if(isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if(isset($query['keyword']))
{
$segments[] = $query['keyword'];
unset($query['keyword']);
}
if(isset($query['year']))
{
$segments[] = $query['year'];
unset($query['year']);
}
if(isset($query['month']))
{
$segments[] = $query['month'];
unset($query['month']);
}
if(isset($query['day']))
{
$segments[] = $query['day'];
unset($query['day']);
}
return $segments;
}
//http://127.0.0.1/archives?option=com_bahaedini&view=items&date=2014-12-9
function BahaediniParseRoute($segments)
{
$vars = array();
switch($segments[0])
{
case 'items':
$vars['view'] = 'items';
if(isset($segments[2]))
{
$year = explode(':', $segments[2]);
$vars['year'] = (int)$year[0];
}
if(isset($segments[3]))
{
$month = explode(':', $segments[3]);
$vars['month'] = (int)$month[0];
}
if(isset($segments[4]))
{
$day = explode(':', $segments[4]);
$vars['day'] = (int)$day[0];
}
if(isset($segments[1]))
{
$search = explode(':', $segments[1]);
$vars['keyword'] = (int)$search[0];
}
break;
}
return $vars;
}?>
您必須擁有組件,因爲您無法控制是否將關鍵字或bahaedini用作菜單別名或其他組件的別名,因此組件是一個保留字,可防止兩個頁面具有相同url的可能性通過製作組件/ bahaedini。你應該做的就是做一個菜單項,並且爲你的組件編寫一個自定義路由器,所以你沒有視圖名稱。 – Elin
感謝您的回答。可以給我更多的信息?...我編輯我的問題與router.php代碼...如何改變它隱藏視圖名稱? – user3307827