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;
}