WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
Joomla/MosIf的使用
MosIf是一個(gè)Joomla!觸發(fā)器(mambot)的名稱。所謂觸發(fā)器,就是當(dāng) Joomla! 的頁面被瀏覽器打開時(shí),就立即執(zhí)行的“機(jī)器人代碼”。通常來說,“頁面被打開”就是觸發(fā)器運(yùn)行的唯一“觸發(fā)”條件。但是,MosIf 是一個(gè)特例。
MosIf 特殊在,在某些特定條件下才能看到它執(zhí)行的結(jié)果。例如,有一段文字指定只給“熊貓燒香”這個(gè)會(huì)員看,那么其他訪客或會(huì)員打開該頁面時(shí)就看不到這段話,而“熊貓燒香”會(huì)員卻在登錄后能在同一個(gè)頁面上看到這段文字。嚴(yán)格來講,看不到結(jié)果的時(shí)候,MosIf 也是運(yùn)行了的,只不過沒有“顯示”出來。給人的感覺似乎并沒有執(zhí)行。
為什么要用MosIf[ ]
首先舉一個(gè)簡(jiǎn)單的例子來說明:我們都知道Joomla!后臺(tái)可以對(duì)某個(gè)模塊或某篇文章設(shè)置其訪問權(quán)限,比方說只讓注冊(cè)會(huì)員看到,而未注冊(cè)訪客看不到。這樣做的好處是可以誘惑訪客注冊(cè)為會(huì)員。但是,如果反過來:我們希望某些文字只展示給未注冊(cè)訪客(含未登錄的會(huì)員),而注冊(cè)會(huì)員在登錄后就看不到—— 這一點(diǎn)Joomla!就做不到!因?yàn)殚_發(fā)人員認(rèn)為很可笑:憑什么未注冊(cè)訪客都能看到的東西,站內(nèi)注冊(cè)會(huì)員卻看不到?他們認(rèn)為不公平!
但是,這種需求與公平無關(guān)。例如,我想在一篇名為《歡迎訪問我的網(wǎng)上家園》的文章中,分別對(duì)未注冊(cè)訪客和會(huì)員問候一下,而且我希望未注冊(cè)訪客看到的文章內(nèi)容是“親愛的訪客朋友…… 點(diǎn)擊此處立即注冊(cè)…… 如果您已經(jīng)注冊(cè),請(qǐng)點(diǎn)擊此處登錄”,而已注冊(cè)會(huì)員在登錄后看到的是“親愛的會(huì)員…… 感謝您在本站注冊(cè)”。也就是說,會(huì)員在登錄后完全看不到給訪客顯示的文字。遺憾的是,Joomla! 本身不具備這個(gè)能力——除非你準(zhǔn)備兩篇內(nèi)容不同的文章,但是這樣就背離了我們的初衷:文章的數(shù)量增加了,而且URL也不同。
如果啟用了 MosIf 就很容易做到:這個(gè)觸發(fā)器可以基于用戶類型(訪客、會(huì)員、管理員等等)而顯示指定的文字。例如,用mosif 來完成上面的任務(wù),其代碼就是:
{mosif usertype=registered}親愛的會(huì)員{else}親愛的訪客朋友{endif}:
上面一段代碼執(zhí)行后的結(jié)果就是會(huì)員和訪客看到不同內(nèi)容的問候語。
用MosIf能干什么[ ]
這個(gè)條件觸發(fā)器(Conditional Mambot)支持的條件可不止一種,條件還可以是:用戶名、文章作者、瀏覽器版本、日期、時(shí)間、星期、瀏覽器語言、IP 地址,甚至是 cookie !
例如,我們顯示一段文字,只允許會(huì)員 batman 看到:
{mosif username=batman}親愛的batman{else}陌生人{(lán)endif},您好?。?
至于其他條件的應(yīng)用,大家參看安裝包中的 readme_cn.txt 文件。
在最新的 1.11 版本中,軟件作者 Martin Larsen 還增加了“嵌套”功能。即,在MosIf 語句中可以嵌套另一個(gè) MosIf 條件,而且嵌套曾數(shù)不限。唯一要注意的是:為了避免代碼混淆,每一層必須設(shè)定一個(gè)識(shí)別標(biāo)志。
舉例來說,我們剛才問候了 batman ,這次我們搞復(fù)雜一點(diǎn):我們判斷時(shí)間是否已過23:00 ,如果過了就提醒他休息,如果沒過,就說點(diǎn)別的;同時(shí)對(duì)于陌生人也作出提醒:
{mosif username=batman}親愛的batman 時(shí)間 {mosif.a time gt 23}很晚了{(lán)else.a}還不算晚{endif.a}{else}陌生人{(lán)endif},您還在網(wǎng)上流浪嗎?
可以看出,這是嵌套了兩層 MosIf,內(nèi)層的增加了一個(gè) .a 的識(shí)別標(biāo)志。那么 gt 又是什么?這表示 Greater Than,即“大于”(>)。這是 MosIf 允許的“運(yùn)算符”。
MosIf用法[ ]
MosIf 的語法是:
{mosif <參數(shù)><運(yùn)算符><列表>}some content{else}other content{endif}
<參數(shù)> 包括:username | usergroup | usertype | ip | language | cookie_<name> | author | browser | date | time | datetime | weekday
<運(yùn)算符> 包括:> | < | = | != (分別代表“大于”、“小于”“等于”和“不等于”),其中前兩個(gè)還可以寫作 gt (greater than)和 lt (less than)。
<列表> 表示參數(shù)值可以是多個(gè),互相用英文逗號(hào)分隔。例如,我們希望 batman 、spider 和 superman 三個(gè)會(huì)員看到同樣一段文字,而其他人看不到,就可以寫成:
{mosif username=batman, spider, superman}bla bla bla {else} heyihayo {endif}
另外,MosIf 還支持使用通配符(Wildcard),同樣的,? 表示任意一個(gè)字符,* 表示任意數(shù)量的任意字符。例如,username=john* 就表示以 john 開頭的所有會(huì)員。
通配符可以用來描述IP地址段。例如,我們只允許特定IP范圍的訪客看到某些內(nèi)容:
{mosif ip=10.0.0.?}這段文字僅對(duì)網(wǎng)絡(luò)地址范圍 10.0.0.0-10.0.0.9 的用戶可見{endif}
由于?表示任意一個(gè)字符,因此只能是 0 至 9;假如使用*,則表示 0 至 255。
幾點(diǎn)注意事項(xiàng):
- MosIf 標(biāo)記可以跨越多行。
- 條件及名稱是區(qū)分大小寫的。
- 您可以在逗號(hào)(commas)及等于號(hào)(equal sign)之前或之后添加空格以便于識(shí)別。
最后,提醒一下:當(dāng)網(wǎng)站啟用了 PDF 按鈕,顯示文章的 PDF 格式時(shí),MosIf 觸發(fā)器不能生效。如果您希望 mosIf 在 PDF 視圖下生效,你必須上傳 Martin 修改過的 pdf.php 文件(此文件在安裝包內(nèi))到服務(wù)器上,放置到 /includes 目錄,覆蓋Joomla! 原有的同名文件。
參考來源[ ]
http://www.joomlagate.com/article/joomla10-tutorial/mosif-execute-joomla-command-on-conditions/