Hellik 0 Опубликовано: 28 августа 2007 Рассказать Опубликовано: 28 августа 2007 Здравствуйте. Подскажите пожалуйста как сделать вывод переходов по статистическим страницам (которые разделены тэгом {PAGEBREAK} ) как в новостях. Т.е. не вида Предыдущая страница | Страница 2 из 10 | Следующая страница А такого Предыдущая страница 1 2 3 ... 8 9 10 Следующая страница Заранее благодарен. Поиск юзал, но к сожалению ничего по этой теме не нашел. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 28 августа 2007 Рассказать Опубликовано: 28 августа 2007 Поиск "поюзали", а теперь и правила почитайте... Цитата Ссылка на сообщение Поделиться на других сайтах
Hellik 0 Опубликовано: 28 августа 2007 Рассказать Опубликовано: 28 августа 2007 Автор Уважаемый lifestar, персонально для вас. На фоне десятка других тем в этом разделе, я думаю я имею право создать свою (ничем по составляющему не отличающуюся от других). С правила ознакомлен, не вижу в чем я нарушил. Для Вас по пунктам правил: 1. в любой версии скрипта так обстоят дела с моей проблемой. 2. вопрос сформировал предельно ясно. 3. урлы сайтов указывать не вижу смысла. Любой DLE сайт. 4. поиск поюзал, решения проблемы не нашел. Если вопрос встал о Null-версиях - то в профиле висит 1 из 4 сайтов на которые есть лицензии. Я считаю, что клиент с купленными лицензиями имеет право задать вопрос пусть и не разработчику, так подобным себе, которые помогут. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 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 0 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 (изменено) Автор Спасибо большое за помощь и понимание Будем пробовать и разбираться. --- Минутами позже: отлично, все получилось! еще раз выражаю благодарность за помощь. Изменено 29 августа 2007 пользователем Hellik Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 А ля ля, ура - я сделал свой первый хак Цитата Ссылка на сообщение Поделиться на других сайтах
Hellik 0 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 Автор Аммм, нашел небольшой недочет. Если страниц очень много страница самого сайт разъезжается. Может попробовать сделать такого плана "Предыдущая страница 1 2 3 ... 8 9 10 Следующая страница"? Если конечно у Вас будет немного свободного времени. Ну а потом уже можно смело патентовать как хак ) Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 (изменено) Да патентовать мне не надо, это я пошутил. А вам советую, причём настоятельно присмотреться к механизму вывода страниц новостей, расположенном в файле <show.short.php> С учётом пройденного урока я думаю у вас всё получится Удачи! Изменено 29 августа 2007 пользователем lifestar Цитата Ссылка на сообщение Поделиться на других сайтах
Hellik 0 Опубликовано: 29 августа 2007 Рассказать Опубликовано: 29 августа 2007 Автор Ок, спасибо - будем смотреть. Если что путного выйдет - результат выложу. DLE все таки штука гибкая, на одних возможностях движка можно что угодно сделать (без модов и прочих сторонних модулей) если креативно помыслить Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.