Wiki source for AnchorAction

Show raw source

====Anchor in a Wiki page====

Make a file named anchor.php to put at ./actions directory. The content is
"anchor action"
author: DotMG <>
Parameters :
§ name : name of anchor to set
§ target : name of an anchor to go to
§ text : Text to be displayed on link to anchor, optional
§ title : optional, a code {{anchor target="Sometarget"}} without the parameter text will
display between tags <a> and </a> the value of parameter title, if set, when defining
{{anchor name="Sometarget"}}. (see usage).
§ h3 : Dispaly a <h3></h3> tag after the anchor newly set, all link to that anchor without
the parameter text will have h3 as caption.
§ special : if this parameter is set, its value should be one of "table_of_contents" or "usage"

> parameter name goes with title or h3, should not be used with parameter target.
> parameter target goes with text.

Special use :
. {{anchor special="table_of_contents"}} : Display a list of anchors having the parameter h3 set.
. {{anchor special="usage"}} : Show this help.

Usage :
{{anchor name="top" title="Top of page"}} => <a name="top"></a>
{{anchor target="top"}} => <a href="#top">Top of page</a>
{{anchor target="top" text="Back to top"}} => <a href="#top">Back to top</a>
{{anchor name="paragraph1" h3="Introduction"}} => <a name="paragraph1"></a><h3>Introduction</h3>
{{anchor target="paragraph1"}} => <a href="#paragraph1">Introduction</a>

$name = $vars['name'];
$text = $vars['text'];
$target = $vars['target'];
$special = $vars['special'];

if ($special)
if ($special == 'table_of_contents')
echo "<<anchor table_of_contents>>";
if ($special == 'usage')
$fp = fopen('actions/anchor.php', 'r');
$data = fread($fp, 1000000);
$data = preg_replace("#(^.*/\*\*|\*\*/.*$)#ms", '', $data);
echo nl2br(htmlspecialchars($data));
if ($name)
echo "<a name=\"$name\"></a>";
if ($vars['h3'])
echo "<h3>$h3</h3>";
$this->anchor_list[$name] = $h3;
$this->anchor_list['table_of_contents'] .= "<a href=\"". $this->Href('', $this->tag) ."#$name\">$h3</a><br />\n";
if ($vars['title'])
$this->anchor_list[$name] = $title;
if ($target)
if (!$text)
if ($this->anchor_list[$target])
$text = $this->anchor_list[$target];
$text="<<anchor $target>>";
echo "<a href=\"".$this->Href('', $this->tag)."#$target\">$text</a>";

~& I changed the last line in the above code to use ""$this->Href('', $this->tag)"" instead of $this->tag. NickDamoulakis
~& I changed the other line in the above code to use ""$this->Href('', $this->tag)"" instead of $this->tag and also fixed the {} as per comments below. MyTreo

Following lines shoud be added at end of ./formatters/wakka.php :
if (isset($this->anchor_list))
$text = preg_replace("/<<anchor (.*?)>>/e", "\$this->anchor_list['\\1'] ? \$this->anchor_list['\\1'] : '\\1';", $text);

echo ($text);


Pierre79 -07/3/05
I propose to write ...
in the head of header.php
<a name="top"></a>
<a href="#bottom" title="Click to go to bottom of this page"> v </a>;
in the foot of footer.php.php
<a name="bottom"></a>
<a href="#top" title="Click to go to the top of this page"> ^ </a>';
~&The name attribute for identifying page fragments is deprecated though; better to use id instead (still valid in XHTML 1.0 strict and 1.1, probably also will be in 2.0). See also TableOfContentsAction for related ideas about generating anchors. --JavaWoman
~~&ph Thank you. Do not hesitate to correct my text directly and... to remove this message --Pierre79

In Header.php, add (only!) the lines that begin with ""----->""
// Create anchor
-----> <a name="top" id="top"></a>
<title><?php echo $this->GetWakkaName().": ".$this->PageTitle(); ?></title>
<base href="<?php echo $site_base ?>" />
<?php if ($this->GetMethod() != 'show' || $this->page["latest"] == 'N' || $this->page["tag"] == 'SandBox') echo "<meta name=\"robots\" content=\"noindex, nofollow, noarchive\" />\n"; ?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="keywords" content="<?php echo $this->GetConfigValue("meta_keywords") ?>" />
<meta name="description" content="<?php echo $this->GetConfigValue("meta_description") ?>" />
<link rel="stylesheet" type="text/css" href="css/<?php echo $this->GetSkin() ?>" media="screen" />
<link rel="stylesheet" type="text/css" href="css/print.css" media="print" />
<link rel="stylesheet" type="text/css" href="css/sidenote.css" />
<body <?php echo $message ? "onLoad=\"alert('".$message."');\" " : "" ?> >
<div class="header">
<h2><?php echo $this->config["wakka_name"] ?> : <a href="<?php echo $this->href("", "TextSearch", "phrase=").urlencode($this->GetPageTag()); ?>"><?php echo $this->GetPageTag(); ?></a></h2>

echo $this->Link($this->config["root_page"]);
// Create link to bottom anchor
-----> echo " :: <a href=\"".$this->Href('', $this->tag)."#bottom\">Go bottom</a>";
?>%% NickDamoulakis

In Footer.php, add (only!) the lines that begin with ""----->""
echo $this->FormOpen("", "TextSearch", "get");
// Create anchor
-----> echo('<a name="bottom" id="bottom"></a>');
// Create link to top anchor
-----> echo "<a href=\"".$this->Href('', $this->tag)."#top\">Go top</a> :: ";

echo $this->HasAccess("write") ? "<a href=\"".$this->href("edit")."\" title=\"Click to edit this page\">Edit page</a> ::\n" : "";
echo "<a href=\"".$this->href("history")."\" title=\"Click to view recent edits to this page\">Page History</a> ::\n";
echo $this->GetPageTime() ? "<a href=\"".$this->href("revisions")."\" title=\"Click to view recent revisions list for this page\">".$this->GetPageTime()."</a> <a href=\"".$this->href("revisions.xml")."\" title=\"Click to view recent page revisions in XML format.\"><img src=\"images/xml.png\" width=\"36\" height=\"14\" align=\"middle\" style=\"border : 0px;\" alt=\"XML\" /></a> ::\n" : "";

// if this page exists
%% NickDamoulakis

~& I changed above code to use %%".$this->Href('', $this->tag)."%% instead of %%{$this->Href('', $this->tag)}%% MyTreo

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki