Hallo und Willkommen im Forum
Also utopisch ist das nicht. Es ist nur nicht ganz so einfach.
Meine ersten Überlegungen dazu:
Die Seite "Arbeiten" müsste vom Typ her ein seiteninterner Link sein, der auf die erste untergeordnete Seite verweist.
Im Menutemplate müsste man dann für jeden Link prüfen, ob es sich um einen Verweis auf eine Seite handelt und welches Alias dieser Link hat (in Deinem Falle "arbeiten").
Ist dem so, wird nicht die URL des Links genommen, sondern die URL die ein UDT (Userdefined Tag = Benutzerdefinierte PHP Funktionen die man vom Backend aus verwalten kann) zurückliefert.
Dieser UDT bekommt als Parameter die ID des Links und liest so die untergeordneten Seiten dieses Links aus.
Mit einer PHP Zufallsfunktion wird eine dieser Seiten ausgewählt, die entsprechende URL gebastelt und dann zurückgeben.
Bis auf ein bissel PHP und Smarty Basics dürfte es da keine Probleme geben.
Der Benutzerdefinierte Tag könnte so aussehen:
Code: Select all
global $gCms;
$db = $gCms->GetDB();
$config = $gCms->GetConfig();
$url = $config['root_url'];
if(isset($params['parent_id']))
$parent_id = trim($params['parent_id']);
else
return $url;
$children = array();
$query = "SELECT content_alias, hierarchy_path FROM ".cms_db_prefix()."content WHERE parent_id=?";
$dbresult = $db->Execute($query, array($parent_id));
while($dbresult && $row = $dbresult->FetchRow()) {
$children[] = $row;
}
if(count($children))
$child = $children[array_rand($children,1)];
else
return $url;
if ($config["url_rewriting"] == 'mod_rewrite') {
if ($config['use_hierarchy'] == true) {
$url = $config['root_url']. '/' . $child['hierarchy_path'] . (isset($config['page_extension'])?$config['page_extension']:'.html');
}
else {
$url = $config['root_url']. '/' . $child['content_alias'] . (isset($config['page_extension'])?$config['page_extension']:'.html');
}
}
else {
if (isset($_SERVER['PHP_SELF']) && $config['url_rewriting'] == 'internal') {
if ($config['use_hierarchy'] == true) {
$url = $config['root_url'] . '/index.php/' . $child['hierarchy_path'] . (isset($config['page_extension'])?$config['page_extension']:'.html');
}
else {
$url = $config['root_url'] . '/index.php/' . $child['content_alias'] . (isset($config['page_extension'])?$config['page_extension']:'.html');
}
}
else {
$url = $config['root_url'] . '/index.php?' . $config['query_var'] . '=' . $child['content_alias'];
}
}
return $url;
(Einfach im Backend unter Erweiterungen->Benutzerdefinierte Tags als "get_random_child" speichern.)
Und das MenüTemplate z.B. so:
{if $count > 0}
{foreach from=$nodelist item=node}
{if $node->depth > $node->prevdepth}
{repeat string="" times=$node->depth-$node->prevdepth}
{elseif $node->depth prevdepth}
{repeat string="" times=$node->prevdepth-$node->depth}
{elseif $node->index > 0}
{/if}
{if $node->current == true}
Current page is {$node->hierarchy}: url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if} >{$node->menutext}
{elseif $node->parent == true}
url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}>{$node->hierarchy}: {$node->menutext}
{elseif $node->type == 'sectionheader'}
{$node->menutext}
{elseif $node->type == 'separator'}
{elseif $node->type == 'pagelink' && $node->alias=='Arbeiten'}
id}">{$node->menutext}
{else}
url}"{if $node->accesskey != ''} accesskey="{$node->accesskey}"{/if}{if $node->tabindex != ''} tabindex="{$node->tabindex}"{/if}{if $node->titleattribute != ''} title="{$node->titleattribute}"{/if}{if $node->target != ''} target="{$node->target}"{/if}>{$node->hierarchy}: {$node->menutext}
{/if}
{/foreach}
{repeat string="" times=$node->depth-1}
{/if}