上(shàng)下文

系統生成頁面時(shí)将根據上(shàng)下文來(lái)解析 STL 标簽,例如,内容模闆中使用标簽 <stl:content type="title"></stl:content> 獲取内容的(de)标題,系統在(zài)解析這(zhè)段代碼的(de)時(shí)候會使用當前内容作爲(wéi / wèi)上(shàng)下文,從而(ér)解析出(chū)正确的(de)數據。

通常,根據默認的(de)上(shàng)下文能獲取到(dào)正确的(de)結果,但有些情況下,需要(yào / yāo)通過屬性重新定義上(shàng)下文。例如,我們希望在(zài)内容中獲取欄目名稱,可以(yǐ)使用标簽 <stl:channel type="title"></stl:channel> 獲得數據,但如果我們希望顯示的(de)不(bù)是(shì)内容所屬的(de)欄目名稱,而(ér)是(shì)特定的(de)欄目名稱時(shí),通過默認的(de)上(shàng)下文就(jiù)無法實現了(le/liǎo),這(zhè)時(shí)我們需要(yào / yāo)通過屬性 channelIndex 來(lái)指定欄目:<stl:channel channelIndex="欄目索引" type="title"></stl:channel>

我們可以(yǐ)通過屬性來(lái)指定上(shàng)下文,也(yě)可以(yǐ)通過容器标簽來(lái)指定上(shàng)下文,我們甚至能通過站點标簽在(zài)切換站點;同時(shí)我們還可以(yǐ)通過條件判斷标簽來(lái)獲取當前所處的(de)上(shàng)下文,下面分别進行說(shuō)明。

切換上(shàng)下文

channelIndex 欄目索引

欄目索引是(shì)一(yī / yì /yí)個(gè)站點中欄目的(de)标識,具有唯一(yī / yì /yí)性。

如果設置了(le/liǎo) channelIndex 屬性,系統将尋找對應索引的(de)欄目并将上(shàng)下文切換到(dào)此欄目。

<!-- 鏈接到(dào)首頁 -->
<stl:a channelIndex="首頁"></stl:a>
1
2

channelName 欄目名稱

欄目名稱可以(yǐ)重複,所以(yǐ)應該盡量避免使用欄目名稱來(lái)切換上(shàng)下文,但是(shì)如果 channelName 與 channelIndex 屬性配合使用,系統将首先定位到(dào) channelIndex 索引所在(zài)的(de)欄目,之(zhī)後再尋找此欄目下欄目名稱爲(wéi / wèi) channelName 的(de)欄目。

<!-- 鏈接到(dào)當前欄目下的(de)名稱爲(wéi / wèi)“欄目名稱”的(de)欄目 -->
<stl:a channelName="欄目名稱"></stl:a>
1
2
<!-- 鏈接到(dào)“欄目索引”下的(de)名稱爲(wéi / wèi)“欄目名稱”的(de)欄目 -->
<stl:a channelIndex="欄目索引" channelName="欄目名稱"></stl:a>
1
2

parent 父欄目

将上(shàng)下文切換到(dào)當前欄目的(de)上(shàng)一(yī / yì /yí)級欄目。

  • "true" 表示切換到(dào)當前欄目的(de)上(shàng)一(yī / yì /yí)級欄目,等價于(yú) upLevel="1"。
  • "false" 表示不(bù)切換到(dào)當前欄目的(de)上(shàng)一(yī / yì /yí)級欄目。

如果同時(shí)設置了(le/liǎo) parent 以(yǐ)及 channelIndex 屬性,系統将首先定位到(dào) channelIndex 欄目索引所在(zài)的(de)欄目,之(zhī)後再切換到(dào)對應欄目的(de)上(shàng)級欄目。

<!-- 鏈接到(dào)當前欄目的(de)上(shàng)一(yī / yì /yí)級欄目 -->
<stl:a parent="true"></stl:a>
1
2

upLevel 上(shàng) N 級欄目

切換到(dào)上(shàng)級欄目,1 爲(wéi / wèi)上(shàng)一(yī / yì /yí)級欄目,2 爲(wéi / wèi)上(shàng)兩級欄目,以(yǐ)此類推。

如果同時(shí)設置了(le/liǎo) upLevel 以(yǐ)及 channelIndex 屬性,系統将首先定位到(dào) channelIndex 欄目索引所在(zài)的(de)欄目,之(zhī)後再切換到(dào)對應欄目的(de)上(shàng) N 級欄目。

<!-- 鏈接到(dào)當前欄目的(de)上(shàng)兩級欄目 -->
<stl:a upLevel="2"></stl:a>
1
2

topLevel 第 N 級欄目

切換到(dào)從首頁向下第 N 個(gè)級别的(de)欄目,0 代表切換到(dào)首頁,1 代表一(yī / yì /yí)級欄目,2 代表二級欄目,以(yǐ)此類推。

<!-- 鏈接到(dào)一(yī / yì /yí)級欄目 -->
<stl:a topLevel="1"></stl:a>
1
2

context 列表上(shàng)下文

通常如果标簽被嵌套在(zài)列表元素中時(shí),系統會設置上(shàng)下文爲(wéi / wèi)當前的(de)列表類型,同時(shí)對标簽進行解析時(shí)也(yě)将根據列表類型進行判斷,如将 <stl:a></stl:a> 放到(dào)内容列表以(yǐ)及欄目列表中時(shí),stl:a 标簽的(de)鏈接會分别顯示内容的(de)連接以(yǐ)及欄目的(de)連接。

如果希望<stl:a></stl:a>标簽無論在(zài)内容列表還是(shì)欄目列表都隻顯示欄目鏈接,可以(yǐ)設置 context 屬性爲(wéi / wèi) Channel:<stl:a context="channel"></stl:a>

  • "default" 默認,即當前所處上(shàng)下文。
  • "content" 内容上(shàng)下文。
  • "channel" 欄目上(shàng)下文。
  • "sqlContent" Sql 内容上(shàng)下文。
  • "Special" 專題上(shàng)下文
  • "site" 站點上(shàng)下文。
<!-- 分别顯示欄目與内容鏈接 -->
<stl:channels>
  <stl:contents>
    欄目:<stl:a context="channel"></stl:a>
    内容:<stl:a></stl:a>
  </stl:contents>
</stl:channels>
1
2
3
4
5
6
7

通過容器指定上(shàng)下文

如果希望一(yī / yì /yí)段代碼無論放到(dào)什麽位置,都解析爲(wéi / wèi)同樣的(de)結果,可以(yǐ)使用 <stl:container>将這(zhè)段代碼嵌套進來(lái)并設置屬性指定的(de)上(shàng)下文。請參考:<stl:container> 容器元素

<stl:container channelIndex="欄目索引">
  欄目:<stl:channel type="title"></stl:channel>
  此欄目下的(de)内容:
  <stl:contents>
    <stl:a></stl:a>
  </stl:contents>
</stl:container>
1
2
3
4
5
6
7

切換網站

如果在(zài)本站點的(de)模闆中顯示其他(tā)站點的(de)數據,可以(yǐ)通過<stl:site> 元素切換站點,此元素中嵌套的(de)标簽都将解析爲(wéi / wèi)指定站點的(de)數據。請參考:<stl:site> 站點元素

<stl:site siteDir="MySite">
  ...
</stl:site>
1
2
3

判斷上(shàng)下文

如果希望對上(shàng)下文進行判斷,從而(ér)使用不(bù)同的(de)标簽,可以(yǐ)通過<stl:if> 元素判斷上(shàng)下文,根據判斷結果嵌套不(bù)同的(de)标簽。請參考:<stl:if> 判斷元素

判斷當前欄目名稱是(shì)否爲(wéi / wèi)"欄目名稱"

<stl:if type="ChannelName" op="Equals" value="欄目名稱">
  <stl:yes> <p>true</p> </stl:yes>
  <stl:no> <p>false</p> </stl:no>
</stl:if>
1
2
3
4

根據模闆類型顯示不(bù)同内容

下面的(de)例子(zǐ)判斷當前模闆是(shì)不(bù)是(shì)内容模闆。

<stl:if type="TemplateType" op="Equals" value="ContentTemplate">
  <stl:yes>
      這(zhè)是(shì)内容頁面
  </stl:yes>
  <stl:no>
      這(zhè)不(bù)是(shì)内容頁面
  </stl:no>
</stl:if>
1
2
3
4
5
6
7
8

根據模闆名稱顯示不(bù)同内容

下面的(de)例子(zǐ)根據當前模闆的(de)模闆名稱顯示不(bù)同的(de)内容。

<stl:if type="TemplateName" op="Equals" value="系統首頁模闆">
  <stl:yes>
      <li><A href="/" class="current">首 頁</A></li>
  </stl:yes>
  <stl:no>
      <li>我不(bù)是(shì)首頁</li>
  </stl:no>
</stl:if>
1
2
3
4
5
6
7
8