В общем, еще одна трабла с разбором одного кода. Хочу в него адаптировать номера страниц, но толком не могу понять, что и куда.
Попробую объяснить. И так, есть вот код:
<ul class="paginator">
<li class="larr"><a href="#"><span>Newer posts</span></a></li>
<li><a href="#">1</a></li>
<li class="act"><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li class="rarr"><a href="#"><span>Older posts</span></a></li>
</ul>
Код этот из части, которую адаптирую. Вид самой части можно посмотреть тут _http://mathsoul.info/sakura/index.html в самом низу - номера страниц.
Теперь, код в самом движке имеет вид такого плана: (я в него дописал ul с классами)
public static function Pages($nums,$per_page,$link_arr=array(),$all=false,$page=0,$onclick='',$gap=8)
{global $head_addon;
$Mainclass=Mainclass::getInstance();
$links=is_array($link_arr) ? $Mainclass->Url->ConstructUrl(array_merge($link_arr,array(array('page'=>'{page}')))) : $link_arr;
$links=str_ireplace('%7Bpage%7D','{page}',$links);
$result=array();
$pages=ceil((int)$nums/$per_page);
$gap=ceil($gap/2);
$page=(int)$page;
$reverse=false;
if($page==0)
$page=empty($_GET['page']) ? 1 : (int)$_GET['page'];
elseif($page<0)
{
$page=empty($_GET['page']) ? $pages : (int)$_GET['page'];
$reverse=true;
}
$page=abs($page);
if($pages>1)
{
$result[]='<a href="#" onclick="return JumpToPage(\''.$links.'\',\''.$pages.'\',\''.addslashes($onclick).'\');"><img src="'.$Mainclass->Template->GetImage('gotopage.png').'" alt="'.$Mainclass->lang['main']['goto_page'].'" /></a>';
if(strpos($links,'{page}')!==false)
{
if($reverse)
{
if($page<$pages)
$head_addon.='<link rel="prev" href="'.str_ireplace('{page}',$page+1,$links).'" />';
if($page>1)
$head_addon.='<link rel="next" href="'.str_ireplace('{page}',$page-1,$links).'" />';
}
else
{
if($page>1)
$head_addon.='<link rel="prev" href="'.str_ireplace('{page}',$page-1,$links).'" />';
if($page<$pages)
$head_addon.='<link rel="next" href="'.str_ireplace('{page}',$page+1,$links).'" />';
}
}
$i=$reverse ? $pages : 1;
for(;;)
{
if($i<1 or $i>$pages)
break;
if($i==$page)
/*Тут начало махинаций */
$result[]='<ul class="paginator"><li>'.$i.'</li>';
elseif($all or ($i<=$gap or $i>($pages-$gap) or $i>=($page-$gap) and $i<=($page+$gap)))
{
$event=$onclick ? ' onclick="return '.str_ireplace('{page}',$i,$onclick).'"' : '';
$result[]='<li><a href="'.str_ireplace('{page}',$i,$links).'"'.$event.'>'.$i.'</a></li></ul>';
/*Тут конец махинаций*/
}
else
{
$result[]='<span class="numbersmore">...</span>';
if($i>($page+$gap))
$i=$reverse ? $page+$gap : $pages-$gap+1;
else
$i=$reverse ? $gap : $page-$gap;
continue;
}
if($reverse)
$i--;
else
$i++;
}
return '<div class="numbers"><b>'.$Mainclass->lang['main']['pages'].' </b>'.implode(' ',$result).'</div>';
}
return '';
}
Чтобы упростить поиск, где и что я допилял, я поставил комментарии. В коде все видно.
Теперь, как оно мне это все вывело можно посмотреть на странице _http://eleanor.exclwork.com/news.html в самом низу. Т.е., работает, но на 1/3 часть. При переходе со 2 страницы на 1 все теряется полностью.
Может будут у кого какае идеи по вопросу?
Сообщение отредактировал scanread - 8.7.2011, 16:20