2014-01-13 104 views
0

以下是Wiki語法挑戰!Mediawiki:在鏈接中,將參數傳遞給模板mediawiki,不包含

既然問Mediawiki: Same section with multiple names (section aliases/synonyms),我已經開發了更具體的查詢,因爲我覺得我更接近我的作品它想要的方式解決:

我想,在一個鏈接,傳遞參數添加到模板中,而不會覆蓋整篇文章。

[[ Template:Interrupts Code Examples|pagename={{PAGENAME}} ]] 

除了創建指向名爲pagename=Name_of_page_you're_on的文章的鏈接而不是傳遞參數。

Transcluding的文章,該參數順利通過,但我只想要一個鏈接的參數傳遞給模板。

更多情況下,

使用#ifexists我可以生成時的名字沒有給出默認爲與標題「例一」和「示例二」一節「代碼示例彙編」的頁面,但我也希望他們能夠部分可鏈接和與具體情況取決於從進來的適當的標題顯示:

"EIMSK" and "Example Two" 
"EICRA" and "Example Two" 
"Example One" and "PCMSK0" 
"Example One" and "PCMSK1" 
"Example One" and "PCMSK2" 
"Example One" and "PCICR" 

這是太可怕的令人費解,我應該只是手動編譯這些網頁嗎?這可能嗎?

我目前的解決辦法是讓

"PCMSK0" 
{{example one code}} 
"PCMSK2" 
{{example one code}} 
"EICRA" 
{{example two code}} 
etc. 

這很不理想,因爲隨後的代碼示例頁面的編輯只是一個giant long mess

我願意在PHP中編寫MediaWiki擴展,如果有人可以給我一些psuedocode工作。

+0

不管我多少次閱讀這個問題,我都無法完全理解你想要完成的事情。這個代碼'[[Template:Interrupts Code Examples | pagename = {{PAGENAME}}]]'創建一個鏈接到「pagename = ...」的顯示文本,我不認爲這是你想要的,right ? –

+0

對,我試圖將一個參數(當前頁面名稱)傳遞給模板(中斷代碼示例),從而在名爲(pagename)的模板上生成一段,以便我可以鏈接到它。對不起,目前還不清楚,我想也許我應該手工做,它變得如此複雜!哈。 – orangenarwhals

回答

1

注意:這可能只是部分答案。無論如何,我會發布它,以防它有些用處。

它你只是想用自定義查詢參數鏈接到其他網頁上的維基,使用一個URL data magic wordslocalurlfullurlcanonicalurl等),就像這樣:

[{{fullurl:Target page|pagename={{PAGENAMEE}}}} link text] 

(請注意,使用{{PAGENAMEE}}automatically URL-encode the source page name。)

請注意,生成的鏈接將被MediaWiki視爲外部鏈接,並將按照此格式設置。如果外部鏈接圖標困擾您,則簡單的方法是將鏈接包裝到<span><div>class="plainlinks"

可以將所有這些包裹在模板中,例如,像這樣:

模板:Fancylink

<span class="plainlinks">[{{fullurl:{{{1}}}|pagename={{PAGENAMEE}}}} {{{2|{{{1}}}}}}]</span> 

這樣可以讓你寫你的鏈接爲:

{{fancylink:Target page|link text}} 

對於一個模板類似的例子(儘管有額外的鐘聲並在頂部添加哨子),參見例如Template:Edit on Wikipedia,它鏈接到一個頁面,其中action=edit參數被添加到URL中。

然而,僅此方法將因爲你的鏈接通過URL參數pagename=用於取代{{{pagename}}}目標頁面上。要做到這一點,你可能需要編寫一個自定義的MediaWiki擴展。這應該是可行的,但比在第一頁中創建鏈接涉及的要多得多。


另外,解決這種問題的「常規」鏈接到MediaWiki方式,因爲該組有效的參數值似乎是有限的,是創造,僅僅transcludes共享的每個值一個單獨的頁面模板,是這樣的:

中斷代碼示例PCICR

{{Interrupts Code Example One|interrupt=PCICR}} 

模板:中斷代碼示例一個包含實際示例代碼,可能用{{{interrupt}}}代替中斷名稱(或用於things like {{#switch:...}})在適當的地方。至create the individual pages,如果有很多,可以使用bot或維護腳本importTextFile.phpedit.php