Wiki source for SmartTitle


Show raw source

=====How to get smarter titles=====

>>This is the development-page for smart-titles. It is integrated in Wikka since version 1.1.5.1. To see how it works, take a look at SmartTitlesInfo.>>

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:
~-[[WikiName]]s make **""VeryLongTitlesQuiteDifficultToUnderstand""**;
~-They are not an optimal solution for visibility in search engines;
~-They cannot contain accents or other special characters;

Even though the ""AddSpaces()"" 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 [[http://www.openformats.org/it | 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 [[HandlingUTF8 | UTF-8]], you can have beautiful **titles encoded in different languages**: just click one of the links listed on [[http://www.openformats.org/TestUTF8 | this page]]<<

---

Here's the code to add
++I replaced the code with DreckFehler 's patch (see below)++
''*sigh*, DreckFehler always gets the credit for my code.... :) - JsnX''
''Oops - my humblest apologies :) - DarTar''
''no, no, no! i could read that sentence again and again ;))) --DreckFehler''

%%
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:

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

new:

%%(php) <title><?php echo $this->AddSpaces($this->GetWakkaName())." : ".$this->PageTitle(); ?></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:
~-""WikiNames"" make ""**VeryLongTitlesQuiteDifficultToUnderstand**"";
~-They are not an optimal solution for visibility in search engines;
~-They cannot contain accents or other special characters;

Even though the ""AddSpaces()"" 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 ""[[http://www.openformats.org/it | 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.
ups! sorry, i haven't tested the small tweak. it actually didn't much more than the version before. i only changed the pattern [ \t\n\r]+ to \s+ which is virtually the same.
anyway, try the following to get a bit closer to the intended behaviour --DreckFehler

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

%%(php)<?
function PageTitle() {
$pagecontent = $this->page["body"];
for ($i = 2; $i <= 5; $i++) {
// if (ereg( "(=){".$i."}([A-Za-z0-9 ]*)(=){".$i."}", $pagecontent, $title)) {
if (ereg( "(=){".$i."}([^=]+)(=){".$i."}", $pagecontent, $title)) {

$title = str_replace("\"\"", "", $title[2]);
}
}
if ($title) return $title;
else return $this->GetPageTag();
}
?>%%
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki