пагинация тумб

darkover
Posts: 1570
Joined: Sat Apr 13, 2013 8:59 pm

Re: пагинация тумб

Post by darkover »

Да не вопрос! ) Погнали. Это я вчера с горяча вывалил в сумбурном виде, ибо убил вечер, а что бы заработало как хочется так и не получилось.

Вопрос 1
как сделать пагинацию сайта вида site.com/?page= что бы на site.com - был шаблон index а на site.com/?page= content_list

Вопрос 2
как сделать пагинацию сайта site.com/?page= но избавится от ссылки site.com/?page=1 ( start_page - знаю ) что бы вместо site.com/?page=1 - показывался site.com/

Вопрос 3

Можно ли как-то избавится от лишнего php в шаблоне, что бы сделать красивую пагинацию с активными стилями и prev - next
pagenat.jpg
pagenat.jpg (6.89 KiB) Viewed 246 times
что бы не городить такое :

Code: Select all

 <li class="prev">
    <?php if ('<!--PREV_PAGE-->' == "") : ?>
        <span><i class="la la-chevron-circle-left"></i> Prev</span>
    <?php elseif ('<!--PREV_PAGE-->' == 1) : ?>
        <a href="<?= VLOG_CAT(); ?><?= THEL(); ?>"><i class="la la-chevron-circle-left"></i> Prev</a>
    <?php else : ?>
        <a href="<?= VLOG_CAT(); ?>?page=<!--PREV_PAGE--><?= THEL(); ?>"><i class="la la-chevron-circle-left"></i> Prev</a>
    <?php endif; ?>
</li>
                  <li class="next">
    <?php if ('<!--NEXT_PAGE-->' == "") : ?>
        <span>Next <i class="la la-chevron-circle-right"></i></span>
    <?php else : ?>
        <a href="<?= VLOG_CAT(); ?>?page=<!--NEXT_PAGE--><?= THEL(); ?>"><i class="la la-chevron-circle-right"></i> Next</a>
    <?php endif; ?>
</li>

<li>
    <?php if ('<!--PAGE_NUM-->' == 1) : ?>
        <a class="active" href="<?= VLOG_CAT(); ?><?= THEL(); ?>">1</a>
    <?php elseif ('<!--PAGE_NUM-->' > 1) : ?>
        <a href="<?= VLOG_CAT(); ?><?= THEL(); ?>">1</a>
    <?php endif; ?>
</li>

                            <pagination active_link_style=class="active" start_page=2 skip_href_deletion=true first_pages=2 adjustment=1 last_pages=2 range_separator="<li><span>...</span></li>">
                            <li <!--LINK_STYLE-->> <a href="<?=VLOG_CAT();?>?page=<!--PAGE_NUM--><?=THEL();?>"><!--PAGE_NUM--></a></li>
                            </pagination>
                            
                            
                        </ul>
Вопрос 4
Как сделать именно смартом вывод категории all (All) всех видосов т.е. заменив all на videos, что бы не городить такое
(

Code: Select all

function VLOG_CAT()
{
if ("<!--CATEGORY_NAME-->"=="All" || "<!--CATEGORY_NAME-->"=="all") return '/videos/';
return '/c/<!--CATEGORY_NAME-->/';
}
Вопрос 5

Как в пагинации правильно подставить order= и склеить его с page=

Code: Select all

function THEL()
  {
if ('<!--SORT_ORDER-->' == 'date') return '&order=date';
if ('<!--SORT_ORDER-->' == 'rating') return '&order=rating';
if ('<!--SORT_ORDER-->' == 'duration') return '&order=duration';
return '';
}
Написал вот. Вывожу вот так ( упрощенный код )

<pagination active_link_style=class="active" start_page=2 skip_href_deletion=true first_pages=2 adjustment=1 last_pages=2 >
<a href="<?=VLOG_CAT();?> ?page=<!--PAGE_NUM--><?=THEL();?>"> <!--PAGE_NUM--></a>
</pagination>
VLOG_CAT - отрабатывает отлично
выводится либо
/videos/?page=1 - 1000
/c/green-car/?page=1 - 1000 ( категория )

THEL по дефолту ничего не возвращает, т.к. дефолтная сортировка по CTR

на странице сделана ссылка с сортировками /?order=date (например )
Пагинация получается
/videos/?page=1 - 1000 &order=date
/c/green-car/?page=1 - 1000&order=date

Но затык у меня возник, как на страницах с пагинацией убрать ссылку на /?page=1 и правильный order

вот пример

юзер находится на странице 2 c сортировкой order=date - /c/green-car/?page=2&order=date
как можно сделать. что бы в пагинации не отображалась ссылка на 1-ю страницу, т.е. вместо
/c/green-car/?page=1&order=date отображалось /c/green-car/?order=date
admin
Site Admin
Posts: 37486
Joined: Wed Sep 10, 2008 11:43 am

Re: пагинация тумб

Post by admin »

как обычно пойдем по очереди
или разные темы надо что б не путались вопросы

"Вопрос 1
как сделать пагинацию сайта вида site.com/?page= что бы на site.com - был шаблон index а на site.com/?page= content_list"

простой вариант - в common.php дописать условно

if ($_GET['page'] > 1) $_GET['force_template'] = 'content_list';

суть ясна?
Don't forget to run script update
darkover
Posts: 1570
Joined: Sat Apr 13, 2013 8:59 pm

Re: пагинация тумб

Post by darkover »

admin wrote: Wed Oct 30, 2024 4:55 pm как обычно пойдем по очереди
или разные темы надо что б не путались вопросы

"Вопрос 1
как сделать пагинацию сайта вида site.com/?page= что бы на site.com - был шаблон index а на site.com/?page= content_list"

простой вариант - в common.php дописать условно

if ($_GET['page'] > 1) $_GET['force_template'] = 'content_list';

суть ясна?
Суть ясна, погнали дальше
admin
Site Admin
Posts: 37486
Joined: Wed Sep 10, 2008 11:43 am

Re: пагинация тумб

Post by admin »

"Вопрос 2
как сделать пагинацию сайта site.com/?page= но избавится от ссылки site.com/?page=1 ( start_page - знаю ) что бы вместо site.com/?page=1 - показывался site.com/"

полагаю вопрос о редиректе?

грубо говоря

if ($_GET['page'] == 1) {
header('Location ...');
exit ;
}

тоже думаю суть ясна?
Don't forget to run script update
darkover
Posts: 1570
Joined: Sat Apr 13, 2013 8:59 pm

Re: пагинация тумб

Post by darkover »

admin wrote: Wed Oct 30, 2024 6:07 pm "Вопрос 2
как сделать пагинацию сайта site.com/?page= но избавится от ссылки site.com/?page=1 ( start_page - знаю ) что бы вместо site.com/?page=1 - показывался site.com/"

полагаю вопрос о редиректе?

грубо говоря

if ($_GET['page'] == 1) {
header('Location ...');
exit ;
}

тоже думаю суть ясна?
Нет не о редиректе, нужно избавится в пагинации, что бы ссылка на сайте нигде на page=1 не вылезала
admin
Site Admin
Posts: 37486
Joined: Wed Sep 10, 2008 11:43 am

Re: пагинация тумб

Post by admin »

viewtopic.php?p=203012#p203012


вот был примерю чем плохо?
Don't forget to run script update
darkover
Posts: 1570
Joined: Sat Apr 13, 2013 8:59 pm

Re: пагинация тумб

Post by darkover »

admin wrote: Wed Oct 30, 2024 8:59 pm viewtopic.php?p=203012#p203012


вот был примерю чем плохо?
Да дофига if в странице, это не хорошо, особенно в пагинации. Я вот wp ставлю, и у меня даже в мыслях нет лезть туда и что-то с пагинацией разбираться. Но на безрыбье и рак рыба. Поехали дальше.
admin
Site Admin
Posts: 37486
Joined: Wed Sep 10, 2008 11:43 am

Re: пагинация тумб

Post by admin »

у WP на порядок больше if, там же темпелйты проверяют еще и валидность всех переменных в нем

пришел в голову вариант 2
в пагинации <pagination start_page=2



"Вопрос 3

Можно ли как-то избавится от лишнего php в шаблоне, что бы сделать красивую пагинацию с активными стилями и prev - next "

не понял тут как php влияет на красоту активных стилей?
Don't forget to run script update
darkover
Posts: 1570
Joined: Sat Apr 13, 2013 8:59 pm

Re: пагинация тумб

Post by darkover »

admin wrote: Thu Oct 31, 2024 8:14 am у WP на порядок больше if, там же темпелйты проверяют еще и валидность всех переменных в нем

пришел в голову вариант 2
в пагинации <pagination start_page=2



"Вопрос 3

Можно ли как-то избавится от лишнего php в шаблоне, что бы сделать красивую пагинацию с активными стилями и prev - next "

не понял тут как php влияет на красоту активных стилей?
Вопрос 2 снят.
Вопрос 3 - да тож снят уже. Пришлось вот такое нагородить, что бы корректно была пагинация с подстановкой ордера как надо, убиранием page=1. Что бы получить правильные урлы вроде
/videos/?page=2
/videos/?order=duration&page=22
и тд и тп

Оставлю это тут, может кому пригодится, что бы время не тратить
на content_search своя пагинация немного, т.к. там изначально урл виде /?search=
и что бы грамотно приклеивались &page и &order функцию вызвать надо как
THEL(content_search)

Code: Select all

function THEL($my_fucking_flag = 'default') {
    if ('<!--SORT_ORDER-->' == 'date') {
        return $my_fucking_flag === 'content_search' ? '&order=date' : '?order=date';
    }
    if ('<!--SORT_ORDER-->' == 'rating') {
        return $my_fucking_flag === 'content_search' ? '&order=rating' : '?order=rating';
    }
    if ('<!--SORT_ORDER-->' == 'duration') {
        return $my_fucking_flag === 'content_search' ? '&order=duration' : '?order=duration';
    }
    return ''; // Возвращаем пустую строку для отсутствующего order
}

Ну и сама пагинация на content_list

<?php
// Кнопка "Назад"
if ('<!--PREV_PAGE-->' == "") { ?>
    <li class="prev"><span><i class="la la-chevron-circle-left"></i> Prev</span></li>
<?php } elseif ('<!--PREV_PAGE-->' == 1) { ?>
    <li class="prev"><a href="<?= VLOG_CAT(); ?><?= THEL(); ?>"><i class="la la-chevron-circle-left"></i> Prev</a></li>
<?php } else { ?>
    <li class="prev"><a href="<?= VLOG_CAT(); ?><?= THEL() ? THEL() . '&page=<!--PREV_PAGE-->' : '?page=<!--PREV_PAGE-->'; ?>"><i class="la la-chevron-circle-left"></i> Prev</a></li>
<?php } ?>

<?php
// Кнопка "Вперед"
if ('<!--NEXT_PAGE-->' == "") { ?>
    <li class="next"><span>Next <i class="la la-chevron-circle-right"></i></span></li>
<?php } else { ?>
    <li class="next"><a href="<?= VLOG_CAT(); ?><?= THEL() ? THEL() . '&page=<!--NEXT_PAGE-->' : '?page=<!--NEXT_PAGE-->'; ?>"><i class="la la-chevron-circle-right"></i> Next</a></li>
<?php } ?>

<?php
// Ссылка на первую страницу
if ('<!--PAGE_NUM-->' > 1) { ?>
    <li><a href="<?= VLOG_CAT(); ?><?= THEL(); ?>">1</a></li>
<?php } else { ?>
    <li class="active"><a href="<?= VLOG_CAT(); ?><?= THEL(); ?>">1</a></li>
<?php } ?>

<pagination active_link_style="class=active" start_page=2 skip_href_deletion=true first_pages=2 adjustment=1 last_pages=2 range_separator="<li><span>...</span></li>">
    <li <!--LINK_STYLE-->><a href="<?= VLOG_CAT(); ?><?= THEL() ? THEL() . '&page=<!--PAGE_NUM-->' : '?page=<!--PAGE_NUM-->'; ?>"><!--PAGE_NUM--></a></li>
</pagination>

Вот сколько if ) Раздражает пипец ) Я надеюсь оно хоть кешируется )

погнали дальше
admin
Site Admin
Posts: 37486
Joined: Wed Sep 10, 2008 11:43 am

Re: пагинация тумб

Post by admin »

return $my_fucking_flag === 'content_search' ? '&order=date' : '?order=date';

может проще 1 раз в начале проверить надо "?" или нет а потом уже просто & делать ?


Вопрос 4
Как сделать именно смартом вывод категории all (All) всех видосов т.е. заменив all на videos, что бы не городить такое

как именно выводится категория и где именно в ней надо менять?
Don't forget to run script update
Post Reply