Caution! This is very coding heavy advice, using a lot of technical terms that you encounter in coding. If you have not understood things such as parser functions or wikitext in general yet, please learn more about these functions before you proceed.
DynamicPageLists is an extension that can optionally be enabled on Fandom by Fandom Staff. Typically, this is a generator similar to how one would query datasets in say, SQL. Except here, you can directly query wiki articles and their associated data, to aggregate them in a different way, or combine them into enhancing your articles dynamically and automatically.
To DPL or Not to DPL - Why & When
As mentioned before, DPL is great to help with aggregating things, or including new content that is getting created after the DPL query has been published already.
For a basic idea of what DPL can do, you can take a look at the mechanism that our Community Central request page for interlanguage links is using - DPL allows us to see all new requests (=mediawiki articles) that are created by users with a certain category attached to them in a custom list format. Click here to see the source code.
A good use case is if you want to use DPL to automate content maintenance and create pages that combine modular information.
Let's say you are on a gaming wiki, and you want to combine all descriptions of a certain armor set on a single page, but you don't want to copy paste from each article to avoid having to keep both up to date. Or you are on an anime/tv wiki where you have episode pages with summaries that you want to combine into a season summary page.
DPL can help you automate this, by taking a specific section out of a different article and loading it as if it was written on the page you are using DPL on.
You can see a highly customized example live in action here: https://myheroacademia.fandom.com/wiki/Episodes?action=edit
If you do this though, be considerate about what and how much information you query or intend to render. As the series keeps going, this can start to slow down page loading times and this will have a negative effect on your SEO, so consider a separate overview for each collection purpose. Also, always make sure a new page includes some original text, e.g. an introduction, when you do!
Testing And Serverload Considerations
When trying new things with DPL, always set a low limit of 2-5, using the count
parameter (because it will count until the limit). This allows you to test your changes much faster because less data has to be compiled for rendering as well as prevents you from unintentionally querying thousands of pages at once.
Especially if you go deep into inclusion of article content using the include
parameter, it is strongly advised to test in a limited capacity first.
Do Not Generate Navboxes With DPL
Ready to Try? Simple Queries to Understand and Explore DPL
Two ways to call DPL: <dpl></dpl>
and {{#dpl: }}
. Depending on complexity you might choose one over the other, but we will focus on the parser function version.
First identify what you want to know, e.g. "I want to know what blogs are currently categorized as Advice Pro". You will need to know the type of article you want to get (blog namespace) and how you want to filter it (category).
{{#dpl: |category=Advice Pro |namespace={{ns:500}} }}
becomes
Say, you want to display the 2 latest blog posts on your main page. There's the bloglist function to do that (please use that one instead), but just for showcasing how DPL work, we'll replicate the idea.
{{#dpl: |category=Blog posts <!-- this is the default category for blog posts --> |namespace={{ns:500}} <!-- this is the blog namespace number --> |count=2 }}
becomes
It displays a basic list with the content you wanted.
{{#dpl: |category=Blog posts <!-- this is the default category for blog posts --> |category=Product Updates <!-- attention: you need to make sure the case is correct! it will not work with "product updates" --> |namespace={{ns:500}} <!-- this is the blog namespace number --> |count=2 }}
becomes
{{#dpl: |category=DEI¦Program Updates <!-- either DEI OR Program updates --> |namespace={{ns:500}} <!-- this is the blog namespace number --> |count=4 }}
becomes
- User blog:Idekmandy/Featuring Final Girls on the Final Day of Women's History Month
- User blog:Itsjieyang/Women's History Month Fandom Gaming Stories: Miranda Phaal and Tiffany Tse
- User blog:Itsjieyang/Women's History Month Fandom Gaming Stories: Minnichi and LucyKuranSKYDOME
- User blog:Itsjieyang/Women's History Month Fandom Gaming Stories: RinasaurusRex and Jessica Howard
But wait, what was that weird ¦ symbol just now? That is where the different methods of using the tag or the parser function come into play. To say OR, you need to use a vertical slash | - but because in a parser function this is used to indicate a new parameter, you can't do that. This is why you are using something called a "broken pipe" - ¦ - which serves the exact same purpose but isn't indicating a new parameter to the parser function.
This is just a very general overlook at DPL - there is so much more you can explore and dive into in our help documentation around DPL: Help:DPL3/Parameters:_Criteria_for_page_selection
We hope that this advice gives you a first idea of how you could use DPL to enhance your wiki, the general idea of how it works, and where to start from!
Becoming A Pro: Technical Matters