Rss với phân trang

Post Reply
tthlan
Quản trị viên
Posts: 68
Joined: Tue Aug 23, 2016 8:13 am

Rss với phân trang

Post by tthlan » Thu Dec 29, 2016 10:45 am

Xừ lý tạo rss phân trang
Image


B1: đọc lấy đối tượng array XML $rss bằng hàm simplexml_load_file trả về

B2: lấy giá trị tham số page từ URL với $wp_query->query_vars['paged'], xác định trang hiện tại bằng hàm max(1,$page) - Hàm này nếu page tồn tại thì coi như trả về giá trị lớn nhất còn không trả về 1.

B3: Khai báo và thiết lập số tin trên mỗi trang, tính số phân trang dự trên tổng số mẩu tin từ mảng XML $rss->channel->item đọc được

B4: Xử lý tạo đường dẫn $path (dùng khi xuất phân trang)

B5: Xử lý xuất phân trang kèm đường dẫn $path

B6: Xử Lặp từ vị trí từ vị trí mẫu tin của trang hiện tại lấy ra đúng số mẫu tin trên một trang, xuất và đỗ dự liệu từ các giá trị trong xml rss như title, date, creator, link theo template HTML

Code: Select all

<?php
            $rss = simplexml_load_file('http://thuvienphapluat.vn/rss.xml') or die("Lỗi ... Vi lòng quay lại sau !!!");;

            echo '<h2>' . $rss->channel->title . '</h2>';
            if(isset($wp_query->query_vars['paged'])) {
                $page = urldecode($wp_query->query_vars['paged']);
            }

            $item_per_page = 13;
            $current_page = max(1,$page);

            $max_page = ceil(count($rss->channel->item) / $item_per_page);

            $uri = $_SERVER['REQUEST_URI'];
            $uri_array = explode("/",$uri);

            $result = implode('/', $uri_array);
            $path ='';

            if ($current_page==1) {
                $path = join("/", $uri_array) ;
            }
            else
            {
                $uri = rtrim($uri,"/") ;
                array_pop($uri_array);
                array_pop($uri_array);
                $path = join("/", $uri_array) ;
            }

            echo '<div id="content">';

            echo '<div id="pagination">';
            for ($p=1 ; $p<= round($max_page) ; $p++)
            {
                if ($current_page== 1 && $p==1 ){
                    echo '<a href="' . $path . '"><div class="page">' . ($current_page == $p ? '<b>' . $p . '</b>' : $p) . '</div></a>';
                }
                elseif ($current_page== 1 && $p!=1 ) {
                echo '<a href="' . $path . 'page/' . $p . '"><div class="page">' . ($current_page == $p ? '<b>' . $p . '</b>' : $p) . '</div></a>';
                }
                elseif ($current_page!= 1 && $p==1 ) {
                    echo '<a href="' . $path . '/' . $p . '"><div class="page">' . ($current_page == $p ? '<b>' . $p . '</b>' : $p) . '</div></a>';
                }
                elseif ($current_page!= 1 && $p!=1 ) {
                    echo '<a href="' . $path . "/" . $p . '"><div class="page">' . ($current_page == $p ? '<b>' . $p . '</b>' : $p) . '</div></a>';
                }
                elseif ($current_page == $p) {
                    echo '<a href="' . $path . "/" . $p . '"><div class="page"><b>' . ($current_page == $p ? '<b>' . $p . '</b>' : $p) . '</b></div></a>';
                }
            }
            echo '</div>';

            /* Display item rss */
            echo '<div id="news-list">';
            for ($vt=(($current_page-1)*$item_per_page) ; ($vt < $current_page*$item_per_page && $vt < count($rss->channel->item )) ; $vt++)
            {
                $item = $rss->channel->item[$vt];
                $dc = $item->children('http://purl.org/dc/elements/1.1/');

                $description = htmlspecialchars($item->description);
                $description = str_replace("<![CDATA[", "", $description);

                $description = rtrim($description, "]]>");

                echo '<article class="news-item">';
                echo '<a class="info_link" href="' . $item->link . '">' . $item->title . '</a>';
                echo '<span class="info_date">' . rebuild_date("l, d M Y", strtotime($item->pubDate)) . '</span>';
                echo '<span class="info_creator">' .$dc->creator. '</span>';
                echo '<p class="info_description ">' . $description . '</p>';
                echo '</article>';
            }
            echo '</div>';

            echo '</div>';
            ?>
        </div>

Code: Select all

#pagination
{
	width:100%;
	margin: 0;
}

#pagination .page
{
	text-align: center;
	display: inline-block;
	padding: 10px;
	background-color: #E3E7E8;
	margin: 3px 5px;
	width: 40px;
}

#pagination .page:hover
{
	background-color: #CFD7D8;
}

#pagination .page a
{
	text-decoration: none;
}

.news-item a.info_link
{
	color: black;
	text-decoration: none;
	font-size: 18px;
	display: block;
	margin: 20px 0 5px 0;
}

.news-item a.info_link:hover
{
	color: #1189c5;
}

.news-item .info_creator
{
	padding-left: 20px;
}

.news-item .info_description
{
	margin: 5px 0 10px 0;
}

Post Reply