Template talk:Hgame

From Hgames Wiki
Revision as of 20:15, 24 March 2014 by Hmoeller (talk | contribs) (WTF)

Jump to: navigation, search

WTF

I peeked at the template and noticed multiple duplications of this code: {{#ifeq: {{{game|{{#titleparts: {{FULLPAGENAME}}|1}}}}}|{{#titleparts: {{FULLPAGENAME}}|1}}|{{#titleparts: {{FULLPAGENAME}}|1}}|{{{game}}}}}

The same with better readability

{{#ifeq: {{{game|{{#titleparts: {{FULLPAGENAME}}|1}}}}}
       | {{#titleparts: {{FULLPAGENAME}}|1}}
       | {{#titleparts: {{FULLPAGENAME}}|1}}
       | {{{game}}}
}}

So, it checks if the value of game is equal to the first part of fullpagename.

  • if yes, it prints the first part of fullpagename
  • if no, it prints the value of game

It prints a string equal to game in any case. I'm going to poke around the template a bit to get a better idea what's going on. - Loliturma (talk) 09:11, 24 March 2014 (UTC)

The reason for that is to enable the template to guess it's game in a subpaged structure, so the game= parameter is no longer needed when using subpages - without breaking compatibility with the "classic" page structure of older games. The target is to reduce the number of parameters to the template and make the template more "smart". --hmoeller [ Talk - Contribs ] 10:33, 24 March 2014 (UTC)
Ahhh, now I get the idea. However, the code did not do that: It doesn't work if the game parameter is unspecified. I guess the equal / not equal options were accidentally set backwards? Anyways, it could be simplified to {{#if:{{{game|}}}|{{{game}}}|{{#titleparts:{{FULLPAGENAME}}|1}}}}
human-readable version

{{#if: {{{game|}}}
  | {{{game}}}
  | {{#titleparts: {{FULLPAGENAME}}|1}}
}}
That would print game's value if it is specified, otherwise it will print the first part of fullpagename. Is that what it should do? - Loliturma (talk) 11:28, 24 March 2014 (UTC)
Forgot to mention: in case you need to duplicate a parserfunction in multiple places, it might be a good idea to place it into a template of its own, (eg. {{GetGameName}} or something) to simplify things. - Loliturma (talk) 11:39, 24 March 2014 (UTC)
In fact, a simple {{{game|{{#titleparts: {{FULLPAGENAME}}|1}}}}} should do the trick. I'll check it on my testwiki. For the human-readable versions: those may mess with the spacing of e.g. lists, so beware --hmoeller [ Talk - Contribs ] 11:47, 24 March 2014 (UTC)
Good point! I am not familiar with magic words inside parserfunctions inside parameter default values, but it definitely should work. Also, all normal whitespaces inside parserfunctions are ignored unless they're part of input/output strings.
That's {{
              
     #if:            
            
                   string                
          
             
       
               |                     true                         |           false                    
       
         
               }}.
Even something silly like this would print "That's true." so there's no need worry about breaking page formatting with parserfunctions! Just check where they begin/end. - Loliturma (talk) 16:09, 24 March 2014 (UTC)
Not entirely true. Check this list:
# First
# Second
# Third
# Fourth
  1. First
  2. Second
  3. Third
  4. Fourth
Compate with that one:
# First
{{#ifeq: 1 | 2 | * Second |}}
# Third
# Fourth
  1. First
  1. Third
  2. Fourth
If you look very closely, the distance between "First" and "Third" is slightly larger than between "Third" and "Fourth", because theres an {{#ifeq: 1 | 2 | * Second |}} in it on a line by itself - not rendered, as 1 is not equal to 2. Also, you see that the numbering starts again. This is because the function on its own line ends the list, and a new one is started. Now the same rewritten a bit:
# First{{#ifeq: 1 | 2 |
# Second |}}
# Third
# Fourth
  1. First
  2. Third
  3. Fourth
Same function in it, but starts directly after "First", in the same line and therefore does not end the list and starts it again. Spacing is now correct. So that is why I keep my ParserFunction code in lists as tight as possible. --hmoeller [ Talk - Contribs ] 19:13, 24 March 2014 (UTC)

Renaming the navigation

Can't we make a new template for navigation? At the moment we use Template:{{{game}}}} for the navigation contents, but my Idea is to use a new template Template:{{{game}}}Nav for the links. That would allow us to use the template with the game name e.g. @HomeMate as it was intended: We can put Template:Hgame with its parameters and even additional modivications if required on Template:*game* and use it on the game pages. I think this would be more simple then it is now. --trololove (talk) 11:51, 24 March 2014 (UTC)

Indeed that would make it much easier for other contributors to add game pages. I'd say we use
{{#ifexist: Template:{{{game|{{#titleparts:{{FULLPAGENAME}}|1}}}}}Nav 
                   | {{{game|{{#titleparts:{{FULLPAGENAME}}|1}}}}}Nav 
                   | {{{game|{{#titleparts:{{FULLPAGENAME}}|1}}}}} 
}}
so the template will pick {{{game}}}Nav if it exist, {{{game}}} if not. --hmoeller [ Talk - Contribs ] 12:48, 24 March 2014 (UTC)
Ok, I'll add the code --trololove (talk) 15:06, 24 March 2014 (UTC)
Well, after multiple attempts I finally managed to insert your code WITHOUT braking the template :) --trololove (talk) 16:00, 24 March 2014 (UTC)
Sorry if any of my changes made the template source harder to understand, I had the opposite intention. I'll stop messing with it. - Loliturma (talk) 16:15, 24 March 2014 (UTC)