Mediawiki: Same section with multiple names (section aliases/synonyms)

若如初见. 提交于 2019-12-24 08:38:46

问题


Is it possible to give the same section multiple names in mediawiki out-of-the-box (vastly preferred), or do I need to write my own hook/extension/plugin (and if so, tips on how to do so much appreciated)?

In my case, I have example code on single compilation page that I want to link to for multiple individual articles by the name of each article. For instance, I would like something like the following the work.

Page: Interrupts Code Examples

===(EIMSK|EICRA)===
void interrupt01_init(void)                                                     
 {                                                                               
   EICRA = 0X0F; // in binary, 1111. That is, the rising edge of INT1 and INT0 generate an interrupt request. 
   EIMSK = 0X03; // in binary, 0011. Enables INT0 and INT1 interrupts.                           
 }

and both of the following would link to the same section, but with the appropriate name for each page:

Page: EICRA:

[[Interrupts Code Examples#{{PAGENAME}}]]

Page: EIMSK:

[[Interrupts Code Examples#{{PAGENAME}}]]

For full context, see example page http://narwhaledu.com/AVRwiki/index.php?title=PCMSK0.

It's possible I could use something like mediawiki: is there a way to automatically create redirect pages that redirect to the current page?, but is it possible to write it for sections instead of pages? Also, although acceptable, I would prefer not to have the allowed aliases be ALL the sections on a page; for instance, on http://narwhaledu.com/AVRwiki/index.php?title=Interrupts_Code_Examples, I have an "about" section.

Edit: If it wasn't clear, ideally the when the user visits

Page: Interrupts Code Examples#PAGENAME

they see a properly populated section title, instead of "EIMSK or EICRA Example Code" (since there can be a LOT of aliases to a code example)

==={{{PAGENAME}}}===
void interrupt01_init(void)                                                     
 {                                                                               
   EICRA = 0X0F; // in binary, 1111. That is, the rising edge of INT1 and INT0 generate an interrupt request. 
   EIMSK = 0X03; // in binary, 0011. Enables INT0 and INT1 interrupts.                           
 }

I can get transclusion to work but not links.

Page: Template:Interrupts Code Examples

=={{#ifexist: {{{pagename}}} | [[{{{pagename}}}]] | External Interrupts Example Code One}}==
{{Template:ExampleCode~PCMSK0, PCMSK1, PCMSK2, PCICR, PCINT0_vect, PCINT1_vect}}

My ideal syntax would be

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

but obviously this produces instead a link to the nonexistant page pagename=Name_of_Register instead of linking to Interrupts Code Examples and passing the parameter {{PAGENAME}} such that I can reference it in Interrupts Code Examples with {{{pagename}}} and thereby generate my section header..

This would keep the compilation page clean (only have two code examples instead of copying each one 5x for each alias, my current solution), but I can only pass parameters to the template if I transclude, not if I link to the template, I believe. Is this true?

I may just use the "Example Code One" catchall for wiki markup readability in the end since this is starting to break my brain...


回答1:


Any HTML anchor will work as a section link. So, if you have <span id="foo">, you can use [[Bla#foo]] to jump to the span. You'll need one HTML element per ID, but that's still workable I think.



来源:https://stackoverflow.com/questions/21085676/mediawiki-same-section-with-multiple-names-section-aliases-synonyms

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!