亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

詳解WordPress中添加友情鏈接的方法
來源:易賢網(wǎng) 閱讀:1725 次 日期:2016-08-19 15:17:18
溫馨提示:易賢網(wǎng)小編為您整理了“詳解WordPress中添加友情鏈接的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了PHP框架Laravel5.1插件Pagination實現(xiàn)自定義分頁的相關(guān)資料,需要的朋友可以參考下

Laravel 的分頁很方便,其實擴(kuò)展起來也挺容易的,下面就來做個示例,擴(kuò)展一下 paginate() 和 simplePaginate() 方法,來實現(xiàn)我們自定義分頁樣式,比如顯示 "上一頁" 和 "下一頁" ,而不是 "《" 和 "》" ,當(dāng)然擴(kuò)展的方法掌握了你就可以肆無忌憚的擴(kuò)展一個你想要的分頁了,比如跳轉(zhuǎn)到某一頁,分頁顯示一共多少記錄,當(dāng)前顯示的記錄范圍等等巴拉巴拉的。。。

5.1和5.2應(yīng)該是同樣的方法,我這里用的是5.2的版本。文檔告訴我們 Paginator 對應(yīng)于查詢語句構(gòu)造器和 Eloquent 的  simplePaginate 方法,而  LengthAwarePaginator 則等同于  paginate 方法。那我們還是來看下源碼,具體這個  paginate 是如何實現(xiàn) render() 的,

Illuminate/Pagination/LengthAwarePaginator.php

<?php

namespace Illuminate\Pagination;

......

class LengthAwarePaginator extends AbstractPaginator implements Arrayable, ArrayAccess, Countable, IteratorAggregate, JsonSerializable, Jsonable, LengthAwarePaginatorContract 

{

......

  public function render(Presenter $presenter = null)

  {

    if (is_null($presenter) && static::$presenterResolver) {

      $presenter = call_user_func(static::$presenterResolver, $this);

    }

    $presenter = $presenter ?: new BootstrapThreePresenter($this);

    return $presenter->render();

  }

......

}

render() 中傳入的是一個 Presenter 的實例,并調(diào)用這個實例化的 render 方法來實現(xiàn)分頁的顯示的。如果沒有則調(diào)用 BootstrapThreePresenter 中 render() 的,來看看 BootstrapThreePresenter 是干嘛的

Illuminate/Pagination/BootstrapThreePresenter.php

<?php

namespace Illuminate\Pagination;

use Illuminate\Support\HtmlString; 

use Illuminate\Contracts\Pagination\Paginator as PaginatorContract; 

use Illuminate\Contracts\Pagination\Presenter as PresenterContract;

class BootstrapThreePresenter implements PresenterContract 

{

  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait;

  /**

   * The paginator implementation.

   *

   * @var \Illuminate\Contracts\Pagination\Paginator

   */

  protected $paginator;

  /**

   * The URL window data structure.

   *

   * @var array

   */

  protected $window;

  /**

   * Create a new Bootstrap presenter instance.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @param \Illuminate\Pagination\UrlWindow|null $window

   * @return void

   */

  public function __construct(PaginatorContract $paginator, UrlWindow $window = null)

  {

    $this->paginator = $paginator;

    $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get();

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages();

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pagination">%s %s %s</ul>',

        $this->getPreviousButton(),

        $this->getLinks(),

        $this->getNextButton()

      ));

    }

    return '';

  }

......

}

這里可以看到 BootstrapThreePresenter 實現(xiàn)了 PresenterContract 的接口, render() 才是分頁顯示的真正實現(xiàn),構(gòu)造方法中的第一個參數(shù) PaginatorContract 其實就是一個 Paginator 我們繼續(xù)看下 PresenterContract 也就是 Presenter 接口中定義了什么方法需要實現(xiàn)

illuminate/contracts/Pagination/Presenter.php

<?php

namespace Illuminate\Contracts\Pagination;

interface Presenter 

{

  /**

   * Render the given paginator.

   *

   * @return \Illuminate\Contracts\Support\Htmlable|string

   */

  public function render();

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages();

}

其中定義了 render 和 hasPages 方法需要實現(xiàn)

好了,那我們現(xiàn)在已經(jīng)很清晰了,我們要自定義分頁的顯示,那么就要寫一個我們自己的 Presenter 來實現(xiàn)接口中的 render() 和 hasPages() 就可以了。

首先就來簡單的實現(xiàn)一個paginate(),顯示出來"上一頁"和"下一頁",中間是分頁數(shù)字的例子。

新建文件如下(個人習(xí)慣)

app/Foundations/Pagination/CustomerPresenter.php

<?php 

namespace App\Foundations\Pagination;

use Illuminate\Contracts\Pagination\Presenter as PresenterContract; 

use Illuminate\Contracts\Pagination\LengthAwarePaginator as PaginatorContract; 

use Illuminate\Pagination\UrlWindow; 

use Illuminate\Support\HtmlString; 

use Illuminate\Pagination\BootstrapThreeNextPreviousButtonRendererTrait; 

use Illuminate\Pagination\UrlWindowPresenterTrait;

class CustomerPresenter implements PresenterContract 

{

  use BootstrapThreeNextPreviousButtonRendererTrait, UrlWindowPresenterTrait;

  protected $paginator;

  protected $window;

  /**

   * Create a new Bootstrap presenter instance.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @param \Illuminate\Pagination\UrlWindow|null $window

   * @return void

   */

  public function __construct(PaginatorContract $paginator, UrlWindow $window = null)

  {

    $this->paginator = $paginator;

    $this->window = is_null($window) ? UrlWindow::make($paginator) : $window->get();

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages();

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pagination">%s %s %s</ul>',

        $this->getPreviousButton('上一頁'),//具體實現(xiàn)可以查看該方法

        $this->getLinks(),

        $this->getNextButton('下一頁')//具體實現(xiàn)可以查看該方法

      ));

    }

    return '';

  }

  /**

   * Get HTML wrapper for an available page link.

   *

   * @param string $url

   * @param int $page

   * @param string|null $rel

   * @return string

   */

  protected function getAvailablePageWrapper($url, $page, $rel = null)

  {

    $rel = is_null($rel) ? '' : ' rel="' . $rel . '"';

    return '<li><a href="' . htmlentities($url) . '"' . $rel . '>' . $page . '</a></li>';

  }

  /**

   * Get HTML wrapper for disabled text.

   *

   * @param string $text

   * @return string

   */

  protected function getDisabledTextWrapper($text)

  {

    return '<li class="disabled hide"><span>' . $text . '</span></li>';

  }

  /**

   * Get HTML wrapper for active text.

   *

   * @param string $text

   * @return string

   */

  protected function getActivePageWrapper($text)

  {

    return '<li class="active"><span>' . $text . '</span></li>';

  }

  /**

   * Get a pagination "dot" element.

   *

   * @return string

   */

  protected function getDots()

  {

    return $this->getDisabledTextWrapper('...');

  }

  /**

   * Get the current page from the paginator.

   *

   * @return int

   */

  protected function currentPage()

  {

    return $this->paginator->currentPage();

  }

  /**

   * Get the last page from the paginator.

   *

   * @return int

   */

  protected function lastPage()

  {

    return $this->paginator->lastPage();

  }

}

就這么簡單,主要就是 render() 方法,如果項目中需要修改分頁樣式,或者添加分頁跳轉(zhuǎn)之類的需求只要重寫其中的各項顯示的方法中的html元素就可以了,很靈活,在blade模板中也需要修該,比如我們的 Paginator 叫 $users ,默認(rèn)的分頁顯示是這樣的:

{!! $users->render() !!}

修改成我們自定義后的分頁顯示:

{!! with(new \App\Foundations\Pagination\CustomerPresenter($categories))->render() !!}

好了,這樣在頁面應(yīng)該就可以看到分頁鏈接中含有 "上一頁"和"下一頁"加數(shù)字的樣式了。

那么如果擴(kuò)展simplePaginate?其實很簡單,只要繼承剛才的 CustomerPresenter ,實現(xiàn) hasPages 和 render ,至于為什么可以按照我上面查看源碼的方式看一下就知道了,比如我們改成"上一篇"和"下一篇"

新建App\Foundations\Pagination\CustomerSimplePresenter.php

<?php 

namespace App\Foundations\Pagination;

use Illuminate\Support\HtmlString; 

use Illuminate\Contracts\Pagination\Paginator as PaginatorContract;

class CustomerSimplePresenter extends CustomerPresenter 

{

  /**

   * Create a simple Bootstrap 3 presenter.

   *

   * @param \Illuminate\Contracts\Pagination\Paginator $paginator

   * @return void

   */

  public function __construct(PaginatorContract $paginator)

  {

    $this->paginator = $paginator;

  }

  /**

   * Determine if the underlying paginator being presented has pages to show.

   *

   * @return bool

   */

  public function hasPages()

  {

    return $this->paginator->hasPages() && count($this->paginator->items()) > 0;

  }

  /**

   * Convert the URL window into Bootstrap HTML.

   *

   * @return \Illuminate\Support\HtmlString

   */

  public function render()

  {

    if ($this->hasPages()) {

      return new HtmlString(sprintf(

        '<ul class="pager">%s %s</ul>',

        $this->getPreviousButton('上一篇'),

        $this->getNextButton('下一篇')

      ));

    }

    return '';

  }

}

分頁顯示:

{!! with(new \App\Foundations\Pagination\CustomerSimplePresenter($categories))->render() !!}

方法就是這個方法,具體修改按照自己需求重寫其中對應(yīng)的顯示html元素的方法就可以了。

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)PHP程序設(shè)計有所幫助。

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:詳解WordPress中添加友情鏈接的方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點

版權(quán)所有:易賢網(wǎng)

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
欧美日韩一区二区视频在线观看| 中日韩视频在线观看| 欧美日韩在线观看一区二区三区| 欧美日韩在线精品| 亚洲网站啪啪| 国产伦精品一区| 午夜精品视频在线观看一区二区| 欧美午夜精品久久久久免费视| 亚洲精品孕妇| 亚洲欧美文学| 99热在线精品观看| 欧美成人嫩草网站| 一区二区三区四区五区精品| 欧美精品观看| 亚洲欧美日韩综合国产aⅴ| 欧美日韩在线高清| 久久国产主播精品| 国产三级精品在线不卡| 欧美久久久久久| 亚洲一区bb| 激情综合亚洲| 欧美精品尤物在线| 久久精品综合| 国产精品久久久久久久久久直播 | 影音先锋亚洲精品| 久久精品女人天堂| 国产日韩欧美二区| 亚洲第一伊人| 18成人免费观看视频| 激情av一区| 亚洲午夜精品国产| 激情久久婷婷| 精品999日本| 欧美午夜一区| 欧美午夜视频在线| 欧美日韩三级| 国产精品sm| 国产一区高清视频| 亚洲性感美女99在线| 国一区二区在线观看| 狠狠入ady亚洲精品| 国产精品啊啊啊| 黄色亚洲精品| 亚洲国内精品| 在线亚洲伦理| 亚洲一区二区在线看| 亚洲欧美视频| 欧美福利一区| 在线精品亚洲| 午夜亚洲视频| 久久最新视频| 伊人久久婷婷| 国产精品久久久久9999高清| 久久精品观看| 亚洲视频狠狠| 亚洲一区二区精品在线| 久久亚洲色图| 一区免费在线| 美日韩精品免费| 欧美日韩免费观看一区=区三区 | 免费精品视频| 午夜精品网站| 99国产精品自拍| 校园激情久久| 欧美日韩亚洲一区在线观看| 亚洲人成人一区二区三区| 国产精品伊人日日| 国产精品www994| 国产日韩精品视频一区二区三区| 免费在线观看成人av| 黄色亚洲在线| 久久精品1区| 亚洲日本成人| 欧美a级在线| 国产一区二区三区免费不卡 | 狠狠色综合一区二区| 国产一区二区三区免费不卡| 欧美88av| 一本色道久久综合亚洲精品不卡 | 亚洲高清网站| 久久久久一区| 一本久久综合| 国产尤物精品| 久久一区二区精品| 国产一区成人| 亚洲区国产区| 国产自产精品| 另类激情亚洲| 亚洲综合三区| 国产欧美另类| 亚洲国产欧美日韩| 午夜精品久久久久99热蜜桃导演 | 夜夜爽99久久国产综合精品女不卡| 久久久久欧美精品| 国产精品老牛| 在线午夜精品| 中文亚洲欧美| 9色精品在线| 亚洲欧洲一区| 黄色国产精品| 欧美日韩精选| 欧美大香线蕉线伊人久久国产精品| 一区二区免费在线视频| 亚洲丰满在线| 亚洲激情精品| 亚洲激情二区| 99精品欧美一区二区三区| 国语精品中文字幕| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲欧美综合| 久久精品主播| 你懂的网址国产 欧美| 久久久一本精品99久久精品66| 性色一区二区三区| 免费中文字幕日韩欧美| 免费在线成人av| 久久人人97超碰人人澡爱香蕉| 亚洲欧美日韩在线观看a三区| 亚洲一区在线直播| 久久精品中文字幕一区二区三区| 久久精品人人做人人爽电影蜜月| 久久精品国产综合精品| 欧美欧美天天天天操| 国产精品vip| 亚洲黄色成人| 亚洲一区一卡| 欧美日韩国产综合在线| 亚洲手机在线| 国产精品一区二区三区免费观看| 久久av一区二区三区亚洲| 你懂的国产精品永久在线| 激情欧美亚洲| 午夜亚洲激情| 国内精品国语自产拍在线观看| 亚洲国产美女 | 欧美日韩视频| 国产日韩欧美亚洲一区| 久久久精品性| 韩国在线一区| 亚洲一区bb| 欧美特黄一区| 亚洲一区二区在| 国产中文一区| 亚洲欧美日韩一区在线观看| 欧美另类女人| 亚洲伊人观看| 在线不卡欧美| 你懂的成人av| 国产视频欧美| 国产精品成人观看视频免费| 亚洲免费黄色| 国语精品中文字幕| 欧美1区2区| 免费日韩精品中文字幕视频在线| 精品成人一区| 午夜久久资源| 久久久久久亚洲精品不卡4k岛国| 日韩午夜激情| 伊人成人在线视频| 欧美日韩精选| 国产一区二区三区黄| 日韩午夜av| 国产一区久久| 久久人人97超碰国产公开结果| 亚洲三级色网| 国产一区观看| 午夜精品国产| 久久蜜桃资源一区二区老牛| 国产亚洲精品久久久久婷婷瑜伽| 黄页网站一区| 国产一区激情| 欧美va天堂在线| 欧美凹凸一区二区三区视频| 免费久久99精品国产自在现线| 99国产精品| 99精品国产在热久久| 亚洲国产精品一区| 亚洲东热激情| 亚洲精品看片| 日韩视频免费| 国产欧美另类| 国产日韩一区二区三区在线| 在线一区亚洲| 模特精品在线| 老司机午夜精品视频| 久久精品天堂| 欧美日韩免费精品| 永久久久久久| 国产伦精品一区二区三区高清版| 国产精品日韩一区二区| 久久本道综合色狠狠五月| 久久精品成人| 国产中文一区| 在线综合亚洲| 女人天堂亚洲aⅴ在线观看| 欧美视频一区| 一区二区三区欧美在线| 久久不射2019中文字幕| 欧美日本中文| av成人激情| 久久亚洲欧洲| 亚洲国产综合在线看不卡| 国产日韩一区二区三区| 久久人人97超碰国产公开结果| 欧美久久综合| 夜夜爽99久久国产综合精品女不卡| 亚洲永久在线| 国产一区二区中文| 国产久一道中文一区| 欧美a级在线| 亚洲国产精品一区二区第四页av| 国产精品亚洲不卡a| 欧美精品免费观看二区| 一本久久知道综合久久| 欧美一区二区三区免费看| 亚洲无线视频| 麻豆成人av| 亚洲精美视频| 欧美精品v日韩精品v国产精品| 亚洲精品四区| 亚洲欧美综合| 国产一区导航| 亚洲视频中文| 麻豆精品网站| 99视频+国产日韩欧美| 欧美高清日韩| 亚洲一级在线| 亚洲国产网站| 国产精品激情| 午夜精品剧场| 蜜桃av久久久亚洲精品| 亚洲欧洲日本mm| 欧美日韩福利| 欧美1区2区3区| 久久riav二区三区| 国产一区二区你懂的| 合欧美一区二区三区| 久久亚洲国产精品日日av夜夜| 99人久久精品视频最新地址| 国产在线观看一区| 欧美大片专区| 久久日韩精品| 久久久噜噜噜| 久久免费高清| 欧美伊人影院| 久久精品官网| 久久久久一区二区| 久久国产一区二区| 蜜桃av久久久亚洲精品| 国产九区一区在线| 国产精品呻吟| 亚洲一区bb| 亚洲欧美大片| 久久久久久久久一区二区| 羞羞视频在线观看欧美| 性一交一乱一区二区洋洋av| 亚洲女同在线| 亚洲欧美日韩综合国产aⅴ| 国产一区二区三区久久| 国产精品日本一区二区| 国产精品一区二区三区观看| 在线亚洲欧美| 欧美一级一区| 欧美激情aⅴ一区二区三区| 欧美三区在线| 精品1区2区| 国产欧美日韩一区二区三区在线| 国产一区导航| 老司机午夜精品视频| 欧美日韩天天操| 亚洲高清视频一区| 国产视频一区三区| 久久这里有精品15一区二区三区| 欧美伊人影院| 亚洲区第一页| 亚洲一区二区高清视频| 欧美激情综合| 亚洲精品乱码| 久久久久久久欧美精品| 韩国精品一区二区三区| 中文日韩在线| 久久一区精品| 亚洲高清激情| 久久久xxx| 亚洲精品乱码视频| 久久一区中文字幕| 亚洲理伦在线| 欧美a级片一区| 亚洲精品在线观看免费| 久久资源在线| 91久久黄色| 欧美不卡三区| 国产欧美在线| 国产精品国产三级国产专区53| 日韩午夜视频在线观看| 久久婷婷人人澡人人喊人人爽| 亚洲国产精品日韩| 久久天堂成人| 国产精品尤物| 激情久久婷婷| 老司机午夜精品视频在线观看| 亚洲免费观看| 国语精品中文字幕| 美女诱惑一区| 国产三级精品在线不卡| 精品动漫3d一区二区三区免费| 久久精品一区二区国产| 国产区日韩欧美| 136国产福利精品导航网址| 午夜精品久久| 久久一区二区精品| 久久精品观看| 免费在线观看成人av| 国产精品普通话对白| 亚洲精品一区二| 亚洲国产日韩欧美| 国产自产在线视频一区| 老司机精品视频网站| 欧美专区在线| 国产一区二区高清不卡| 99riav国产精品| 亚洲国内欧美| 精品成人一区| 狠狠爱成人网| 国产精品国产精品| 欧美激情四色| 欧美凹凸一区二区三区视频| 久久久久免费| 欧美91大片| 女人色偷偷aa久久天堂| 欧美一区二区三区久久精品茉莉花| 午夜一区不卡| 久久精品毛片| 老司机午夜免费精品视频| 久热re这里精品视频在线6| 狂野欧美性猛交xxxx巴西| 久久久精品动漫| 久久久蜜桃一区二区人| 久久午夜电影| 国产精品豆花视频| 伊人久久大香线蕉av超碰演员| 亚洲黄色成人| 亚洲一区观看| 欧美激情1区| 在线观看亚洲视频啊啊啊啊| 亚洲精品欧洲精品| 国产精品入口| 欧美在线高清| 亚洲国产专区校园欧美| 国产区二精品视| 久久精品日产第一区二区三区| 欧美在线三区| 亚洲高清资源| 亚洲综合三区| 国产精品v亚洲精品v日韩精品| 黄色亚洲大片免费在线观看| 在线视频日韩| 老牛国产精品一区的观看方式| 国产精品第十页| 一本久道综合久久精品| 欧美.www| 亚洲少妇诱惑| 国产主播一区二区三区四区| 99视频在线精品国自产拍免费观看| 新狼窝色av性久久久久久| 欧美视频日韩| 欧美亚洲免费在线| 久久久一二三| 国产欧美69| 国产自产精品| 男人天堂欧美日韩| 在线免费观看欧美| 欧美国产视频在线观看| 亚洲一区二区三区精品在线观看| 欧美日本一区二区视频在线观看 | 欧美久久电影| 国产精品乱看| 亚洲小说欧美另类社区| 久久高清一区| 日韩一级大片| 亚洲无线视频| 欧美国产先锋| 久久xxxx精品视频| 在线综合欧美| 最新日韩av| 黄色日韩精品| 欧美日韩亚洲一区三区| 免费久久久一本精品久久区| 亚洲精品美女91| 亚洲视频精品| 国产精品分类| 欧美日韩亚洲一区| 欧美一区免费视频| 美女精品在线| 男女av一区三区二区色多| 国产一区二区精品| 国产亚洲福利| 国产欧美一区二区三区国产幕精品| 伊人久久综合| 伊人久久婷婷|