日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

typecho引入php文件,Typecho的functions.php

發(fā)布時(shí)間:2024/9/19 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 typecho引入php文件,Typecho的functions.php 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

很抱歉,最近很忙,沒有時(shí)間上來更新內(nèi)容哈。

上篇文章《Typecho主題制作文件結(jié)構(gòu)》介紹了制作Typecho主題所需要的模板文件,其中有一個(gè)特殊的文件,叫“皮膚函數(shù)”,文件名為functions.php,。本文將詳細(xì)介紹此文件的作用。

文件在何時(shí)被加載

《Typecho中Widget_Archive解析》中有介紹,Typecho大部分請求的路由,都會轉(zhuǎn)發(fā)到Widget_Archive中,在execute()函數(shù)中,即大概1357行處,有如下代碼:

/** 初始化皮膚函數(shù) */

$functionsFile = $this->_themeDir . 'functions.php';

if (!$this->_invokeFromOutside && file_exists($functionsFile)) {

require_once $functionsFile;

if (function_exists('themeInit')) {

themeInit($this);

}

}

可見,在Widget_Archive加載目標(biāo)模板文件前,會先加載模板目錄下的functions.php文件,并嘗試執(zhí)行其中的themeInit函數(shù),$this作為參數(shù)。

文件中可定義的特殊函數(shù)

上文提及了themeInit函數(shù),會在所有模板文件被執(zhí)行前執(zhí)行,及可以認(rèn)為是模板代碼中第一個(gè)被執(zhí)行的函數(shù)。類似的特殊函數(shù)還有:

themeInit

themeConfig

themeConfigHandle

themeFields

threadedComments

singlePing

treeViewCategories

themeInit函數(shù)

themeInit函數(shù)會在所有模板文件前加載,一般用于配置Typecho行為,譬如修改默認(rèn)pageSize為20等。

function themeInit($archive) {

if ($archive->is('index')) {

$archive->parameter->pageSize = 20; // 自定義條數(shù)

}

}

其作用就是,主頁中每頁顯示文章數(shù)由默認(rèn)值改成20.

themeConfig函數(shù)

此函數(shù)用于生成模板在后臺的配置選項(xiàng)。譬如如下函數(shù),將生成如圖的配置頁面。

function themeConfig($form) {

$logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('站點(diǎn)LOGO地址'), _t('在這里填入一個(gè)圖片URL地址, 以在網(wǎng)站標(biāo)題前加上一個(gè)LOGO'));

$form->addInput($logoUrl);

$sidebarBlock = new Typecho_Widget_Helper_Form_Element_Checkbox('sidebarBlock',

array('ShowRecentPosts' => _t('顯示最新文章'),

'ShowRecentComments' => _t('顯示最近回復(fù)'),

'ShowCategory' => _t('顯示分類'),

'ShowArchive' => _t('顯示歸檔'),

'ShowOther' => _t('顯示其它雜項(xiàng)')),

array('ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'), _t('側(cè)邊欄顯示'));

$form->addInput($sidebarBlock->multiMode());

}

以上代碼的效果:

themeConfigHandle函數(shù)

還沒有搞明白怎么用,歡迎大俠補(bǔ)充哈

themeFields函數(shù)

作用類似themeConfig吧,這個(gè)也沒有仔細(xì)研究過。

threadedComments函數(shù)

此函數(shù)用于配置評論輸出。譬如:

function threadedComments($comments, $options) {

echo '自定義內(nèi)容1';

$comments->content();

echo '自定義內(nèi)容2';

}

那么<?php $comments->listComments(); ?>將輸出:

  • 自定義內(nèi)容1 評論內(nèi)容 自定義內(nèi)容2
  • 自定義內(nèi)容1 評論內(nèi)容 自定義內(nèi)容2
  • ...

    singlePing函數(shù)

    //這個(gè)也沒有研究出是干什么的哈

    treeViewCategories函數(shù)

    此函數(shù)用于修改分類的輸出樣式。具體怎么使用,我研究下再補(bǔ)充上來哈。

    文件還可以定義自定義函數(shù)

    另外,由于functions.php在模板最前面加載,因此這里可以定義自己的函數(shù),并在模板中使用。

    舉例,最常用的菜單高亮功能中,我們可以在functions.php中定義一個(gè)函數(shù)判斷是否應(yīng)該高亮當(dāng)前菜單:

    function active_current_menu($archive,$expected,$active_class='active'){

    if($expected == 'index' && $archive.is('index')){

    echo $active_class;

    }else if($archive.is('archive') && $archive.getArchiveSlug() == $expected){

    echo $active_class;

    }else{

    echo '';

    }

    }

    那么在模板文件中,可以這樣使用:

    ... ...

    但要注意,functions.php是在Widget_Archive的execute函數(shù)中require進(jìn)來的,因此functions.php中定義的函數(shù)都不能直接使用$this,即不能直接訪問Widget_Archive內(nèi)部變量。如果需要使用Widget_Archive的內(nèi)容,可以通過函數(shù)參數(shù)的形式傳進(jìn)去,譬如上面的例子。

    版權(quán)聲明:未經(jīng)書面授權(quán)禁止轉(zhuǎn)載、摘編、復(fù)制或建立鏡像。對既成事實(shí)本站將保留所有的權(quán)利。

    總結(jié)

    以上是生活随笔為你收集整理的typecho引入php文件,Typecho的functions.php的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。