我有一個模板,旨在將內容從另一個名稱空間中的頁面轉換爲主空間;它用於將大量頁面聚合到一個表中。其基本結構是這樣的:有選擇地隱藏MediaWiki中的紅色鏈接
Template:Paget
<div class="plainlinks">
<span style="font-weight:normal; font-size:85%;">[[{{fullurl:{{{1|}}} {{{2|}}}.{{{3|}}}}} {{{2|}}}]]</span> {{#if: {{{blank|}}} | [No text] | {{{{{1|}}} {{{2|}}}.{{{3|}}}}} }}
</div>
所以,當你進入{{paget|page:cod.icon. 393 I|100r|jpg}}
它transcludes的Page:Cod.icon. 393 I 100r.jpg
的內容,並且還帶有一個鏈接回,在新標籤頁中打開該頁面對其進行標註。很簡單。
聚合頁面通常是在所有內容都存在之前構建的,在這種情況下,模板將生成一個紅鏈接代替頁面內容。我想改變這種行爲,以便在沒有頁面存在時它不顯示任何內容。
有三個主要解決方案,{{#ifexist}}
函數,{{#dpl}}
函數和{{#ifeq}}
函數將輸出與一個紅鏈接url進行比較。由於各種原因,所有這些都無法使用,但主要是因爲它們減慢了頁面加載的方式(有時我們會截取成千上萬的一段頁面)。
於是我轉身到CSS的解決方案,並在Mediawiki:Common.css
創造了這個規則:
.hidden-redlink > a.new,
.hidden-redlink a.new {
display: none;
visibility: hidden;
}
然後,我添加了類模板,即<div class="plainlinks hidden-redlink"></div>
。這沒有產生任何結果。我還嘗試在<span class="hidden-redlink"></span>
中包裝transcluded部分,並將該類添加到聚合表本身,但這些也未能產生任何結果。直接用<span style="display:none;"></span>
環繞它隱藏鏈接,但顯然也隱藏了transcluded內容。
我已經改變了CSS規則和類的任務,我可以想到的所有方式,但空出來。我錯過了一些難題嗎?
鏈接到MediaWiki:1.21.2
PHP:5.3.10-1ubuntu3.9(apache2handler)
MySQL的:5.5.29-0ubuntu0.12.04.2
嗯,我可以說'.hidden-redlink a.new'匹配'.hidden-redlink> a.new'的所有內容,這使得'>'選擇器變得冗餘。 – BoltClock