Filters: Table of Contents Generator

filter_toc
Maintained by Picture of Ben ChenowethBen Chenoweth
Automatically generated table of contents for a page of content.
39 sites
19 downloads
6 fans

Table of Contents (TOC) Filter

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.)

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5

Contributors

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

Comments RSS

Show comments
  • Just wondering . . .
    Mon, Jan 26, 2015, 10:44 AM
    Does anyone know if this still works with recent versions?

    -Derek
  • Picture of Ben Chenoweth
    Fri, Mar 6, 2015, 6:01 AM
    Yes, we have it working on Moodle 2.8.3, using the Essential theme.
  • Picture of sirisha g@
    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
  • Picture of Jon Bolton
    Sun, Dec 27, 2015, 1:26 PM
    Just add
    [contents]
    to generate the table of contents
  • Picture of Zabelle Motte
    Wed, Dec 28, 2016, 5:28 PM
    Still working on Moodle 3.1
  • Picture of Zabelle Motte
    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;
  • Picture of David Mudrák
    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!

  • Picture of Sa Ku
    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.
  • Picture of Ben Chenoweth
    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.
  • Picture of Sa Ku
    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?
  • Picture of Sa Ku
    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?
  • Picture of Ben Chenoweth
    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.
Please login to post comments