Replace list of pages in a Category by a semantic query

From semantic-mediawiki.org
Semantic extension(s): Semantic MediaWiki
Further extension(s):  -/-
Keyword(s):  -/-

Description:

Problem[edit]

Semantic Media Wiki (like Mediawiki) simply displays Category pages as a list of pages, in alphabetical order.

Depending on the type of page in your category, it could make more sense to replace that list with something more appropriate, such as :

  • A Google Map if your category is about locations
  • A Timeline if your category is about events
  • A list of Open requests if your category is about requests
  • and so on...

Solution 1[edit]

Assumptions[edit]

  • You are using the CSS extension

Solution[edit]

The trick is to simply hide the page element containing the list of pages and replace it with your query.

1- Install the CSS extension if you don't have it yet, or ad

2- Create a new template : Template:HIDE_CATEGORY_PAGES

<noinclude>This template is meant to be used in Category pages to hide the default list of pages.</noinclude>
<includeonly>
{{#css:
/* #mw-subcategories {display: none} */
#mw-pages {display: none}
}}
</includeonly>

2- Open your category page ( for example : Category:Events )

3- Add the following line to hide the default list of pages :

{{HIDE_CATEGORY_PAGES}}

4- Add your query. For example, to display a timeline and list of recent events :


{{#ask:
[[Category:Event]] 
|?Has start date = start
|?Has end date = end
|format=timeline
|link=all
|timelinebands=DAY,WEEK,MONTH
|timelineposition=end
|timelinesize=400px
|sort=Has start date
|order=desc
|limit=50  
}}

{{#ask:
[[Category:Event]] 
|?Has start date = start
|?Has end date = end
|format=table
|sort=Has start date
|order=desc
|limit=200
}}

Solution 2[edit]

This solution is ideal if you have only a few category pages requiring this replacement.

1- Put this into your Common.css (using Category:Events as an example):

body.page-Category_Events #mw-subcategories {display: none}
body.page-Category_Events #mw-pages {display: none}

2- Continue from step 4 above.

Solution 3[edit]

Install Extension:CategoryMagicWords to hide the pages output completely. Add you query directly or through a template to the category pages.