Перейти к публикации

Нумерация статистических страниц


Рекомендованные сообщения

Здравствуйте.

Подскажите пожалуйста как сделать вывод переходов по статистическим страницам (которые разделены тэгом {PAGEBREAK} ) как в новостях.

Т.е. не вида Предыдущая страница | Страница 2 из 10 | Следующая страница

А такого Предыдущая страница 1 2 3 ... 8 9 10 Следующая страница

Заранее благодарен. Поиск юзал, но к сожалению ничего по этой теме не нашел.

Ссылка на сообщение
Поделиться на других сайтах

Уважаемый lifestar, персонально для вас. На фоне десятка других тем в этом разделе, я думаю я имею право создать свою (ничем по составляющему не отличающуюся от других).

С правила ознакомлен, не вижу в чем я нарушил. Для Вас по пунктам правил:

1. в любой версии скрипта так обстоят дела с моей проблемой.

2. вопрос сформировал предельно ясно.

3. урлы сайтов указывать не вижу смысла. Любой DLE сайт.

4. поиск поюзал, решения проблемы не нашел.

Если вопрос встал о Null-версиях - то в профиле висит 1 из 4 сайтов на которые есть лицензии. Я считаю, что клиент с купленными лицензиями имеет право задать вопрос пусть и не разработчику, так подобным себе, которые помогут.

Ссылка на сообщение
Поделиться на других сайтах

Hellik, окей, убедили))

Так вот ответ на ваш вопрос прост...

Вот код, отвечающий за постраничный вывод статической страницы...

	if(!$news_page) $news_page = 1;


	$news_seiten = explode("{PAGEBREAK}", $template);

	$anzahl_seiten = count($news_seiten);


	  if($news_page <= 0 OR $news_page > $anzahl_seiten)

	  {

		$news_page = 1;

	  }


	$template = $news_seiten[$news_page-1];


	$template = preg_replace('#(\A[\s]*<br[^>]*>[\s]*|'									  // remove <br/> at beginning of the string

										 .'<br[^>]*>[\s]*\Z)#is', '', $template);  // remove <br/> at end of string


	$news_seiten = ""; unset ($news_seiten);



	if ($anzahl_seiten > 1) {


	if ($news_page < $anzahl_seiten)

	{

		$pages = $news_page + 1;

		if ($config['allow_alt_url'] == "yes"){

		$nextpage = " | <a href=\"".$config['http_home_url']."page,".$pages.",".$row['name'].".html\">".$lang['news_next']."</a>";

				} else {

		$nextpage = " | <a href=\"$PHP_SELF?do=static&page=".$row['name']."&news_page=".$pages."\">".$lang['news_next']."</a>";

				}

	}


	if ($news_page > 1)

	{

		$pages = $news_page -1;

		if ($config['allow_alt_url'] == "yes"){

		$prevpage = "<a href=\"".$config['http_home_url']."page,".$pages.",".$row['name'].".html\">".$lang['news_prev']."</a> | ";

				} else {

		$prevpage = "<a href=\"$PHP_SELF?do=static&page=".$row['name']."&news_page=".$pages."\">".$lang['news_prev']."</a> | ";

				}

	}


	$tpl->set('{pages}', $prevpage.$lang['news_site']." ".$news_page.$lang['news_iz'].$anzahl_seiten.$nextpage);



	if ($config['allow_alt_url'] == "yes"){

		$replacepage = 	"<a href=\"".$config['http_home_url']."page,"."\\1".",".$row['name'].".html\">\\2</a>";

	} else {

		$replacepage = 	"<a href=\"$PHP_SELF?do=static&page=".$row['name']."&news_page=\\1\">\\2</a>";

	}


		$template  = preg_replace("'\[PAGE=(.*?)\](.*?)\[/PAGE\]'si",$replacepage, $template);


	}

	else {

		$tpl->set('{pages}', '');

		$template  = preg_replace("'\[PAGE=(.*?)\](.*?)\[/PAGE\]'si","",$template);

	}
Делаем примерно так
	if(!$news_page) $news_page = 1;

	$news_seiten = explode("{PAGEBREAK}", $template);

	$anzahl_seiten = count($news_seiten);

	  if($news_page <= 0 OR $news_page > $anzahl_seiten)

	  {

		$news_page = 1;

	  }


	$template = $news_seiten[$news_page-1];


	$template = preg_replace('#(\A[\s]*<br[^>]*>[\s]*|'									  // remove <br/> at beginning of the string

										 .'<br[^>]*>[\s]*\Z)#is', '', $template);  // remove <br/> at end of string

	$news_seiten = ""; unset ($news_seiten);


	if  ($anzahl_seiten > 1)

	{

		for($j=1;$j<=$anzahl_seiten;$j++)

		{

			if($news_page != $j && $j != 1)

				$pages .= '<a href="'.$config['http_home_url'].'page,'.$j.','.$row['name'].'.html">'.$j.'</a>';

			elseif($news_page != $j && $j == 1)

				$pages .= '<a href="'.$config['http_home_url'].$row['name'].'.html">'.$j.'</a>';

			else

				$pages .= '<span>'.$j.'</span>';

		}

		$tpl->set('{pages}', $pages);

		$replacepage = 	"<a href=\"".$config['http_home_url']."page,"."\\1".",".$row['name'].".html\">\\2</a>";

		$template  = preg_replace("'\[PAGE=(.*?)\](.*?)\[/PAGE\]'si",$replacepage, $template);			

	}

	else

	{

		$tpl->set('{pages}', '');

		$template  = preg_replace("'\[PAGE=(.*?)\](.*?)\[/PAGE\]'si","",$template);		

	}

Вроде бы так, но я в этом не уверен, пробуйте.

Этот код должен выводить только нумерацию страниц, без "предыдущая" и "следующая" + работает только при включенном ЧПУ

Ссылка на сообщение
Поделиться на других сайтах

Спасибо большое за помощь и понимание :)

Будем пробовать и разбираться.

---

Минутами позже: отлично, все получилось! еще раз выражаю благодарность за помощь.

Изменено пользователем Hellik
Ссылка на сообщение
Поделиться на других сайтах

Аммм, нашел небольшой недочет. Если страниц очень много страница самого сайт разъезжается. Может попробовать сделать такого плана "Предыдущая страница 1 2 3 ... 8 9 10 Следующая страница"? Если конечно у Вас будет немного свободного времени. Ну а потом уже можно смело патентовать как хак :))

Ссылка на сообщение
Поделиться на других сайтах

Да патентовать мне не надо, это я пошутил.

А вам советую, причём настоятельно присмотреться к механизму вывода страниц новостей, расположенном в файле <show.short.php>

С учётом пройденного урока я думаю у вас всё получится ;)

Удачи!

Изменено пользователем lifestar
Ссылка на сообщение
Поделиться на других сайтах

Ок, спасибо - будем смотреть. Если что путного выйдет - результат выложу.

DLE все таки штука гибкая, на одних возможностях движка можно что угодно сделать (без модов и прочих сторонних модулей) если креативно помыслить :)

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...