URL-адреса нумерации страниц кода начинаются с? Page = 1 и т. Д. - PullRequest
0 голосов
/ 27 ноября 2018

Я создал свой веб-сайт в среде Codeigniter и хочу обновить URL-адрес пагинации для конкретной страницы, а не для всего веб-сайта.Ниже текущих шаблонов URL, которые работают

https://www.example.com/city/2
https://www.example.com/city/hotel-with-air-conditioning.html/2
https://www.example.com/locality/hotels-in-dwarka.html/2
https://www.example.com/locality/5-star-hotel-in-dwarka.html/2
https://www.example.com/city/5-star-hotels-in-newdelhi.html/2
https://www.example.com/locality/hotel-with-air-conditioning-in-dwarka.html/2

Now I want to change them all above to as shown below:

https://www.example.com/city?page=2
https://www.example.com/city/hotel-with-air-conditioning.html?page=2
https://www.example.com/locality/hotels-in-dwarka.html?page=2
https://www.example.com/locality/5-star-hotel-in-dwarka.html?page=2
https://www.example.com/city/5-star-hotels-in-newdelhi.html?page=2
https://www.example.com/locality/hotel-with-air-conditioning-in-dwarka.html?page=2

Я использовал $ config ['page_query_string'] = TRUE;перед инициализацией метода нумерации страниц,

После внесения изменений я получил "& per_page = / 2", но не то, что мне нужно.Также предложите, что я должен передать в $ config ['uri_segment'], так как я не хочу выбирать номер страницы из сегмента, а из параметра запроса? Page = X, где X будет целым числом

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

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

<?php
function paginate($pagecount, $currentpage, $baseurl, $params = array()) {

    //var_dump($params);
    $param_parts = array();
    foreach ($params as $key => $param) {
        $param_parts[] = $key . '=' . $param;
    }
    ?>
    <div class="text-center">
    <?php
    $left_ellipsis = false;
    $right_ellipsis = false;
    for ($i = 1; $i <= $pagecount; $i++) {

        if ( ($i < 4) || ($i > $pagecount - 3) || ($i > $currentpage - 3 && $i < $currentpage + 3) ) {

            if ($i == $currentpage) {
                ?>
                <span class="btn btn-sm disabled"><?php echo $i; ?></span>
                <?php
            } else {
                $urlout = array(
                    'currentpage=' . $i
                );
                $urlout = implode('&',$param_parts);
                if ($urlout != '') {$urlout = '&' . $urlout;}
                ?>
                <a class="btn btn-default btn-sm" href="<?php echo $baseurl; ?>?page=<?php echo $i; ?><?php echo $urlout; ?>"><?php echo $i; ?></a>
                <?php
            }
        } else {
            if ($currentpage > 6 && !$left_ellipsis) {
                $left_ellipsis = true;
                echo '<span class="ellip-block">...</span>';
            }
            if ($currentpage < $pagecount - 5 && $i > $currentpage && !$right_ellipsis) {
                $right_ellipsis = true;
                echo '<span class="ellip-block">...</span>';
            }
        }
        //echo $pagecount; 
    }
    ?></div><?php
}
?>

Я назвал вспомогательный файл paginate_helper.php и, чтобы использовать его, просто добавьте его в любое представление.

Переменная $params просто получает массив параметров, передаваемых через "get".

<?php paginate($page, $cur, $url, array('q' => $q)); ?>

Может быть полезным.Не стесняйтесь обновлять и распространять.

0 голосов
/ 27 ноября 2018

Вы не должны устанавливать uri_segment при использовании page_query_string.

Чтобы получить страницу = 1 вместо per_page, вы должны использовать конфигурацию query_string_segment, например так:

$config['query_string_segment'] = 'page';

Эта дополнительная / на вашем URL, вероятно, потому что у вас установлен базовый URL сЭто.Попробуйте и удалите его.

Также вы можете попробовать заменить каждое вхождение '& page = /' на '? Page ='.

...