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

主頁 > 網(wǎng)站建設(shè) > 建站知識 > 織夢模型字段的調(diào)用分析

織夢模型字段的調(diào)用分析

POST TIME:2020-04-11 21:40

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

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

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

例如織夢基地網(wǎng)站的篩選功能,如下圖所示。

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

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

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

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

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

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

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

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

2.引入靜態(tài)模板引擎文件dedetag.class.php實例化對象,載入模板字段串(也就是fieldset值,因為,他是字段串形式存在于數(shù)據(jù)庫表#@_channeltype里面的),把里面的標(biāo)記,例如,fieldtype,標(biāo)記的名稱循環(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ā)布功能就是一個非常好的例子。如果把這個功能研究透徹了,那么,不管你調(diào)用附加表內(nèi)容都非常容易了。

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


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

  • 400-1100-266
主站蜘蛛池模板: 邯郸市| 温宿县| 武山县| 灌南县| 鄱阳县| 宝兴县| 洛浦县| 巴彦淖尔市| 若尔盖县| 余江县| 禄劝| 类乌齐县| 郸城县| 阜南县| 吉水县| 寿宁县| 敦化市| 上饶市| 西贡区| 辛集市| 康定县| 武强县| 当雄县| 千阳县| 高淳县| 化德县| 馆陶县| 宜良县| 苍山县| 赣州市| 龙川县| 黄骅市| 中卫市| 上蔡县| 泰来县| 远安县| 诏安县| 台中县| 临清市| 济源市| 扎兰屯市|