ЧПУ в постраничной навигации для news
Posted: Wed Jul 22, 2009 6:42 am
Есть готовое решение!
Добавляю грубый (относительно) фикс. Патч для версии новостей 2.9.3 (возможно подойдет для других) в приложении, на ревизии не смотреть - это мои внутренние.
Урлы будут иметь вид news/p_[номер страницы]
Далее по шагам, для тех, кто не понимает патчи
---------------------------------------------
News.module.php, функция SetParameters().
---------------------------------------------
action.default.php, ищем строку: // Assign some pagination variables to smarty
От этой строки и до $smarty->assign('pagenumber',$pagenumber);
Меняем на:
Добавляю грубый (относительно) фикс. Патч для версии новостей 2.9.3 (возможно подойдет для других) в приложении, на ревизии не смотреть - это мои внутренние.
Урлы будут иметь вид news/p_[номер страницы]
Далее по шагам, для тех, кто не понимает патчи

---------------------------------------------
News.module.php, функция SetParameters().
Code: Select all
//После
$this->RegisterRoute('/[nN]ews\/(?P<articleid>[0-9]+)$/');
//Добавляем:
$this->RegisterRoute('/[nN]ews\/p_(?P<pagenumber>[0-9]+)$/', array('action'=>'default', 'returnid' => 51, 'number'=>3, 'summarytemplate'=>'archive', 'detailpage'=>'news', ));
// при этом подставляем свои параметры ('returnid', 'number', 'summarytemplate', 'detailpage'), если нужно
action.default.php, ищем строку: // Assign some pagination variables to smarty
От этой строки и до $smarty->assign('pagenumber',$pagenumber);
Меняем на:
Code: Select all
if( $pagenumber == 1 )
{
$smarty->assign('prevpage',$this->Lang('prevpage'));
$smarty->assign('firstpage',$this->Lang('firstpage'));
}
else
{
$params['pagenumber']=$pagenumber-1;
$pretty = 'news' . ($params['pagenumber'] == 1 ? '' : '/p_' . $params['pagenumber']);
$smarty->assign('prevpage',
$this->CreateFrontendLink($id,$returnid,'default',
$this->Lang('prevpage'),$params,
'', false,true,'',false,$pretty));
$smarty->assign('prevurl',
$this->CreateFrontendLink($id,$returnid,'default','',
$params, '', true,
true,'',false,$pretty));
$params['pagenumber']=1;
$pretty = 'news' . ($params['pagenumber'] == 1 ? '' : '/p_' . $params['pagenumber']);
$smarty->assign('firstpage',
$this->CreateFrontendLink($id,$returnid,'default',
$this->Lang('firstpage'),$params,
'', false,true,'',false,$pretty));
$smarty->assign('firsturl',
$this->CreateFrontendLink($id,$returnid,'default','',
$params, '', true,
true,'',false,$pretty));
}
if( $pagenumber >= $pagecount )
{
$smarty->assign('nextpage',$this->Lang('nextpage'));
$smarty->assign('lastpage',$this->Lang('lastpage'));
}
else
{
$params['pagenumber']=$pagenumber+1;
$pretty = 'news/p_' . $params['pagenumber'];
$smarty->assign('nextpage',
$this->CreateFrontendLink($id,$returnid,'default',
$this->Lang('nextpage'),
$params,
'', false,true,'',false,$pretty));
$smarty->assign('nexturl',
$this->CreateFrontendLink($id,$returnid,'default','',
$params, '', true,
true,'',false,$pretty));
$params['pagenumber']=$pagecount;
$pretty = 'news/p_' . $params['pagenumber'];
$smarty->assign('lastpage',
$this->CreateFrontendLink($id,$returnid,'default',
$this->Lang('lastpage'),
$params,
'', false,true,'',false,$pretty));
$smarty->assign('lasturl',
$this->CreateFrontendLink($id,$returnid,'default','',
$params, '', true,
true,'',false,$pretty));
}