婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 網站建設 > 建站知識 > 織夢模型字段的調用分析

織夢模型字段的調用分析

POST TIME:2020-04-11 21:40

首先要搞明白,什么是模型字段,就是我們在后臺——>內容模型管理——>更改內容模型,這個里面添加的字段,以軟件模型為例子,如下圖所示。

在前臺調用這個些字段,非常容易,例如,在內容頁調用只需要用標簽{dede:field.filetype/}這樣就可以了,如果在首頁調用,只需要用這個標簽{dede:arclist addfields="filetype" channelid=3 typeid=''}{/dede:arclist}調

用,就可以了,這還有什么好說的,但是今天我要說的是不是簡單的這些調用。

例如織夢基地網站的篩選功能,如下圖所示。

如果用類似上面的標簽,來自動調用出我們后臺添加的字段,來實現這個功能是調用不出來的,目前,織夢只能調用站長添加的字段的值,沒有現成的標簽來做同上面的功能來,這就用到了織夢的模板引擎里面的標簽了。

若想調用出,并帶上連接,那么,就要從這個內容模板里面的字段配置里面調用出來,然后,再在“文檔列表類”里面進行修改,這樣就實現了織夢基地上面的功能了,也許會有人問這個功能是不是也是用一個標簽來實現的,是的,只不過是自定義標簽,自己寫的。

去修改“文檔列表類”不是本篇重點,要寫個這個需要你php知道,也不是多么難,本篇主要介紹,上一部分,如果把這些字段,取出來,然后,再與文檔列表類進行整合,實際上這二個部分,功能互相不干涉,一個是實現篩選,一個是調出我們自己定義標簽。

如何調用出呢?我們只需要知道這些字段存儲在哪里,實際上這里面的字段,肯定在模型里面,我們從如何添加字段,就可以看出,是進入到內容模型管理,才可以添加字段,那么,我們找到對應的數據庫表#@_channeltype,里面字段fieldset 對應的值就是我們后臺添加的字段,以及每個字段的相關信息,例如字段的類型,字段的itemname屬性等。

這些字段,只是在這個模型表dede_channeltype里面以上面的這種字段串的形容存在,這些字段,以真正的字段存在是在對應的附加表里面,例如軟件的附加表dede_addonsoft打開這個表,你會發(fā)現,我們后臺添加的字段,就是這個附加表里面的字段。從這里我們就知道,當我們添加字段時,字段會以字符串形式,把存儲在模型表dede_channeltype里面的字段fieldset里面,同時,把對應的字段,以真正的字段存儲在對應的附加表dede_addonsoft里面。

通過上面的分析我們知道了,如果調用出篩選的那些字段值,只需要,從模型表調用來,然后,通過織夢模板引擎把fieldset值進行foreach就可以循環(huán)出來,分析到這里,那就容易了。

這里要分前臺調用和后臺調用二種:前臺就是織夢基地的篩選功能,而后臺例如軟件添加后,生成靜態(tài)網頁時用到的調用分析。這二種調用實際上是一樣的,都是通過靜態(tài)模板引擎dedetag.class.php來實現的。具體實現代碼,我總結了一下,以下代碼,只是步驟,為了演示方便,有些代碼我已經刪掉。

1.從數據庫表#@_channeltype里面查詢出字段fieldset的值。

2.引入靜態(tài)模板引擎文件dedetag.class.php實例化對象,載入模板字段串(也就是fieldset值,因為,他是字段串形式存在于數據庫表#@_channeltype里面的),把里面的標記,例如,fieldtype,標記的名稱循環(huán)出來。代碼如下。

$dtp = new DedeTagParse();
$dtp->SetNameSpace('field','<','>');
$dtp->LoadSource($fieldset);
$dede_addonfields = '';
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $tid=>$ctag)
{
if($loadtype!='autofield'
|| ($loadtype=='autofield' && $ctag->GetAtt('autofield')==1) )
{
$dede_addonfields .= ( $dede_addonfields=="" ? $ctag->GetName().",".$ctag->GetAtt('type') : ";".$ctag->GetName().",".$ctag->GetAtt('type') );
echo GetFormItemA($ctag);
}
}
}

如果大家想研究的話,請去研究一下軟件發(fā)布的功能,那個軟件發(fā)布功能就是一個非常好的例子。如果把這個功能研究透徹了,那么,不管你調用附加表內容都非常容易了。

以上分析的都是織夢二次開發(fā)需要,搞明白的,如果你做二次開發(fā)完,就是一個普通站長只學學標簽調用即可,如果你想做一名織夢二次開發(fā)人員,那么,上面的內容必須精通,研究這個需要相當的php基地知識,所以,在大家研究這個功能前,要先學習一個php的基本知識。


收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
主站蜘蛛池模板: 乌鲁木齐县| 合川市| 宜春市| 都匀市| 钟山县| 甘孜| 棋牌| 女性| 新源县| 吴江市| 深泽县| 息烽县| 南投市| 犍为县| 谢通门县| 兴文县| 孟津县| 渝北区| 浦北县| 共和县| 凉城县| 杭锦旗| 胶南市| 乌拉特前旗| 崇左市| 濮阳市| 鄂托克旗| 建平县| 永登县| 泰顺县| 凌源市| 周宁县| 东乡| 济宁市| 囊谦县| 额尔古纳市| 桃园县| 平泉县| 稷山县| 绥阳县| 武陟县|