DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:nspages

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
plugin:nspages [2021-03-18 23:24] – Add option -includeItemsInTOC (version 2021-03-18) gturriplugin:nspages [2024-03-07 19:33] (current) – Tested OK with Kaos dregad
Line 6: Line 6:
 email      : guillaume.turri@gmail.com email      : guillaume.turri@gmail.com
 type       : Syntax type       : Syntax
-lastupdate : 2021-03-18 +lastupdate : 2024-01-04 
-compatible : 2017-02-19, 2016-06-26a, 2009-12-25, Anteater, Rincewind, Angua, Adora Belle, Weatherwax, Binky, ponder stibbons, Hrun, DetritusGreeboHogfather+compatible : IgorJack JackrumKaos+
 depends    :  depends    : 
 conflicts  conflicts 
Line 19: Line 19:
 ---- ----
  
-:!: **I'm looking for a co-maintainer!** +//**If your Dokuwiki instance is older than the release "Igor - 2022-07-31" you should use the version available [[https://github.com/gturri/nspages/zipball/last_before_igor|here]] (and NOT update it afterward)because subsequent versions of the plugin won't be compatible)**//
- +
-//If you're a user of this plugin, don't worry: I'm still taking care of it, I will make sure it keeps working with future versions of DokuWiki. But I have much less time than before to dedicate to it, and as a consequence feature requests tend to pile up.// +
- +
-//If you're interested in co-maintaining this pluginjust send me an email (address available in the commit log).// +
- +
----+
  
 This plugin nicely displays a table of content of the pages -and optionally the subnamespaces- of a given (sub)namespace. This plugin nicely displays a table of content of the pages -and optionally the subnamespaces- of a given (sub)namespace.
Line 34: Line 28:
  
 =====Some examples and common usages===== =====Some examples and common usages=====
 +
 ====The very first steps==== ====The very first steps====
 +
 Using this plugin is easy: just write Using this plugin is easy: just write
   <nspages>   <nspages>
Line 45: Line 41:
  
 ====Pictures!==== ====Pictures!====
 +
 Now let's do something more colorful: if you have pictures in your pages you can do this: Now let's do something more colorful: if you have pictures in your pages you can do this:
   <nspages -usePictures>   <nspages -usePictures>
Line 52: Line 49:
  
 ====Tree==== ====Tree====
 +
 One last example: instead of displaying the content of a single namespace, let's display a hierarchy of pages as a tree. For the hype, let's use a whole bunch of options together (you can look at the next section in order to understand what each of those option does): One last example: instead of displaying the content of a single namespace, let's display a hierarchy of pages as a tree. For the hype, let's use a whole bunch of options together (you can look at the next section in order to understand what each of those option does):
   <nspages -tree -r -exclude -subns -pagesInNs -h1 -textNs="All my content as a tree!">   <nspages -tree -r -exclude -subns -pagesInNs -h1 -textNs="All my content as a tree!">
Line 61: Line 59:
  
 =====Manual===== =====Manual=====
 +
 The general syntax is The general syntax is
   <nspages path_to_a_namespace -option1 -option2 ...>   <nspages path_to_a_namespace -option1 -option2 ...>
Line 74: Line 73:
 |  <code>-exclude</code>  |won't include the current page | |  <code>-exclude</code>  |won't include the current page |
 |  <code>-h1</code>  |will display the first h1 title found. If a page doesn't contain such a title, the name of the page  is used instead | |  <code>-h1</code>  |will display the first h1 title found. If a page doesn't contain such a title, the name of the page  is used instead |
-|  <code>-textPages="some text"</code>  |//some text// will be displayed instead of the default text, to introduce the pages list |+|  <code>-textPages="some text"</code>  |//some text// will be displayed instead of the default text, to introduce the pages list. i.e. changes the "Pages in this namespace" text. Set to ''%%=""%%'' to remove. |
 |  <code>-textNS="some text"</code>  |//some text// will be displayed instead of the default text, to introduce the namespaces list | |  <code>-textNS="some text"</code>  |//some text// will be displayed instead of the default text, to introduce the namespaces list |
 |  <code>-title</code>  | alias of ''-h1'' | |  <code>-title</code>  | alias of ''-h1'' |
Line 81: Line 80:
 |  <code>-simpleLine</code>  | display the list on a single line (incompatible with ''-simpleList'') | |  <code>-simpleLine</code>  | display the list on a single line (incompatible with ''-simpleList'') |
 |  <code>-simpleLineBreak</code>  | display the list on a single column, separated only by line breaks (incompatible with the previous flags) | |  <code>-simpleLineBreak</code>  | display the list on a single column, separated only by line breaks (incompatible with the previous flags) |
-|  <code>-usePictures</code>  | display the first image of each page  | +|  <code>-usePictures</code>  | display the first image of each page. (Note that you can include a 1x1 pixel size image as the 1<sup>st</sup> picture on a page if you want this page to be represented by this image in a nspages TOC.)  | 
-|  <code>-tree</code>  |  group the items per namespaces. To be used with the -r flag. Eg: <code><nspages -r -subns -nopages -tree></code>  |+|  <code>-tree</code>  |  group the items per namespaces. To be used with the ''-r'' flag. Eg: <code><nspages -r -subns -nopages -tree></code>  |
 |  <code>-nbCol=3</code>  | Change the number of columns to use (default is ''3'' | |  <code>-nbCol=3</code>  | Change the number of columns to use (default is ''3'' |
 |  <code>-sortId</code>  | Sort the pages according to their id, even if ''-title'' is used | |  <code>-sortId</code>  | Sort the pages according to their id, even if ''-title'' is used |
Line 93: Line 92:
 |  <code>-sortByCreationDate</code>  | Sort the pages by date of creation |  |  <code>-sortByCreationDate</code>  | Sort the pages by date of creation | 
 |  <code>-pagesInNs</code>  | The pages will appear among the namespaces | |  <code>-pagesInNs</code>  | The pages will appear among the namespaces |
-|  <code>-r</code>  | recurse : display elements of the subnamespaces. You may use just ''-r'' to check every subnamespace, or e.g. ''-r=3'' to have a depth limit to 3 levels  |+|  <code>-r</code>  | recurse : display the pages of the subnamespaces (if used with "-subns" it will display the sub-subnamespaces). You may use just ''-r'' to check every subnamespace, or e.g. ''-r=3'' to have a depth limit to 3 levels  |
 |  <code>-exclude:[page1 subNs: page2]</code>  |an easier syntax to exclude several pages/subnamespaces| |  <code>-exclude:[page1 subNs: page2]</code>  |an easier syntax to exclude several pages/subnamespaces|
 |  <code>-pregPagesOn |  <code>-pregPagesOn
Line 113: Line 112:
 |  <code>-showhidden</code>  |Include pages that are normally excluded from search with the [[config:hidepages|hidepages]] config parameter.  Useful for creating table of contents for hidden namespaces.| |  <code>-showhidden</code>  |Include pages that are normally excluded from search with the [[config:hidepages|hidepages]] config parameter.  Useful for creating table of contents for hidden namespaces.|
 |  <code>-dictionaryOrder="<locale>"</code>  |Sort according to the locale specified (see the [[http://php.net/manual/en/function.strcoll.php|doc]]). Example of usage: <code>-dictionaryOrder="sk_SK"</code>| |  <code>-dictionaryOrder="<locale>"</code>  |Sort according to the locale specified (see the [[http://php.net/manual/en/function.strcoll.php|doc]]). Example of usage: <code>-dictionaryOrder="sk_SK"</code>|
-|  <code>-customTitle="[{date.created}] {title} by {user}"</code>  |Use a custom format to display the title, replacing {xxx} with the associated metadata. See below for more explanations|+|  <code>-customTitle="[{date.created}] {title} by {user}"</code>  |Use a custom format to display the title, replacing {xxx} with the associated metadata. See [[#option_-customtitle|below]] for more explanations|
 |  <code>-includeItemsInTOC</code>  |Also displays the pages in the table of contents generated by Dokuwiki (the one which appears on the top right of each page with the default template)| |  <code>-includeItemsInTOC</code>  |Also displays the pages in the table of contents generated by Dokuwiki (the one which appears on the top right of each page with the default template)|
 |  <code>-sortByMetadata="date.created"</code>  |Sort the pages using the given metadata. (it can be used along with option -reverse)| |  <code>-sortByMetadata="date.created"</code>  |Sort the pages using the given metadata. (it can be used along with option -reverse)|
 +|  <code>-sidebar</code>  |You should use this if you use nspages to display a dynamic list of items in a sidebar. See [[#option_-sidebar|below]] for more information|
  
 ex: ''<nspages path_to_a_namespace -exclude>'' or ''<nspages -subns -nopages>'' will work. ex: ''<nspages path_to_a_namespace -exclude>'' or ''<nspages -subns -nopages>'' will work.
Line 124: Line 124:
  
 =====Option -customTitle===== =====Option -customTitle=====
 +
 //(Because the array above is too concise to give all the details about this option)// //(Because the array above is too concise to give all the details about this option)//
  
Line 141: Line 142:
   * The list of metadata available by default in Dokuwiki is available in the [[https://www.dokuwiki.org/devel:metadata|documentation]]   * The list of metadata available by default in Dokuwiki is available in the [[https://www.dokuwiki.org/devel:metadata|documentation]]
   * It can be use along with other plugins that adds support for custom metadatas (like the [[https://www.dokuwiki.org/plugin:meta|meta plugin]]). (Don't forget to add those other metadata in the accept-list of nspages)   * It can be use along with other plugins that adds support for custom metadatas (like the [[https://www.dokuwiki.org/plugin:meta|meta plugin]]). (Don't forget to add those other metadata in the accept-list of nspages)
 +
 +===== Option -sidebar =====
 +
 +DokuWiki supports [[faq:sidebar|sidebars]] out of the box.
 +
 +Here is an example of sidebar generated with nspages:
 +
 +{{https://turri.fr/nspages_img/nspages_sidebar.png?nolinking&300&recache}}
 +
 +To get this sidebar I just put
 +  <nspages -simpleList -h1 -sidebar>
 +on the page '':sidebar'' of my instance of DokuWiki.
 +
 +The tricky part is that since I do not specify a namespace then I expect nspages to consider the namespace of the current page. But by default nspages will consider that the current page is '':sidebar'' (because it is where it is defined), whereas want makes sense to me is that the current page is interpreted as the page that I'm currently browsing.
 +
 +That's the point of the ''-sidebar'' option. In practice it:
 +  * tells nspages that the "current page" should be interpreted as the page currently browsed
 +  * does not cache the resolution of the resolution of the namespace (because it may change at every page that I browse)
 +(a consequence is that it makes no sense to both specify a namespace and have the ''-sidebar'' option, so that case will just display an error)
 +
 +**To put it in a nutshell**: it you use nspages to generate a sidebar, then you should add the ''-sidebar'' option
  
 ===== Some (important) points ===== ===== Some (important) points =====
  
-  * With version older than 2014-08-10, you should put %%~~NOCACHE~~%% in the pages where you use this plugin, to make sure that if you create or remove a page in the namespace, it will be taken into account. Now, nspages automatically deactivate the cache on the pages where it is used (you can deactivate this behaviour on the admin panel). +  * With version older than 2014-08-10, you should put ''%%~~NOCACHE~~%%'' in the pages where you use this plugin, to make sure that if you create or remove a page in the namespace, it will be taken into account. Now, nspages automatically deactivate the cache on the pages where it is used (you can deactivate this behaviour on the admin panel). 
-  * The CSS sheet should be taken into account in order for this plugin to work correctly; but because of the cache system it may not be the case the first time you use this plugin (even if %%~~NOCACHE~~%% is specified). The easier way to resolve this is to make sure your cache is invalidated by touching ''conf/local.php'' (eg. by resaving your configuration) +  * The CSS sheet should be taken into account in order for this plugin to work correctly; but because of the cache system it may not be the case the first time you use this plugin (even if ''%%~~NOCACHE~~%%'' is specified). The easier way to resolve this is to make sure your cache is invalidated by touching ''conf/local.php'' (eg. by resaving your configuration) 
-  * Currently, you may not use a '>' in the ''-textPages'' and ''-textNS'' options, since it is understood as the end of the <nspages> tag+  * Currently, you may not use a ''>'' in the ''-textPages'' and ''-textNS'' options, since it is understood as the end of the <nspages> tag
   * When you change the default markup inserted by the toolbar button (throught the admin dashboard), you may need to purge your caches to have this change taken into effect (see also the [[https://github.com/gturri/nspages/issues/23|bug report]]):   * When you change the default markup inserted by the toolbar button (throught the admin dashboard), you may need to purge your caches to have this change taken into effect (see also the [[https://github.com/gturri/nspages/issues/23|bug report]]):
     * [[:caching#purging_the_cache|Clean the cache]] of you DokuWiki      * [[:caching#purging_the_cache|Clean the cache]] of you DokuWiki 
Line 158: Line 180:
  
 ==== To who ==== ==== To who ====
- +Any NGO acting for the environment.
-The preference goes to the [[https://support.worldwildlife.org/site/SPageServer?pagename=main_onetime|World Wildlife Fund]] (WWF) because the are both protecting biodiversity and fighting climate change effectively. +
- +
-If it isn't possible, any association acting for the environment would do the trick.+
  
 ==== How ==== ==== How ====
Line 172: Line 191:
 Making sure you have a positive impact would already be awesome: Making sure you have a positive impact would already be awesome:
   * Volunteer to an NGO near you. Give some of your time   * Volunteer to an NGO near you. Give some of your time
-  * Ride you bike instead of taking your car+  * Reduce your meat and plane consumption 
 +  * Ride your bike instead of taking your car
   * Use a reusable bag and stop using plastic straws   * Use a reusable bag and stop using plastic straws
-  * Reduce your meat and plane consumption 
   * Plant trees   * Plant trees
   * Take only what you need, not what you can   * Take only what you need, not what you can
  
plugin/nspages.1616106271.txt.gz · Last modified: 2021-03-18 23:24 by gturri

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki