Revision [1145]

This is an old revision of SmartTitle made by DarTar on 2004-09-08 08:49:07.

 

How to get smarter titles


By default, page titles in Wikka correspond to their WikiName.
Although this is consistent with Wiki philosophy, in some cases having a dumb WikiName as a title is pretty limiting:

Even though the AddSpace option might partially help, here's a quick and dirty way I figured out to produce smarter titles (you can see a working version of this action here).

This action adds to the title the highest-level header available in the page (in this case =====How to get smarter titles===== ). If no such header is found, then the standard WikiName is displayed.

If your wiki supports UTF-8, you can have beautiful titles encoded in different languages: just click one of the links listed on this page



First save the following code as actions/maketitle.php
I replaced the code with DreckFehler 's patch (see below)

	function PageTitle() {
		$pagecontent = $this->page["body"];
		for ($i = 2; $i <= 5; $i++) {
			if (ereg( "(=){".$i."}([A-Za-z0-9 ]*)(=){".$i."}", $pagecontent, $title)) {
				$title = str_replace("\"\"", "", $title[2]);
			}
		}
		if ($title) return $title;
		else return $this->GetPageTag();
	}


Then make the following change in actions/header.php

old:

       <title><?php echo $this->AddSpaces($this->GetWakkaName())." : ".$this->AddSpaces($this->GetPageTag()); ?></title>


new:

       <title><?php echo $this->AddSpaces($this->GetWakkaName())." : ".$this->Action("maketitle"); ?></title>


Comments and improvements are welcome

-- DarTar



Hi DarTar, thanks for sharing this improvement.

Your original code didn't give the expected results. It was grabbing everything between the first set of ===== and the last set. Even the revised fix code seemed to do the same thing. For example on this page, here's what it would return:
<title>Wikka : How to get smarter titles=====

By default, page titles in Wikka correspond to their WikiName.
Although this is consistent with Wiki philosophy, in some cases having a dumb WikiName as a title is pretty limiting:
  • They are not an optimal solution for visibility in search engines;
  • They cannot contain accents or other special characters;

Even though the AddSpace option might partially help, here's a quick and dirty way I figured out to produce smarter titles (you can see a working version of this action here).

This action adds to the title the highest-level header available in the page (in this case =====How to get smarter titles</title>


DreckFehler: your modification wouldn't seem to work at all. It just kept showing the normal wikiword page title.

Below is the regular expression that I came up. It's working, but I'm sure there's room for improvement.

	function PageTitle() {
		$pagecontent = $this->page["body"];
		for ($i = 2; $i <= 5; $i++) {
			if (ereg( "(=){".$i."}([A-Za-z0-9 ]*)(=){".$i."}", $pagecontent, $title)) {
				$title = str_replace("\"\"", "", $title[2]);
			}
		}
		if ($title) return $title;
		else return $this->GetPageTag();
	}
There are 8 comments on this page. [Show comments]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki