Постраничность в убывающем порядке

Всем привет.

Кто ни будь задавался вопросом, как реализовать постраничность в убывающем порядке? Чтобы страницы шли не по возрастанию (1, 2, 3, 4,...,500), а по убыванию (500, 499, 498, 497,...,1).

С точки зрения ценности страниц пагинации для поисковых систем, постраничность в убывающем порядке является более удачной, так как в таком случае на страницах будет не меняющийся, статичный контент.

Также интересует, если получится это реализовать, как внедрить новый тип пагинации в отдельный плагин, либо сделать её отдельными плагином, чтобы при помощи него, пагинацию можно было наследовать в других плагинах, не внося изменений в файл движка Viewer.class.php, дабы не усложнять себе жизнь при будущем обновлении.

Вот код из \engine\modules\viewer\Viewer.class.php:
	/**
	 * Формирует постраничный вывод
	 *
	 * @param int $iCount	Общее количество элементов
	 * @param int $iCurrentPage	Текущая страница
	 * @param int $iCountPerPage	Количество элементов на одну страницу
	 * @param int $iCountPageLine	Количество ссылок на другие страницы
	 * @param string $sBaseUrl	Базовый URL, к нему будет добавлять постикс /pageN/  и GET параметры
	 * @param array $aGetParamsList	Список GET параметров, которые необходимо передавать при постраничном переходе
	 * @return array
	 */
	public function MakePaging($iCount,$iCurrentPage,$iCountPerPage,$iCountPageLine,$sBaseUrl,$aGetParamsList=array()) {
		if ($iCount==0) {
			return false;
		}

		$iCountPage=ceil($iCount/$iCountPerPage);
		if (!preg_match("/^[1-9]\d*$/i",$iCurrentPage)) {
			$iCurrentPage=1;
		}
		if ($iCurrentPage>$iCountPage) {
			$iCurrentPage=$iCountPage;
		}

		$aPagesLeft=array();
		$iTemp=$iCurrentPage-$iCountPageLine;
		$iTemp = $iTemp<1 ? 1 : $iTemp;
		for ($i=$iTemp;$i<$iCurrentPage;$i++) {
			$aPagesLeft[]=$i;
		}

		$aPagesRight=array();
		for ($i=$iCurrentPage+1;$i<=$iCurrentPage+$iCountPageLine and $i<=$iCountPage;$i++) {
			$aPagesRight[]=$i;
		}

		$iNextPage = $iCurrentPage<$iCountPage ? $iCurrentPage+1 : false;
		$iPrevPage = $iCurrentPage>1 ? $iCurrentPage-1 : false;

		$sGetParams='';
		if (is_string($aGetParamsList) or count($aGetParamsList)){
			$sGetParams='?'.(is_array($aGetParamsList) ? http_build_query($aGetParamsList,'','&') : $aGetParamsList);
		}
		$aPaging=array(
			'aPagesLeft' => $aPagesLeft,
			'aPagesRight' => $aPagesRight,
			'iCount' => $iCount,
			'iCountPage' => $iCountPage,
			'iCurrentPage' => $iCurrentPage,
			'iNextPage' => $iNextPage,
			'iPrevPage' => $iPrevPage,
			'sBaseUrl' => rtrim($this->Tools_Urlspecialchars($sBaseUrl),'/'),
			'sGetParams' => $sGetParams,
		);
		/**
		 * Избавляемся от дублирования страниц с page=1
		 */
		if ($aPaging['iCurrentPage']==1) {
			$this->SetHtmlCanonical($aPaging['sBaseUrl'].'/'.$aPaging['sGetParams']);
		}
		return $aPaging;
	}

Постраничность и SEO

Частенько со мной бывает такая ситуация: гуглю себе что-нибудь в инете и в выдаче обнаруживаю, что мои ключевые находятся, например на 10 странице блога. Но после индексации в блоге добавилось ещё много топиков и то что я ищу уже не на 10-й, а где-нибудь на 15 странице. Т.е. каждый раз поисковику «приходиться» все переиндексировать (рад ли он будет этому?).

А что если сделать обратный порядок нумерации страниц? Т.е. самые старые топики на 1-й странице, самые свежие на N-ой. Таким образом, каждый определенный топик всегда будет на определенной странице (за исключением удаления топиков, «насильного» переноса на главную...).
Конечно, визуально это будет смотреться не совсем разумно — мы заходим на главную и видим, что находимся на черти какой станице.
В связи с этим предложение — а зачем вообще эти номера страниц, если их содержимое не статично. Может просто разместить кнопки типа «в прошлое»,«в будущее», "+10" и т.п. в сочетании с обратным порядком нумерации страниц?

P.S.: было бы неплохо задавать это в конфигах («обратный порядок нумерации», «использовать вместо номеров страниц переходы...»

Постраничность. Реврайт.

Доброго времени суток.

Сделал реврайт блога в конфиге:
'~^files\/games\/best~i' => "blog/bestfiles/",


Все работает, в блог можно зайти по новому УРЛ, но не работает постраничность. Какое еще правило прописать, чтобы работала постраничность?

Пробовал, что-то вроде
'~^files\/games\/best/^(page(\d+))~i' => "blog/bestfiles/\\1",

Но не работает.

Спасибо.

Не работает постраничность в созданном Эвенте (РЕШЕНО)

Доброго времени суток!
Такая проблема:

Создал плагин для добавления экшена и эвентов. Все нормально отображается и выводится, только в эвентах не работает постраничность. В экшене же все нормально.

апд.
Сорри, уже разобрался. Помог этот топик: livestreet.ru/blog/dev_documentation/181.html

Постраничное разбиение комментариев

В SVN появился функционал постраничного разбиения комментариев к топикам. Данная возможность будет очень полезной для крупных сайтов, где количество комментов к одному топику может спокойно перевалить за 1000.

Для включения постраничности в конфиге появились два параметра:
$config['module']['comment']['use_nested'] = true; 
$config['module']['comment']['nested_per_page'] = 50;
Первый переводит комментарии в режим дерева (nested set), второй задает число корневых элементов на одну страницу. Если значение nested_per_page = 0, то разбивки на страницы не будет, будет просто использоваться nested set для построения дерева.

Для перевода существующих комментариев в режим use_nested = true необходимо запустить конвертацию/восстановление структуры дерева по адресу — /admin/restorecomment/. Если комментариев много, то процесс конвертации может затянуться, поэтому не забудьте на время выставить в php.ini большой лимит выполнения php скриптов. После конвертации появится сообщение — restore ok.

Ссылка на изменения — trac.lsdev.ru/livestreet/changeset?new=1015%40trunk&old=1006%40trunk
Не забудьте выполнить SQL патч — trac.lsdev.ru/livestreet/browser/trunk/install/convert_0.4.2_to_0.4.3.sql