diff options
author | jan <jan@jandecaluwe.com> | 2005-03-26 14:05:57 +0100 |
---|---|---|
committer | jan <jan@jandecaluwe.com> | 2005-03-26 14:05:57 +0100 |
commit | a77f584692c01151a33d85c32b23f8866b021c7c (patch) | |
tree | 3f50605e6b4a7c4ba916b7884d5e5d6145e137b2 /inc/parser.php | |
parent | eca0e1f9c70d33cd1e944fda5e8c7ac307588eef (diff) | |
download | rpg-a77f584692c01151a33d85c32b23f8866b021c7c.tar.gz rpg-a77f584692c01151a33d85c32b23f8866b021c7c.tar.bz2 |
Use first heading as page name in links.
I just read "Don't make me think!" by Steve Krug, about
web usability, and I liked its common sense a lot.
One message was that every page should have a title,
and that it should literally match what you click to
get there.
This patch tries to automate that for Dokuwiki. In wiki
page links, it will fetch the first heading (the title)
and use it as the name in links (unless an explicit other
name is defined in the link). The same is done for
the breadcrumbs (at least the default ones). I believe
all this should make navigation easier. The feature
is enabled/disabled with a configuration variable
called $conf['useheading'].
TO DO: more testing. Check whether the first heading is
at a unique high level (probably easier when true parsing
will be used.) Check hierarchical breadcrumbs. Perhaps
omit the title from the automatic table of contents,
and perhaps adapt the toc intentation of the lower
level headings.
darcs-hash:20050326130557-45605-bf7fdaf29e61924f2631af1bb95177ee0415c24d.gz
Diffstat (limited to 'inc/parser.php')
-rw-r--r-- | inc/parser.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/inc/parser.php b/inc/parser.php index 0fe04afba..e14c5bcd5 100644 --- a/inc/parser.php +++ b/inc/parser.php @@ -838,4 +838,21 @@ function mediaformat($text){ return format_link_build($link); } +/** + * Get first heading, to be used as a page title + * + * @author Jan Decaluwe <jan@jandecaluwe.com> + */ +function getFirstHeading($text){ + $title = ''; + $lines = split("\n",$text); + foreach($lines as $line){ + if(preg_match('/^\s*==+(.+?)==+\s*$/',$line,$matches)){ + $title = $matches[1]; + break; + } + } + return $title; +} + ?> |