Search code examples
phpexpressionengine

Pagination links return same entries


In order for me to correctly put in pagination, I've had to make two seperate loops, unfortunetly it shows the same two entries over and over, regardless of page. How can I fix this?

    <section id="{embed:chan}" class="product-content">
        <div class="wrap">

            <hgroup>
                <h1>{embed:title}</h1>

                {embed="products/.sub-nav"}

            </hgroup>

            <ul class='list-column-3'>
            {exp:channel:entries channel="{embed:chan}" category="{embed:cat_id}" status="{embed:stat}" limit="{embed:limt}" paginate="bottom"}

                <li>
                    <article>

                        {if no_results}<p>No Products in this Channel, check channel info?</p>{/if}
                        {if product_blurb_image}<img src="{product_blurb_image}" alt="{title}" />{/if}

                        <h1>{title}</h1>
                        <p>{product_blurb}</p>

                    </article>
                    <a class='red-btn' href="{comment_url_title_auto_path}">Learn More</a>
                </li>

                {!-- The below is needed for a true 3 column layout --}
                {switch="||</ul><ul class='list-column-3'>"}

            {/exp:channel:entries}
            </ul>


            <ul class="product-pager">
            {exp:channel:entries channel="{embed:chan}" category="{embed:cat_id}" status="{embed:stat}" limit="{embed:limt}" paginate="bottom"}
                {paginate}
                    {pagination_links}

                        {previous_page}
                            <li><a class="prev ir" href="{pagination_url}">&nbsp;</a></li>
                        {/previous_page}

                        {page}
                            <li><a href="{pagination_url}" class="{if current_page}curr{/if}">{pagination_page_number}</a></li>
                        {/page}

                        {next_page}
                            <li><a class="next ir" href="{pagination_url}">&nbsp;</a></li>
                        {/next_page}

                    {/pagination_links}
                {/paginate}
            {/exp:channel:entries}
            </ul>

            <div class="clear"></div>  

        </div>
    </section><!--/{embed:chan}-->

UPDATE

I have everything but the stupid closing UL tag when there is either one or no pages....

        <section id="{embed:chan}" class="product-content">
            <div class="wrap">

                <hgroup>
                    <h1>{embed:title}</h1>

                    {embed="products/.sub-nav"}

                </hgroup>

                <ul class='list-column-3'>
                {exp:channel:entries channel="{embed:chan}" category="{embed:cat_id}" status="{embed:stat}" limit="{embed:limt}" paginate="bottom"}

                    <li>
                        <article>

                            {!-- I could put the closing </ul> here, but then it'd only show if there was nadda' --}    

                            {if no_results}<p>No Products in this Channel, check channel info?</p>{/if}
                            {if product_blurb_image}<img src="{product_blurb_image}" alt="{title}" />{/if}

                            <h1>{title}</h1>
                            <p>{product_blurb}</p>

                        </article>
                        <a class='red-btn' href="{comment_url_title_auto_path}">Learn More</a>
                    </li>

                    {!-- The below is needed for a true 3 column layout --}
                    {switch="||</ul><ul class='list-column-3'>"}

                    {paginate}

                        {!-- Close last "list-column-3" open "product-pager" --}    
                        </ul><ul class="product-pager">
                        {pagination_links}

                            {previous_page} <li><a class="prev ir" href="{pagination_url}">&nbsp;</a></li> {/previous_page}

                            {page} <li><a href="{pagination_url}" class="{if current_page}curr{/if}">{pagination_page_number}</a></li> {/page}

                            {next_page} <li><a class="next ir" href="{pagination_url}">&nbsp;</a></li> {/next_page}

                        {/pagination_links}
                        </ul>

                        {!-- This should work, but doesn't --}
                        {if "{total_pages}" == 1} </ul> {/if}

                    {/paginate}

                {/exp:channel:entries}

                <div class="clear"></div>  

            </div>
        </section><!--/{embed:chan}-->

Solution

  • This should work for you:

    {exp:channel:entries channel="{embed:chan}" category="{embed:cat_id}" status="{embed:stat}" limit="{embed:limt}" paginate="bottom"}
    {if no_results}<p>No Products in this Channel, check channel info?</p>{/if}
    {switch='<ul class="list-column-3">||'}
        <li>
            <article>
                {if product_blurb_image}<img src="{product_blurb_image}" alt="{title}" />{/if}
                <h1>{title}</h1>
                <p>{product_blurb}</p>
            </article>
            <a class="red-btn" href="{comment_url_title_auto_path}">Learn More</a>
        </li>
    {switch="||</ul>"}
    {paginate}
        <ul class="product-pager">
        {pagination_links}
            {previous_page}<li><a class="prev ir" href="{pagination_url}">&nbsp;</a></li>{/previous_page}
            {page}<li><a href="{pagination_url}" class="{if current_page}curr{/if}">{pagination_page_number}</a></li>{/page}
            {next_page} <li><a class="next ir" href="{pagination_url}">&nbsp;</a></li> {/next_page}
        {/pagination_links}
        </ul>
    {/paginate}
    {/exp:channel:entries}