红穆笔记
首頁 程序筆記 Typecho的Widget
程序筆記 Typecho

Typecho的Widget

Typecho的Widget

通過Typecho的Widget_Options,可以方便地獲取Typecho的系統信息,或者方便地獲取相關配置、資源路徑等。

這裏列出常用的Widget_Options函數和用法,方便各位筒子方便查閱。

通過Widget_Options獲取路徑信息

獲取內置URL

通過這類api,可以獲取TE內置的一些特定URL。

$options = Helper::options();

#1  $options->feedUrl(); //或者 echo $op-feedUrl;
#2  $options->feedRssUrl();
#3  $options->feedAtomUrl();
#4  $options->commentsFeedUrl();
#5  $options->commentsFeedRssUrl();
#6  $options->commentsFeedAtomUrl();
#7  $options->xmlRpcUrl();
#8  $options->loginUrl();  //輸出Typecho的登錄URL地址
#9  $options->registerUrl(); //輸出Typecho的註冊URL地址
#10 $options->registerAction(); //輸出Typecho的註冊Action請求地址
#11 $options->profileUrl(); //輸出Typecho用戶的用戶信息頁面地址
#12 $options->logoutUrl(); //輸出Typecho的註銷地址,用戶點擊之後可實現註銷操作。

將輸出:


#1  http://www.4s5.cn/index.php/feed/
#2  http://www.4s5.cn/index.php/feed/rss/
#3  http://www.4s5.cn/index.php/feed/atom/
#4  http://www.4s5.cn/index.php/feed/comments/
#5  http://www.4s5.cn/index.php/feed/rss/comments/
#6  http://www.4s5.cn/index.php/feed/atom/comments/
#7  http://www.4s5.cn/index.php/action/xmlrpc
#8  http://www.4s5.cn/admin/login.php
#9  http://www.4s5.cn/admin/register.php
#10 http://www.4s5.cn/index.php/action/register?_=99788b0bb32d48206a3da981c342a590
#11 http://www.4s5.cn/admin/profile.php
#12 http://www.4s5.cn/index.php/action/logout

獲取動態URL

通過這類api,可以動態獲取相對於當前主題、當前插件等的URL。

Widget_Options::siteUrl()

$options->siteUrl(); //或者echo $options->siteUrl
$options->siteUrl('mypage.php');
// http://www.4s5.cn/
// http://www.4s5.cn/mypage.php

siteUrl()函數將輸出相對於域名的url。如果參數爲空,則輸出網站所在域名,如果參數非空,則輸出相對於/目錄所在的URL。

Widget_Options::index()

$options->index(); //或者echo $options->index
$options->index('mypage.php');
// http://www.4s5.cn/index.php/
// http://www.4s5.cn/index.php/mypage.php

index函數輸出相對於index.php的url,這個十分常用。如果參數爲空,則輸出index.php,如果參數非空,則輸出相對於index.php所在的url。

注意:如果typecho後臺開啓了僞靜態,那麼Widget_Options::index()將會隱藏url中的index.php。

開啓永久鏈接.png

那麼:

$options->index(); //或者echo $options->index
$options->index('mypage.php');
// http://www.4s5.cn/
// http://www.4s5.cn/mypage.php

注意,相對上面,url中少了index.php。

Widget_Options::themeUrl()

$options->themeUrl();
$options->themeUrl('mypage.php');
// http://www.4s5.cn/usr/themes/current_theme/
// http://www.4s5.cn/usr/themes/current_theme/mypage.php

themeUrl函數將獲取主題模板所在的目錄。如果不帶參數,將獲取當前模板的/路徑,如果參數非空,則獲取相對於當前模板根目錄的路徑。

Widget_Options::pluginUrl()

$options->pluginUrl();
$options->pluginUrl('myplugin/some_script.php');
// http://www.4s5.cn/usr/plugins/
// http://www.4s5.cn/usr/plugins/myplugin/some_script.php

pluginUrl函數和themeUrl類似,不過pluginUrl沒有“當前”插件的概念,即themeUrl會定位到當前啓用的插件目錄,即usr/theme/current_theme/,而pluginUrl僅定位到plugins目錄,即usr/plugins/

Widget_Options::adminUrl()

$options->adminUrl();
$options->adminUrl('mypage.php');
// http://www.4s5.cn/admin/
// http://www.4s5.cn/admin/mypage.php

adminUrl和pluginUrl類似,可以動態定位到admin目錄。
通過Widget_Options獲取系統信息

$options->gmtTime();
//1424352251
$options->software();
//Typecho
$options->version();
//1.0/14.10.10
$options->contentType();
//text/html
echo $options->themeFile('my_theme');
// /path_to_your_site_ducutment/usr/themes/my_theme/
echo $options->themeFile('my_theme','mypage.php');
// /path_to_your_site_ducutment/usr/themes/my_theme/mypage.php 
echo $options->pluginDir('TypechoDev');//[注意]
// /path_to_your_site_ducutment/usr/plugins
注意,通過閱讀代碼,當前版本(1.0/14.10.10)的Typecho中,pluginDir函數應該有bug,即此函數的參數沒有生效,各位筒子在使用中注意一下。

通過Widget_Options獲取後臺配置

Widget_Options::plugin('TypechoDev')函數,將獲取到TypechoDev的配置。

$plugin_config = $options->plugin('TypechoDev');
echo get_class($plugin_config);
//Typecho_Config

假如插件TypechoDev下的Plugin.php文件,存在如下代碼:

public static function config(Typecho_Widget_Helper_Form $form){
    $enable_menu = new Typecho_Widget_Helper_Form_Element_Radio(
        'enable_menu', array ('0' => '禁用', '1' => '啓用'), '',
        ':', '');
    $form->addInput($enable_menu);
}

那麼在模板或者插件代碼中,可以通過如此方式獲取後臺配置值:

$options = Helper::options();
$plugin_config = $options->plugin('TypechoDev');
$plugin_config->enable_menu;//可以獲取到後臺配置的值,即0或者1
注意:但要注意,當前版本中,如果對應的插件沒有啓用,那麼可能會導致上述代碼執行失敗,從而導致系統掛掉。

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 198
typecho分页样式的修改

typecho分頁樣式的修改 程序筆記 Typecho

大人,時代變了!目前typecho最完美的解決方案了,因爲百度只能看到固定思維的代碼。實際生成的html代碼,乾淨到讓人窒息完全的自定義,包括給li元素加上class,給a元素加上class,給上一頁下一頁加上class,去除typecho自帶用於表示更多的li標籤。甚至裏面的內容我也能添加一些文字…
👁 516
typecho文章页评论样式修改

typecho文章頁評論樣式修改 程序筆記 Typecho

需求使用 typecho 進行模板開發的時候,默認評論樣式很難看。因此需要評論需要重新輸出或進行樣式設定。默認的評論模板文件路徑是:comments.php主要使用的相關變量<?php $comments->gravatar('40', ''); ?> //頭像,有兩個參數,大小、…
👁 387
Typecho 对数据库的增删改查操作方法 API

Typecho 對數據庫的增刪改查操作方法 API 程序筆記 Typecho

Typecho數據庫提供了非常易用的api,和原生SQL寫法沒有太大的差別,同時也很好地處理了SQL常見的安全問題,如sql注入。本文從實用角度出發,介紹了typecho操作數據庫的常用場景以及相關api用法。表創建和刪除在Typecho插件開發過程中,往往需要創建自己的表。上文提到Typecho_…
👁 552
Typecho调用热门评论文章和调用最新文章的方法总结

Typecho調用熱門評論文章和調用最新文章的方法總結 程序筆記 Typecho

Typecho文章調用Typecho程序在設計主題的時候,側欄有些時候需要調用熱評文章或者最新文章。我們可以在指定的位置通過腳本直接調用。在這篇文章整理這個調用文章的方法,以後在有需要的模板中可以直接調用使用。其實設計主題就那麼回事,靜態模板搞定後,就是直接調用。最新文章調用 <?php $t…
👁 295
Typecho 调用分类文章列表

Typecho 調用分類文章列表 程序筆記 Typecho

其中pageSize後面的數字表示調用文章的數量;mid後面的數字表示調用的分類ID;提示:Typecho分類目錄ID的獲取方法是把鼠標移到某分類名稱上面,在瀏覽器狀態欄顯示的mid=後面的數字便是該分類目錄ID編輯當前typecho主題模板,在要調用某分類目錄的位置添加以下代碼方法一:widget…
👁 360

推薦閱讀

PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 141
PHP preg

PHP preg 語言筆記 PHP

preg_match_all 函數用於執行一個全局正則表達式匹配。preg_match_all() 語法int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG…
👁 169
PHP 三元运算符与if的详解

PHP 三元運算符與if的詳解 語言筆記 PHP

三元運算符語條件 ? 結果1 : 結果2 說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。本文對三元運算符和if...else...進行對比詳解,希望對大家有所幫助。今天在改論文在線的時候遇到了一個語句看不懂:$if_summary = $row['IF_SUMMARY']=…
👁 189
PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232