filter_toc
Maintained by Ben Chenoweth
Automatically generated table of contents for a page of content.
49 sites
6 fans
Moodle 2.1, 2.2, 2.3, 2.4

##### 2017 version

The Table of Contents filter scans pages for heading tags (like h1, h2, etc) and automatically generates a nested list of these tags as a table of contents. Each entry in the table is made into an html link to the actual heading.

The plugin has both global and local settings.

#### Global Settings

• Headings: you can nominate which headings tags you want the filter to look for (default: h1,h2,h3,h4)
• Search in divs: you can choose whether or not to look for headings tags located inside divs (default: yes)
• Backlink: you can choose whether or not to include a backlink at the end of the heading that links back to the TOC.
• TOC Title: you can nominate the title used in the TOC (default: Table of Contents)
• TOC Title Heading Tag: you can choose which heading tag is used for the TOC's title (default: 1)

#### Local Settings

(The local settings allow you to override the global settings on a per page basis.)

• Headings: you can nominate which headings tags you want the filter to look for
• TOC Title: you can nominate the title used in the TOC
• TOC Title Heading Tag: you can choose which heading tag is used for the TOC's title

#### Hiding Individual Headings

You can also hide specific headings from the TOC by wrapping the heading in a div with class="non-toc".  For example,

<div class="non-toc"><h1>Lesson 1 — Greco-Roman Civilisation</h1></div>

#### Location

By default, the location of the TOC is placed at the beginning of the page. However, you can nominate a different position by putting the string

[contents]

where you want the TOC to appear.

#### CSS

CSS styling may be used to modify the appearance of the table. The entire table is contained within a div with the 'toc' class. The backlinks have the class 'toc_link' applied to them.  For example,

/* Hide bullets in TOCs */.toc ul {    list-style: none;}

(Add to the custom CSS field of your moodle theme.)

### Contributors

Ben Chenoweth (Lead maintainer)
Nigel Cunningham: Original author
Please login to view contributors details and/or to contact them

• Sat, May 23, 2015, 6:14 AM
I have installed the plugin successfully on Moodle 2.8.3 and also made it active in SiteAdministration->Plugin->Filter->Manage Filters. But I do not see any changes in any of the courses. This might be a dump question but could anyone please let me know how to see the table of contents?

-Sirisha
• Sun, Dec 27, 2015, 1:26 PM
[contents]
• Wed, Dec 28, 2016, 5:28 PM
Still working on Moodle 3.1
• Mon, Sep 18, 2017, 10:09 PM
Still working on Moodle 3.3 with a slight modification becaus there is a default toc in wiki ...

In public function filter(), add the following lines :
if (strpos($PAGE->url,"wiki")) return$text;
after these lines :
if ($PAGE->pagelayout <> "incourse") return$text;
• Fri, Sep 29, 2017, 7:23 PM

I am happy to announce that Ben Chenoweth became a new maintainer of this plugin and hopefully will be able to release an update for more recent Moodle versions soon. Good luck Ben, and thanks for your offer to maintain this!

• Mon, Nov 19, 2018, 1:29 PM
How to change the location of the TOC? For instance, I would like to add this to the Right side block and as a floating one.
• Mon, Nov 19, 2018, 2:39 PM
Sa Ku, that's an interesting suggestion, but it is not currently possible at the moment. The only customisation regarding placement of the TOC is to put

[contents]

where you want the TOC to appear on the page itself.
• Mon, Nov 19, 2018, 4:34 PM
@Ben: Thanks for your reply. Can you please help me understand is how and where to update the [contents] and how to modify the CSS of the TOC?
• Mon, Nov 19, 2018, 4:38 PM
Also, when I remove h4 from the settings, the entire TOC disappears from the topic. This happens when I try to make changes to global and local settings. Is that a known bug?
• Tue, Nov 20, 2018, 8:35 AM
The instructions for modifying the CSS are given above. You have to add to your custom CSS, using the .toc class. For example,

/* Hide bullets in TOCs */
.toc ul {
list-style: none;
}

There are no bugs that I am aware. My only guess is that all of the headings on your page are h4 headings. So when you remove h4 from the settings, there are no headings left to generate a TOC.
• Sat, May 2, 2020, 10:32 AM
Hi there, i have installed your plugin and its enabled. I was expecting this TOC to appear at the top of my course pages but I can't seem to see it? I am not a developer but wondered how exactly do you add [contents] to the top of the page? I definitely have a range of h1 h2 h3 h4 text on the course page. Is there somewhere in the Moodle course menu or site admin I can do this? Or do I add it within an activity? Sorry if this is a silly question, It may be beyond my depth of knowledge. Appreciate the help. Tim
• Sat, May 2, 2020, 10:48 AM
It's been a while since I've worked on a Moodle site. My recollection is that if the plugin is enabled, the TOC appears at the top of a page automatically. You only have the add [contents] if you want the TOC to appear elsewhere. The TOC is generated using a Moodle filter, so look for the plugin to appear in the list of filters for a specific page.
• Sat, May 2, 2020, 10:55 AM
Hi Ben, thanks for the reply. On the course page I can see the "Table of Contents Generator" under Course Administration > Filters and this is turned on which is why I thought I had to add [contents] as it does not show the TOC at the top of my course page as expected? My course pages are default Moodle pages (nothing fancy) so perhaps there could be a bug with my version of Moodle? I believe i am on Moodle 3.4.2+ (Build: 20180421) - Once again, thanks for the response. Tim
• Sat, May 2, 2020, 11:03 AM
The TOC won't appear on the course outline, just on the individual pages.
• Sat, May 2, 2020, 12:18 PM
Yes, it won't appear here, because this is the course homepage. The TOC filter only applies to in-course content pages.