Table of Contents Creator
Download Latest version: 1.6.1 (updated on 27 January 2010)
Features | Screenshot | Download | Configuration | FAQ | Comments | Demo
Version 1.6 now released! This release is a complete rewrite of the orginal code. It is now faster, uses less memory, is more robust and above all is extremely flexible. New features may now be added in a future release with minimal risk. TOCC has expanded rapidly since the original release and unfortunately the code was starting to resemble a plate of spaghetti. This release is the result of three very long weekends. Please refer to the change log for further details.
The following new features have been added. This release is all about giving more control to your visitors…
- Hierarchial categories are now supported.
- Child elements can now be dynamically expanded or collapsed by a vistor.
- The table of contents can now be dynamically sorted in several different orders by a visitor.
- All summaries can be dynamically shown or hidden by a visitor.
Have a play by viewing this site’s Table of Contents.
Please Help! Assistance in interpretation, the creation of new icon sets or just suggesting great new features would be greatly appreciated. All assistance will be acknowledged on the TOCC settings page with a link provided to your site. Please register your interest via the Contact Me page or as a comment below. Thank you.
If you find the plugin useful, please vote for it here.
Features
Table of Contents Creator (TOCC) automatically generates a dynamic site wide table of contents that is always up-to-date. All entries are navigable making your site extremely SEO friendly. TOCC can be configured to display static pages, blog posts and forum comments. TOCC may also include anchor tags marked with a special class within the table of contents. This feature allows links to articles, downloads or even other sites to appear within the table of contents as if they are part of your site’s navigation. One more great feature of TOCC is the automatic summary generator. A short summary describing each page or comment can be automatically created and added to each page or post item in the table of contents. The summary is a great way for people to quickly determine what each page or post is about without wasting valuable time. Finally, the way in which the table of contents is generated is extremely configurable and even contains a choice of several icon themes.
To generate a table of contents, simply include the <!--toc-creator--> tag on any page, or use the handy page creation feature located on the plugin admin page.
Note that the table of contents is automatically generated every time it is displayed and as such it is always up to date! New comments, pages, blogs and blog catagories will automatically appear as soon as they are published.
You never need to lift a finger. TOCC will do all the work for you!
Content generated by the Table of Contents Creator plugin is validated XHTML compliant.
Download
Latest version: 1.6.1
Requires at least: Wordpress 2.7
Tested up to 2.9.1
The plugin can alternatively be downloaded from the WordPress plugin repository.
You are free to use the plugin under terms specified by GPL.
Installation
- Download the installation file from here, extract it into your plugin folder and activate it.
- Edit the TOCC settings using the admin page located under settings.
- Place
<!-- toc-creator -->anywhere on a page or use the page generator on the admin page. Use the HTML editor when placing the tag.
Anchor Links
Anchors can be displayed within the table of contents. To include an anchor, simply add class="tocc" to any anchor tag. Anchor links will be displayed under the page in which they were located.
The Summarizer
The Summarizer will display a page or post summary below each item in the table of contents. It is set by default to automatically acquire the summary from one of several different sources, however it may be configured to retrieve summaries from one source only. Currently, TOCC interrogates the following sources:
- The All in One SEO plugin. This plugin is used by many to produce SEO friendly META descriptions.
- Any custom configurable page or post META tag,
- The post or page excerpt.
- The post ot page content.
The Summarizer uses jQuery textual effects to slowly scroll summaries and includes options for the reader to displaying all summaries, hide all summaries or display individual summaries. All buttons dynamically change on hover and are theme sensitive.
Examples
Table of Contents With “Professional” Icon Theme

Table of Contents Showing Collapsed Children and “Square” Icon Theme

Table of Contents Without Icons

Table of Contents using “Handdrawn” Icon Theme and Expanded Options Menu

Example Configuration

Configuration
TOCC is configured with defaults that will suffice the needs of most users. There are loads of configuration options though that you can tweak to help blend the table of contents with you blog style and personal tastes. None of the options break anything and are, for the most part, self explanatory. If you run into trouble, click on the option text within the plugin settings page to display detailed help.
All available options are detailed below…
General Options- Table of Contents Title: This text entered here will be displayed at the top of the table of content page. Leave blank to display no title. Include any required formatting tags.
- Icon Theme: Select the icon theme used to display next to each table of contents entry. Icon themes are a set of icons that are related in look and style. Icons are used to differentiate pages, links, blog categories, blog entries and form comments. Select none to inhibit the displaying of icons.
- Default Sort Order: Selects the default sort order for pages and posts. The sort order can be overridden by a vistor using the options menu.
- Date Format: Used to set the date display format when showing blog or forum comment dates. See http://php.net/manual/en/function.date.php for format string details.
- Show Separate Lists: Displays the page list, blog posts and forum comments as separate lists under a configurable title. See the settings below for Page Title, Blog Title and Forum Comments Title. The title strings may contain HTML formatting tags.
- Show Options Menu: Displays a menu at the top of the table of contents page allowing vistors to format the table of contents. Options include expand and contract child elements, show or hide summaries and sort the table of contents.
- Option Menu Item Texts: This is the text used for each option menu item. It is settable so that the menu can be easily modified to reflect the blogs host language. Ensure that the menu items appear in the same order. Commas are used to delimit each menu item and should therefore not be used in a menu item description.
- Options Menu Border Color: A small options menu is displayed to each visitor allowing them to sort the table of contents, expand or collapse child elements and display or hide summaries. This option defines the color used for the menu border and separator bars. HTML color codes can be found here. Dont forget to include the leading hash.
- Allow Children to be Expanded and Collapsed: Allows parent elements, such as a page with sub pages or a category with posts, to expand or collapse the child elements similar to a tree view in Windows Explorer.
- Hide Children by Default: Hides all children by default. This option will only be used if the above option is selected.
- Author Prefix: The text to be displayed before the authors name.
- More Prompt: If enabled, the more prompt is displayed at the bottom of the blog posts and forum comments lists if not all posts or comments are displayed. clicking the link will display a new page showing all available posts or comments. This enables a smaller subset of the posts and/or comments to be displayed on the main site-map allowing greater readability.
- Show Author Credit: Displays a small unobtrusive acknowledgement at the bottom of the table of contents. Please consider leaving the acknowledgement enabled as a token of appreciation for the hours spent developing this plugin.
- Show Summary: If enabled, a small summary is automatically created for each page or post. The summary may be hidden by default allowing visitors to dynamically show or hide summaries as required. Summaries may be extracted from All in One SEO descriptions, post excerpts, post or page body text or custom META tags.
- Extract Summary From: Determines where the page or post summary is to extracted from. If Auto is selected, a number of different methods are examined in hierarchial order to obtain the first non-blank description. Other valid options include All in One SEO description tags (requires the All in One SEO plugin to be installed), Post Excerpt, Page or Post Body and Custom META. The option below can be used to configure the custom META tag.
- Custom Summary Extraction META: Defines the custom META tag if selected above. Wordpress allows custom fields to be added to a page or post. The custom fields are displayed as META tags in the post or page header and can be used by search engines. If you do not use the All in One SEO plugin, it is a good idea to create a custom Description META and include a brief description of the post in the value field.
- Summary Length Limit: Sets the maximum number of characters to display for each summary. Set to 0 to disable this option. It is a good idea to keep this short to reduce page load times if the table of contents contains many pages or posts.
- Display ellipses if Summary Exceeds Limit: If set, ellipses (…) will be displayed if the extracted summary exceeds the above summary length limit.
- Hide Summaries by Default: Select this option to avoid cluttering the table of contents by hiding all summaries by default. Summaries may be displayed by the visitors on an as-required basis.
- Allow Individual Summaries to be Shown or Hidden: If selected, visitors will have the option of displaying or hiding summaries for individual posts or pages. A small icon will be displayed next to the post or page.
- Show Static Pages: Show static pages within the table of contents. Note that the pages will be sorted in menu order. Use the order attribute of each page (settable via page edit) to set the menu order.
- Page Title: This text is used as the page list heading. The page list heading is only displayed if the separate page, blog post and forum comment lists option is checked. See General Settings for more information.
- Page Depth: Determines the page depth to display. For example if set to 1, all parent pages will be shown and the immediate children of each parent page will also be shown. Set to 0 to show parent pages only.
- Link Class: If set, any <a> tags assigned to this class will be shown as a list item under the page in which the link was found. To use, add class=”linkclass” to each <a> tag you wish to display in the table of contents. Leave blank to disable this option.
- Show Page Author: Displays the author of the page.
- Show Page Date: Displays the creation date of the page.
- Exclude Pages: Select one or more pages to exclude from the table of content. By default, all pages are enabled.
- Show Blog Posts: Show blog entries within the table of contents. Blog entries will automatically be separated by category.
- Blog Title: This is a mock page name used for sites that do not have a static post page. See the Wordpress Settings/Reading option for more details. The blog title is also used if static pages are not displayed or page lists, blog posts and forum comments are separately displayed.
- Show Posts Total: Displays the total number of posts in brackets for each category next to each category listing.
- Number of Blog Posts: Determines the maximum number of blog entries to display in each category. Set to a value equal to or less than zero to display all posts.
- Show as Flat List: If selected the blog categories will not be displayed as an indented hierarchial list, but instead as a flat list.
- Show More Prompt: Displays a link at the bottom of the posts list to display more posts. The link will only be displayed if the current number of posts is limited (see the option above). The link text is set in the general options section.
- Show Posts Warning: Displays a message after the blog page name to alert the reader that only the latest n posts are shown. This text is not shown if all posts are displayed (by entering 0 in the “Number of Blog Entries” setting below).
- Post Warning Text: The message to display if the post warning is enabled. Use
{x}as a place holder for the number of blog entries being displayed. - Show Post Author: Displays the author of the post.
- Show Post Date: Displays the creation date of the post.
- Exclude Categories: Select one or more categories to exclude from the table of content. By default, all categories are enabled.
- Show Forum Comments: Show forum comments within the table of contents. The latest forum comments will be shown first. Note that currently this option only works with Forum Server and WP-Forum.
- Forum Title: This text is used as the forum list heading. The forum list heading is only displayed if the option is checked to separate the page, blog post and forum comment lists. See General Settings for more information.
- Forum Page Name: This is the name of the WordPress page that is used as a place holder to display the forum. The page name is required so that the plugin can display the forum comments underneath the correct page name. The forum page typically consists only of a tag such as
<!--VASTHTML-->. - Number of Forum Comments: Determines the maximum number of forum comments to display. The latest comments will be displayed first. Set to 0 to display all comments (not recommended).
- Show More Prompt: Displays a link at the bottom of the comments list to display more comments. The link will only be displayed if the current number of comments is limited (see the option above). The link text is set in the general options section.
- Show Comments Warning: Displays a message after the forum page name to alert the reader that only the latest n comments are shown. This text is not shown if all comments are displayed (by entering 0 in the “Number of Forum Comments” setting below).
- Comment Warning Text: The message to display if the comment warning is enabled. Use
{x}as a place holder for the number of commebt entries being displayed. - Show Comment Author: Displays the author of the comment.
- Show Comment Date: Displays the creation date of the comment.
FAQs
When I add a new page or post, do I need to tell TOCC?
No. TOCC will automatically add new pages, blog categories and entries, forum comments and links to the table of contents. A new table of contents is generated every time the page is displayed.
Where does the Summarizer get its text from?
The Summarizer is a great feature of TOCC that automatically produces a short summary of each page or post. It first attempts to retrieve the summary from the All in One SEO Plugin. If none was found, it then looks inside a custom META tag, then the post excerpt, then the post content. If all this fails, a message is displayed indicating that no description exists for this page or post. The summary is then stripped of any HTML tags and truncated to a configurable length before it is displayed.
Why is it that some static pages don’t display in the table of contents?
Private pages are not included in the table of contents. Furthermore, you can inhibit pages from displaying using the admin settings page.
What is an anchor link?
Anchor links are <a> tags that have been marked with a special class. By default, any anchor tag that include the text ‘class=”tocc”‘ will be included as a link in the table of contents. Note that the class identifier can be changed via the admin settings page.
Can I edit the way the table of contents is displayed?
Definitely! There are many options on the admin settings page that allow you to individualise the way the the TOC is displayed. TOCC also ships with a tocc.css file that can be customised to display different icons, text colors and so on. All individual elements within the TOC can be formatted within the css file.
Revision History
1.0- Initial public release.
- Posts will now be displayed if there is no static post page. Prior to this release, a static blog page was required.
- Now shows blog entries if blog page or static pages are excluded from the table of contents.
- Now show forum comments if forum page or static pages are excluded from the table of contents.
- Added option to remove author acknowledgment.
- Now displays a message indicating the last number of posts if the number of posts exceeds the selectable maximum number of displayed posts.
- Now displays a message indicating the latest number of forum comments.
- Fixed incorrect <div> nesting when static pages are excluded.
- Fixed bug where anchor links would be displayed even though static pages were disabled.
- Fixed bug where forum page would always default back to the first page in the settings editor.
- Now allow extended help to be displayed if the option is disabled. This my be help the user to determine why the option is disabled in the first place.
- Modified default settings to disable icons and show all blog entries (looks more professional).
- Now shows blog entries as list items if icons are not selected. This provides better intergration with existing site themes and looks better when icons are not displayed.
- Now uses configurable blog title if not displaying static pages. The blog title may be left blank.
- Removed excessive use of nested <div> tag. This may have caused an issue with oulder browsers.
- Now ensure blog posts are sorted by date rather than rely on Wordpress defaults (as this may change in later Wordpress versions).
- Split the show posts/comments warning option into individual forum and blog sections.
- New option (on by default) to show total number of posts in each category.
- Renamed function
display_poststotocc_display postsand moved out of hook function as it conflicted with a function of the same name when display category posts. This update is a must for anyone using version 1.1 or 1.2 of this plugin!
get_posts()method used to retrieve wordpress blog posts sometimes return incorrect (empty) results. I have therefore implemented a new method to directly retrieve posts from the database. Retrieval falls back to get_post if no posts were found using the database method.- Removed bullets from forum comments and blog posts when displaying icons.
- Hardcoded title formatting removed and added by default to the title. A blank title tag is now also allowed.
- Additional desscriptions added to settings page to guide users on the use of the
create pageandupdate optionsbuttons. - Added options to show blog and forum last update date and author.
- Added date format specifier for blog and forum last update dates.
- Added forum and blog author prefix text setting (for blogs using a language other than English)
- Added forum and blog warning text setting (for blogs using a language other than English)
- Added optional formatting to CSS file (such as removing bullets, adding anchor decoration etc). Instructions included in the CSS file.
- Added ability to determine previous version during upgrade. This will allow future versions to tweak existing settings to match the look and functionality of previous versions.
- Post count now pulled from database as $cat->count does not match the number of posts pulled from the database in some (rare) cases.
- Modified post retrieval query slightly as it sometimes got confused with posts that have multiple categories.
- Modified internal English strings be i18n Wordpress translation compatible.
- Added translation “please help” message to the settings page.
- Added option to select one of five different icon sets. Icons sets now include none, handdrawn (original), blue, square and bling. None selected by default, except when upgrading and show icons checkbox was selected. In this case, handdrawn is automatically selected to ensure that existing site maps retain the current look.
- The settings page now utilises collapsible menues as the number of options was becoming too large and overwhelming to display all at once.
- Added option (off by default) to show all entries as list items if not displaying icons. Currently only blog posts and forum comments are displayed as list items. Enabling this option allows easier integration into some themes.
- Fixed display issues with IE6. Found bug in IE6 render engine that stopped the icons from being displayed if the list item consists entirely of an anchor tag. Added a space to the end of all list items fixes this bug. Thank’s Microsoft, can I have mny day back now?
- Added option to display pages, posts and forum comments as separate lists each with individual headings. Heading texts can also be set.
- Added option to display a “more” prompt at the end of the blog post and forum comments if not all of the posts or comments are shown. When clicked, the link will display a page of all posts or forum comments.
- Removed translational strings from add_option_page function as I suspect this may cause a race condition on initial activation (ie after an upgrade) that may every now and again causes a momentary server failure message. The message goes away after refreshing the page.
- Added CSS2 bullet clearing when displaying icons.
- Post anchor links now link to post permalink instead of the post number.
- Added Italian language file by Carlo Politi.
- Added Professional icon set (recommended by Bryan Brazil).
- Changed IDs to CLASSES to ensure XHTML 1.0 Strict (thanks Bryan).
- Added an uninstall script to remove all options when the plugin is deleted.
- Fixed bug causing options to default to “blank” on initial install.
- Fixed fault causing author acknowledgment to dispay at full text height.
- Optimized use of Wordpress actions. The plugin now loads the localization file only when needed and all global code has been removed (except for action hooks).
- Resolved issue where default options would periodically not translate on new plugin install.
- Added special debug mode (activated by typing DEBUG_ON in TOC Title) to output all option settings as a hidden comment on the TOC page.
- Updated admin settings page to a more “Wordpress” like theme.
- Fixed bug in tocc_plugin_options() function that stopped the admin page loading on some systems. Thank you very much Michael E. Chancey Jr. for pointing out the bug and offering a fix.
- Added “Settings” link to plugin menu.
- Modified css file to remove CSS2 style bullets when displaying icons.
- Brand new feature added – The Summarizer. This new feature allow you to display post or page summaries under each table of content item. The summaries are automatically generated using All in One SEO tags, post exceprts, body content or META tags. Summaries are displayed or hidden using fancy jQuery scroll effects. The Summarizer is also uber configurable. Readers may hide or display summaries using themed icons. BIG THANK YOU to Scott for suggesting this feature!
- Fixed a small issue that stopped table of contents from correctly validating as XHTML.
- Added an “Are you sure?” warning when the restore defautls button is selected.
- Dynamically add toc.css and java script headers to pages with table of contents tag only (instead of all pages).
- TOCC pages generated with the create page option are now add to the end of an ordered page list (position 9999). This ensures that the page is displayed last in most theme menus. Comments are also now closed by default.
- Removed reliance on PHP5. Four lines of code accessed objects in a way that was not compatible with PHP4.
- Added space between Summarizer option span elements to fix rendering issue with some browsers.
- Added mozilla inline block replacement to fix rendering issues in Firefox 2.0 and lower.
- Replaced text Summarizer icons with mostly transparent icons to best suit more background colors.
- Hierarchial blog categories are now supported. An option has been included to display categories as a flat list as per previous versions.
- New feature to dynamically display or hide child elements similar to the way Windows Explorer works.
- New options menu allowing a visitor to hide/expand child elements, show/hide all summaries and sort the table of contents in several different orders.
- Added ability to display page author and/or page date for static pages.
- Updated Italian translation to include Summarizer options thanks to Carlo Politi.
- Stripped Worpress caption tags and plugin square bracket activation tags from page and post summaries. This was causing Summarizer display porblems with caption tags and the contact form plugin.
- Moved all tocc options into a single associative array resulting in smaller and easier to follow code with less calls to the option table.
- The php code has now been fully commented.
- The code used to generate the TOC HTML code has been completely rewritten. The resulting HTML is now a lot neater and no longer uses div elements. All list item types are now fully customizable using CSS. The lists are also now truely hierarchial.
- Added a new classes to items with children, the active page item, date text, author text, expandable items and option menu items allowing greater flexibility when custom styling with css.
- CSS file has been completely rewritten so that it is easier to override and customize.
- Many function parameters are now passed by reference thus reducing overall memory requirements and CPU usage.
- All formatting now moved from source code to the css file.
- Added nonce and admin check to all TOCC administration panel settings changes (for security purposes).
- If no author URL is configured in the WP user section, the author link will default to the author post summary page.
- Add Spanish (castilian) translation by Fernando J. Echevarrieta (echeva).
Upcoming Features
The following is a list of features that will be implemented in the next revsion. If you would like any additional features, please feel free to leave a comment below.
List post subcategories as indented categories under the parent category. At present, all categories are shown as a fla list ordered by name.Comment the code to Wordpress commenting standards.- Dynamic (reader) list manipulation including: grouping by author (as suggested by iplnts)
and sort options (as suggested by Scott) such as sorting by category, post name, publish date etc. - Sidebar widget allowing a the TOC to be placed in the sidebar.
- Add ability to use text instead of icons for individual summary expansion/contraction.
- Summarizer elsipses to start at end of the last word.
- Fix bug in IE6 where options pane momentarily expands horizontally when hiding or displaying.
- Fix bug in IE6 where transparent PNG icons are shown with a grey background – make all PNG icons GIFs.
Acknowledgements
I wish to acknowledge the valuable assistance offered by the following people:
- Carlo Politi for providing and updating the Italian translation file.
- Fernando J. Echevarrieta (echeva) for providing the Spanish (Castilian) translation file.
- Scott for suggesting and helping test the new Summarizer feature.
- Steadman Uhlich for assisting with major version pre-release testing and vailidation’, ‘tocc’)
Please help. Your help would be greatly appreciated if you could assist in translating this plugin, help test new releases or suggest new features.
Comments
Please let me know what you think. Leave a comment if you have a requested feature, found a bug or need some help. All are welcome.
127 Responses to “Table of Contents Creator”
Trackbacks/Pingbacks.
-
-
05. Feb, 2010
[...] Table of Contents Creator [...]








Great plugin. Looking forward to the widget feature.
I’d also like to add an option to not put a link for static pages with child pages. To those who wants this, just modify table_of_contents_creator.php line 644-654 to:
$content = ”
. ($hasChild && $tocc_options['allow_expand'] ? ” : ”)
. ($hasChild ? print_r($linkTitle, TRUE) : ‘‘ . print_r($linkTitle, TRUE) . ‘ ’ )
. ($author ? ” . $tocc_options['author_prefix'] . ‘ user_url ? $author->user_url : get_bloginfo(‘url’) . ‘?author=’ . $authorID) . ‘” rel=”nofollow”>’
. $author->display_name . ‘‘ : ”)
. ($additionalText ? ‘ ’ . $additionalText . ” : ”)
. ($tocc_options['sum_allowHide'] && $showSumm ? ” : ”)
. ($linkDate ? ” . date_i18n($tocc_options['date_format'], strtotime($linkDate)) . ” : ”)
. ($showSumm ? tocc_generate_summary($post, $tocc_options) : ”);