Difference between revisions of "DPL:FAQ"

From FollowTheScore
Jump to: navigation, search
(Using multiple categories with phantom template)
Line 331: Line 331:
 
}}
 
}}
 
</nowiki></pre>
 
</nowiki></pre>
 +
 +
:I think your problem lies in the pipe symbol. If you use the parser function syntax like you did in your first query the mediawiki parser will grab each '|' and will think it found the beginning of a new parameter. Try to escape the | by using <tt><nowiki>{{!}}</nowiki></tt> and you probably will get the correct result. Apart from that problem I wonder why you don´t get an error message. I think I will have a look at that.  [[User:Gero|Gero]] 19:48, 15 October 2007 (CEST)

Revision as of 18:48, 15 October 2007

My article name contains underscores, but in the DPL result they won´t appear.

Normally, DPL replaces all undercores in article names by spaces when showing the result. You can replace underscores by their symbolic html name via the 'replaceintitle' statement. So DPL will no longer recognize the underscores and later the html engine will translate the symbolic name to underscores.

This wiki contains an Article_with_underscore. Normally DPL would show it as . But with {{#dpl:titlematch=%underscore|replaceintitle=/ /,&#95;}} you will get

When I use multi-column output my background color is cluttered

There is a special parameter named rowcolformat which allows to set the background color, cell-spacing etc. in combinaton with 'columns=' or 'rows='. See also DPL:Requests_for_new_features_Archive#Global background-color.

When I write a "What links here" DPL query, redirections are ignored

Say you have an Article A1 which links to B and an Article A2 which links to B2. But B2 is redirected to B.

{{#Wgraph: name=FAQ1 | png | thumb=50 |

 node A1 {color=green}
 node A2 {color=green}
 node B  {color=red}
 node B2 {color yellow}
 edge A1 B {}
 edge A2 B2 {}
 edge B2 B {label = #REDIRECT }
 orientation = left_to_right

}}

A standard DPL query using

linksto = B

will only deliver Article A1 because the default is to ignore #redirects.

redirects = include
linksto = B

will give you Article A1 and B2 as B2 redirects to B. But this may not be what you want. You still won´t get A2 as it links to B2 and not to B. The trick is to get the direct links to B in the normal way and to use a nested subquery which finds the pages which link to pages that redirect to B. We write the query in a way that it accepts the name of the target page (B) as a parameter:

Template:LinksToWithRedirect
----------------------------
 {{#dpl:
  |linksto={{{1}}}
 }}
 {{#dpl:
  |linksto={{{1}}}
  |redirects=only
  |format=,²{LinksTo¦%PAGE%}²,
 }}

Template:LinksTo
----------------
 {{#dpl:
   |debug=1
   |linksto={{{1}}}
   |format=,*[[%PAGE%¦%TITLE%]]\n,
 }}

Now calling {{LinksToWithRedirect|B}} will return A1 and A2.


Getting pages with references to templates with particular parameters

With DPL you can find all pages which use a certain template. You can specify that you only want to see those articles where a ceratin parameter of that template has a certain value. You can even allow for a group of values if you use the power of regular expression as the following examples shows:

Let's say that your company uses a wiki to assign and keep track of tasks. So, let's say that you have created a todo template which, as a parameter, takes the name, username, or some other semblance of a name of a person responsible for the task. If you now want to see the tasks which have been assigned to a given person you could use something like

<dpl>
    uses        = Template:Todo2
    include     = {Todo2}:1,{Todo2}:2
    includematch= /\|(Sam Brown)|(Brown)|(SBrown)/i
    table       = ,,Person,Task
</dpl>

which produces

Content page Person Task
Todotest1 Brown, Sam To be done by Brown, Sam
Todotest2 Sam Brown To be done by Sam Brown
Todotest3 SBrown have to do what it says by SBrown

Note that the "i" makes the regexp case insensitive, so 'sbrown' would also match.

Inserting spaces and comma in the output

Just use the numeric html alias for comma: &#44;; you may want to have a space after that 'comma', so line wrapping will work normally:

{{#dpl:category=MyItems|listseparators=,[[%PAGE%|%TITLE%]]&#44; ,,}}

I want the article list separated by comma

There is a mode called 'inline' which does what you want.

mode=inline
inlinetext=,&nbsp;

This will give something like Nig1Nig2Nig3Nig4

Why does my deleted page still appear on Special:Wantedpages?

When a page is categorized such that it appears in a DPL query and is subsequently deleted, it will immediately disappear from the DPL query results. However, depending on how long the page has been around, it will temporarily still appear on Special:Wantedpages and navigating to the page's What Links Here page will still show the DPL query page as a page that links to it.

To get it to stop that unruly behavior, do one of the following:

  • Wait awhile (an hour or so). The wiki will sort this out over time in a background process.
  • Execute 'php runJobs.php' in the maintenance folder of your MediaWiki installation
  • Open the DPL query page in edit mode and save it again (this will add to your Recent Changes page)
  • Add reset=all in a final DPL query on the query page (see here.) This has other side effects - read about it first.

Why does my deleted page still have a link to a query page in its What Links Here list?

The answer to this is already in the previous section, but we wanted you to be able to find your question anyway.

How do I 'see' the wikitext my DPL generates?

There is a simple trick to DEBUG your DPL script:

Use a resultsheader and a resultsfooter to enclose all DPL output in pre and nowiki tags like this:

<dpl>
  ...
  resultsheader=<pre><nowiki>
  resultsfooter=</nowiki></pre>
  ...
</dpl>

NOTE: since version 1.4.2 you can also use the debug parameter. Just set "debug=5" in your DPL!

How do I offset an ordered list by a certain number?

Use the format statement and define an offset for the list:

<dpl>
  category=Fictitious country
  format=<ol start="4">,<li>%PAGE%</li>,\n,</ol>
</dpl>
  1. DPL Example 007 main page 1
  2. Nigunda
  3. Nigunda Test
  4. Somango

Can DPL improve the MediaWiki search dialogue?

You can use DPL to show a list of files which match the search expression.

You could change your Mediawiki:Noexactmatch template as follows:

  '''There is no page titled "$1".''' You can [[:$1|create this page]].
  <dpl>
    debug=1
    resultsheader=    ''There are some pages similar to '$1':''\n
    titlematch=%$1%
    ignorecase=yes
  </dpl>

As an example enter 'rep' into the searchbox of this wiki and watch the response page.

How do I create tabular output?

The answer is (surprisingly) quite simple. There are a several of different methods depending on the data you want. Example A) and B) below return page 'meta-data'. Example C) below returns data on the page itself, either from within specific page sections or from templates used on the page.

A) A table of page meta-data;

The 'parser function' syntax of the DPL ({{#dpl:...) gives the cleanest looking code, and is used below for that reason. However, the regular <DPL> syntax works in an identical way but with different layout.

{{#dpl:
  |category       = Country
  |count          = 10
  |mode           = userformat
  |addauthor      = true
  |addpagesize    = true
  |addpagecounter = true
  |addfirstcategorydate = true
  |userdateformat       = d-m-Y
  |listseparators = 
    {¦ class="sortable"
      \n! 
      \n! Date
      \n! Name
      \n! Author
      \n! Views
      \n! Size
    \n¦-,
      \n¦ align="right" ¦ %NR%
      \n¦ align="right" ¦ %DATE%
      \n¦ align="left"  ¦ [[%PAGE%]]
      \n¦ align="left"  ¦ [[User:%USER%¦%USER%]]
      \n¦ align="right" ¦ %COUNT%
      \n¦ align="right" ¦ %SIZE% B,
    \n¦-\n,
    ¦}
}}

Gives;

Date Name Author Views Size
1 02-09-2007 Nig1 Gero  %COUNT% 166 B
2 02-09-2007 Nig2 Gero  %COUNT% 166 B
3 02-09-2007 Nig3 67.41.66.71  %COUNT% 174 B
4 03-09-2007 Nig4 67.41.66.71  %COUNT% 198 B
5 05-09-2007 Category:CountryA 67.41.66.71  %COUNT% 301 B
6 05-09-2007 Category:CountryB 67.41.66.71  %COUNT% 301 B

The key to understanding how this works is;

  1. understand DPL basics (link?),
  2. understand table syntax, and
  3. understand the listseparators parameter.

Once you understand these things you will understand the above DPL.

B) The same table of page meta-data using the 'table' parameter;

I wish I knew how to do this...

The 'table' parameter is designed to create tabular output for elements which come from an include statement. So you would have to use a surrogate template ('phantom template') which could use the %variables%. But this works only if there exists a template which each of your article uses exactly once. So, normally you will have to use the approach shown above .
Gero 15:45, 18 September 2007 (CEST)
Can you show us how would it would look? (Assuming we had a template that was used in each page exactly once). --Dmb 21:29, 20 September 2007 (CEST)

C) A table of page section or template data;

See Test table.

I try to generate table formatting with DPL but it looks weird - to hell with the syntax!

Indeed, complex queries can be somewhat tricky. But this is not only a problem of DPL. MediaWiki is quite sensitive to blanks and linefeeds and half of your problems will probably come from there.

There is a simple trick how you can DEBUG your DPL script:

Use a resultsheader and a resultsfooter to enclose all DPL output in pre/nowiki tags like this:

<dpl>
  resultsheader=<pre><nowiki>
  resultsfooter=</nowiki></pre>
  titlematch=Nig%
  include=%1[300]
  format={|class=wikitable\n!article\n!beginning\n|-,\n[[%PAGE%|%TITLE%\n,\n,\n|}
</dpl>

You can also simply set debug=5 to achieve the same effect.

If we execute the above query (without the debug header/footer) the result will be deeply unsatisfactory:

[[Nig1|Nig1 [[Nig2|Nig2 [[Nig3|Nig3 [[Nig4|Nig4 [[Nigunda Test|Nigunda Test Nigunda Test History - Chapter Sequence in the article doesn´t matter for DPL .. [[Nigunda|Nigunda some facts about religious groups in Nigunda; some other facts about religious groups in Nigunda;[[Nigeria|Nigeria
Main article: History of Nigeria
See also: Nigerian military juntas of 1966-1979 and 1983-1998
More than 2,000 years ago. the Nok..→
article beginning

But why?


With our little trick we can watch the output of DPL which would normally be immediately rendered by the wiki parser:

{{Extension DPL}}{|class=wikitable
!article
!beginning
|-
[[Nig1|Nig1]]


[[Nig2|Nig2]]


[[Nig3|Nig3]]


[[Nig4|Nig4]]


[[Nigunda Test|Nigunda Test]]

Nigunda Test History - Chapter  Sequence in the article doesn´t matter for DPL ..


[[Nigunda|Nigunda]]

some facts about religious groups in Nigunda; some other facts about religious groups in Nigunda;


[[Category:Tag_Event2]]

[[Nigeria|Nigeria]]

:<div class="noprint">''Main article: [[History of Nigeria|History of Nigeria]]''</div>
:<span class="boilerplate seealso">''See also: [[:Nigerian military juntas of 1966-1979 and 1983-1998|Nigerian military juntas of 1966-1979 and 1983-1998]]''</span>
More than 2,000 years ago. the [[Nok]]  [[Nigeria#History|..→]]

|}

And now we see: After the |- the next table row does not start with a '|'; and, apart from that, there is no "end of row" after each article. Now it is easy to correct the DPL query:

<dpl>
  titlematch=Nig%
  include=%1[300]
  format={|class=wikitable\n!article\n!beginning\n|-,\n|\n[[%PAGE%|%TITLE%]],\n|-,\n|}
  secseparators=\n|\n,
</dpl>

.. and we get the desired result:

article beginning

Nig1

Nig2

Nig3

Nig4

Nigunda Test

Nigunda Test History - Chapter Sequence in the article doesn´t matter for DPL ..

Nigunda

some facts about religious groups in Nigunda; some other facts about religious groups in Nigunda;

Nigeria

Main article: History of Nigeria
See also: Nigerian military juntas of 1966-1979 and 1983-1998

More than 2,000 years ago. the Nok ..→


In our "debugger" it looks like this:

{{Extension DPL}}{|class=wikitable
!article
!beginning
|-
|
[[Nig1|Nig1]]
|
|-
|
[[Nig2|Nig2]]
|
|-
|
[[Nig3|Nig3]]
|
|-
|
[[Nig4|Nig4]]
|
|-
|
[[Nigunda Test|Nigunda Test]]
|
Nigunda Test History - Chapter  Sequence in the article doesn´t matter for DPL ..

|-
|
[[Nigunda|Nigunda]]
|
some facts about religious groups in Nigunda; some other facts about religious groups in Nigunda;


[[Category:Tag_Event2]]
|-
|
[[Nigeria|Nigeria]]
|
:<div class="noprint">''Main article: [[History of Nigeria|History of Nigeria]]''</div>
:<span class="boilerplate seealso">''See also: [[:Nigerian military juntas of 1966-1979 and 1983-1998|Nigerian military juntas of 1966-1979 and 1983-1998]]''</span>
More than 2,000 years ago. the [[Nok]]  [[Nigeria#History|..→]]
|-
|}

Where can I talk about DPL?

Try here;

Using multiple categories with phantom template

I am absolutely indebted to the work on DPL. I pulled my hair out for 2 days trying to figure out a way to do this. One thing I can't figure out is using a phantom template with multiple categories separated by | will only return results from the category listed first. I have:

{{#dpl:
|category=Maintenance 2007 Week 41|Maintenance 2007 Week 42
|include={Infobox Maintenance}:date:start:end:page
|count=8
|table=class=maint,-,Date,Start,End,Title
}}

It only will display the output (correctly - date, start, end, page) from whichever category I list first, although it does it correctly. Is there anything I can do to fix this?

Here is one of my call to Infobox Maintenance in Category:Maintenance 2007 Week 42

{{Infobox Maintenance
|title=Scheduled Maintenance on hosting environment
|date=10/17/2007
|start=4:00 AM
|end=8:00 AM
|description=blablah
}}
I think your problem lies in the pipe symbol. If you use the parser function syntax like you did in your first query the mediawiki parser will grab each '|' and will think it found the beginning of a new parameter. Try to escape the | by using {{!}} and you probably will get the correct result. Apart from that problem I wonder why you don´t get an error message. I think I will have a look at that. Gero 19:48, 15 October 2007 (CEST)