Typecho中的皮膚函數(shù)functions.php
來源:易賢網(wǎng) 閱讀:991 次 日期:2015-08-18 15:00:11
溫馨提示:易賢網(wǎng)小編為您整理了“Typecho中的皮膚函數(shù)functions.php”,方便廣大網(wǎng)友查閱!

《Typecho中Widget_Archive解析》中有介紹,Typecho大部分請(qǐng)求的路由,都會(huì)轉(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)模板文件前,會(huì)先加載模板目錄下的functions.php文件,并嘗試執(zhí)行其中的themeInit函數(shù),$this作為參數(shù)。

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

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

* themeInit

* themeConfig

* themeConfigHandle

* themeFields

* threadedComments

* singlePing

* treeViewCategories

themeInit函數(shù)

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

function themeInit($archive) { if ($archive->is('index')) { $archive->parameter->pageSize = 20; // 自定義條數(shù) } }

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

themeConfig函數(shù)

此函數(shù)用于生成模板在后臺(tái)的配置選項(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ù)用于配置評(píng)論輸出。譬如:

function threadedComments($comments, $options) { echo '自定義內(nèi)容1'; $comments->content(); echo '自定義內(nèi)容2'; }

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

<ol> <li>自定義內(nèi)容1 評(píng)論內(nèi)容 自定義內(nèi)容2</li> <li>自定義內(nèi)容1 評(píng)論內(nèi)容 自定義內(nèi)容2</li> ... </ol>

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

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

<ul class='site-nav'> <li class='<?php active_current_menu($this,'index','active') ?>'><a href="/index.php">首頁</a></li> <li class='<?php active_current_menu($this,'theme','active') ?>'><a href="/index.php/category/theme">模板</a></li> <li class='<?php active_current_menu($this,'plugin','active') ?>'><a href="/index.php/category/plugin">插件</a></li> ... ... </ul>

但要注意,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)去,譬如上面的例子。

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:Typecho中的皮膚函數(shù)functions.php
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)