我已经使用 onAfterInitialise() 事件创建了系统插件,如果 URL 是我正在等待的内容,我会获取 URL 字符串并在其中设置会话。之后,我重定向到根页面并获取会话。而且工作正常。但是,如果我有另一个 URL,我会在 onAfterInitialise() 方法中重写会话,但它会提供旧会话,因此我需要刷新才能获取新会话。
我可以自动重写会话吗?这是代码:
function onAfterInitialise()
{
$session = &JFactory::getSession();
$jApp = &JFactory::getApplication();
$url = $_SERVER['REQUEST_URI'];
$url = str_replace('/','',$url);
if($url != "" && $url != NULL )
{
if($url == "something"){
$session->clear('newRequest');
$jApp->redirect('http://'.$_SERVER['HTTP_HOST']);
} else {
$db = &JFactory::getDBO();
$query = ' SELECT *'
.' FROM #__new_requests '
.' WHERE url ="'.$url.'" AND state = 1';
$db->setQuery($query);
$newRequest= $db->loadObjectList();
if($newRequest!= NULL)
{
$session->clear('newRequest');
$newRequestArray = array();
$newRequestArray['color'] = $marque[0]->color;
$newRequestArray['image'] = $marque[0]->image;
$newRequestArray['banner'] = $marque[0]->banner;
$session->set( 'newRequest', $newRequestArray);
$jApp->redirect('http://'.$_SERVER['HTTP_HOST']);
}
}
}
return true;
}
这是模板缓存。我在模板的params.ini中设置了
devmode="1"
。