ホームページ >バックエンド開発 >PHPチュートリアル >Typecho のスキン関数 function.php
申し訳ありませんが、最近とても忙しくてコンテンツを更新する時間がありません。
前回の記事「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());}
472dc1ca2946dda5c9adf36170d8fadclistComments() ?> は次のように出力されます:
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 のコンテンツを使用する必要がある場合は、上記の例のように関数パラメーターの形式でそれを渡すことができます。