我們國內的cms喜歡在首頁把主要欄目單獨做成一個列表塊,而國外的如wordpress默認不是這樣子的,那么喜歡用wordpress的同學,應該如何打造像國內cms欄目塊呢?本文來告訴你如何實現.
這個功能只需用WodPress內置的 WP_Query 類調用指定分類的文章即可,實現起來還是比較容易的,下面用一個具體實例來講解如何制作CMS欄目塊.
1、制作HTML頁面
本文就不講解html頁面的制作了,具體的html、css如何制作一個欄目塊,請自行學習制作,這里假設你的欄目塊是類似以下的html代碼:
- <div class="box">
- <!-- 分類名稱及鏈接 -->
- <h3>
- <strong><a href="http://歷史分類鏈接/">歷史</a></strong>
- <em><a href="http://歷史分類鏈接/">更多</a></em>
- </h3>
- <!-- 文章列表 -->
- <ul class="iconBoxT14">
- <li><a href="http://文章1鏈接">文章1標題</a></li>
- <li><a href="http://文章2鏈接">文章2標題</a></li>
- <li><a href="http://文章3鏈接">文章3標題</a></li>
- <li><a href="http://文章4鏈接">文章4標題</a></li>
- </ul>
- </div>
2、獲取分類鏈接
分類鏈接我們可以用靜態的網址,也可以用動態的獲取的方式。靜態方式就是直接將上面的http://歷史分類鏈接/改成你的分類鏈接。動態獲取分類鏈接有很多方式,可以通過分類id來獲取,可以通過分類別名來獲取,也可以通過分類名稱來獲取。這里介紹通過分類名稱來獲取分類鏈接,代碼:
- <?php
- $catid = get_cat_ID('歷史'); // 歷史是分類名稱
- echo get_category_link($catid); // 輸出分類鏈接
- ?>
用上面的php代碼替換html中的http://歷史分類鏈接/,代碼看起來是這樣:
- <strong><a href="<?php echo get_category_link(get_cat_ID('歷史')); ?>">歷史</a></strong>
- <em><a href="<?php echo get_category_link(get_cat_ID('歷史')); ?>">更多</a></em>
3、獲取分類文章列表
我們需要動態獲取該分類下的指定數量的文章,然后動態輸出到html的ul列表中,這里需要用到 WP_Query 類,WP_Query有很多參數,這里只介紹2個簡單的,其他參數請參閱文檔或上網搜索.
我們將html做如下修改,加入WP_Query調用代碼:
- <ul class="iconBoxT14">
- <?php
- // 傳遞調用參數
- $the_query = new WP_Query(
- array(
- 'category_name' => '歷史', // 分類名稱
- 'posts_per_page' => 10 // 最多顯示的文章數
- ) );
- if ( $the_query->have_posts() ) {
- while ( $the_query->have_posts() ) {
- $the_query->the_post();
- // get_permalink()是獲取文章鏈接
- // get_the_title()是獲取文章標題
- echo '<li><a href="' . get_permalink() .'">' . get_the_title() .'</a></li>';
- }
- }
- else {
- echo '<li><a href="#">該分類沒有文章</a></li>';
- }
- // WP_Query結束都要重置一下
- // 以免影響其他代碼//Vevb.com
- wp_reset_postdata();
- ?>
- </ul>
4、限制文章標題字數
可能文章標題很長,超出了欄目塊的范圍,我們可以限制一下文章標題的字數,超出的用…代替,將第3點中的get_the_title()替換成以下代碼即可:
mb_strimwidth(get_the_title(), 0, 28, '...')
一個漢字是2個字符,上面的28代表最多顯示14個漢字,超出的用…代替,長度自選,完整代碼,下面是通過以上修改后的完整代碼,多個分類塊就依此類推:
- <div class="box">
- <!-- 分類名稱及鏈接 -->
- <h3>
- <strong><a href="<?php echo get_category_link(get_cat_ID('歷史')); ?>">歷史</a></strong>
- <em><a href="<?php echo get_category_link(get_cat_ID('歷史')); ?>">更多</a></em>
- </h3>
- <!-- 文章列表 -->
- <ul class="iconBoxT14">
- <?php
- // 傳遞調用參數
- $the_query = new WP_Query(
- array(
- 'category_name' => '歷史', // 分類名稱
- 'posts_per_page' => 10 // 最多顯示的文章數
- ) );
- if ( $the_query->have_posts() ) {
- while ( $the_query->have_posts() ) {
- $the_query->the_post();
- // get_permalink()是獲取文章鏈接
- // get_the_title()是獲取文章標題
- echo '<li><a href="' . get_permalink() .'">' . mb_strimwidth(get_the_title(), 0, 28, '...') .'</a></li>';
- }
- }
- else {
- echo '<li><a href="#">該分類沒有文章</a></li>';
- }
- // WP_Query結束都要重置一下
- // 以免影響其他代碼
- wp_reset_postdata();
- ?>
- </ul>
- </div>
現在,我們也能用wordpress打造成國內網民習慣的網頁了.
新聞熱點
疑難解答
圖片精選