ホームページ > バックエンド開発 > PHPチュートリアル > Typecho のスキン関数 function.php

Typecho のスキン関数 function.php

WBOY
リリース: 2016-06-23 13:36:53
オリジナル
2195 人が閲覧しました

申し訳ありませんが、最近とても忙しくてコンテンツを更新する時間がありません。
前回の記事「Typechoテーマの制作ファイル構造」では、Typechoテーマを作成するために必要なテンプレートファイルを紹介しました。「skin function」という特別なファイルがあり、ファイル名はfunctions.phpです。この記事では、このファイルの役割について詳しく説明します。

ファイルはいつロードされますか?

「Typecho の Widget_Archive 分析」で紹介したように、Typecho によって要求されたほとんどのルートは、1357 行目あたりのexecute() 関数に次のように記述されています。コード:

    /** 初始化皮肤函数 */    $functionsFile = $this->_themeDir . 'functions.php';    if (!$this->_invokeFromOutside && file_exists($functionsFile)) {        require_once $functionsFile;        if (function_exists('themeInit')) {            themeInit($this);        }    }
ログイン後にコピー

Widget_Archive がターゲット テンプレート ファイルをロードする前に、まずテンプレート ディレクトリに function.php ファイルをロードし、その中で $this をパラメータとして使用して themeInit 関数を実行しようとすることがわかります。

ファイルで定義できる特別な関数

上記のthemeInit関数は、すべてのテンプレートファイルが実行される前に実行され、テンプレートコードで実行される最初の関数と見なされます。同様の特別な関数には次のようなものがあります:
* themeInit
* themeConfig
* themeConfigHandle
* themeFields
* threadedComments
* singlePing
*treeViewCategories

themeInit function
themeInit 関数は、すべてのテンプレート ファイルの前にロードされ、通常は Typecho を設定するために使用されます。デフォルトの pageSize を 20 に変更するなどの動作。

function themeInit($archive) {    if ($archive->is('index')) {        $archive->parameter->pageSize = 20; // 自定义条数    }}
ログイン後にコピー

その機能は、ホームページの各ページに表示される記事の数をデフォルト値から 20 に変更することです。

themeConfig 関数
この関数は、バックグラウンドでテンプレートの構成オプションを生成するために使用されます。たとえば、次の関数は図に示すような構成ページを生成します。

すごいです

上記のコードの効果:

themeConfigHandle 関数
使い方はまだわかりませんが、追加することを歓迎します

themeFields 関数
それは、themeConfig と同じように機能します。これを注意深く勉強しませんでした。

threadedComments 関数
この関数はコメント出力を設定するために使用されます。例:

function themeConfig($form) {    $logoUrl = new Typecho_Widget_Helper_Form_Element_Text('logoUrl', NULL, NULL, _t('站点LOGO地址'), _t('在这里填入一个图片URL地址, 以在网站标题前加上一个LOGO'));    $form->addInput($logoUrl);    $sidebarBlock = new Typecho_Widget_Helper_Form_Element_Checkbox('sidebarBlock',     array('ShowRecentPosts' => _t('显示最新文章'),    'ShowRecentComments' => _t('显示最近回复'),    'ShowCategory' => _t('显示分类'),    'ShowArchive' => _t('显示归档'),    'ShowOther' => _t('显示其它杂项')),    array('ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'), _t('侧边栏显示'));    $form->addInput($sidebarBlock->multiMode());}
ログイン後にコピー

listComments() ?> は次のように出力されます:

function threadedComments($comments, $options) {    echo '自定义内容1';    $comments->content();    echo '自定义内容2';}
ログイン後にコピー

singlePing function
//これが何をするのかわかりません

ViewCategories 関数
この関数は、分類の出力スタイルを変更するために使用されます。詳しい使い方については調べて追記していきます。

このファイルではカスタム関数を定義することもできます

さらに、functions.php がテンプレートの先頭にロードされるため、ここで独自の関数を定義してテンプレートで使用することができます。
たとえば、最も一般的に使用されるメニューの強調表示関数では、functions.php で現在のメニューを強調表示するかどうかを決定する関数を定義できます:

<ol><li>自定义内容1 评论内容 自定义内容2</li><li>自定义内容1 评论内容 自定义内容2</li>...</ol>
ログイン後にコピー

次に、テンプレート ファイルで次のように使用できます:

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 の実行関数に必要なので、functions.php で定義された関数は $this を直接使用できません。つまり、Widget_Archive の内部変数に直接アクセスできません。 Widget_Archive のコンテンツを使用する必要がある場合は、上記の例のように関数パラメーターの形式でそれを渡すことができます。

  • 記事の転載元: www.typechodev.com
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート