To free up some space on my pages, I decided to delete the language block and place links for the three language choices into my Xanthia masthead design.
First, for reasons that may be obvious, I'm talking about with short urls enabled.
Easy enough to use the function.getrecentpath.php and append ?&newlang=XYZ to the path returned, but click on two langugage links in succession, or one link twice and it doesn't work so well as you get ...mycurrenturl?&newlang=XYZ?&newlang=ZYX.
Anyway, it seems to me that function.pngetrecentpath.php should strip everything after and including "?&newlang=" as, once set, that is extranous and not really the path.
So, not finding a plugin, I wrote the following. Hope someone finds it useful.
Slugger
<?php// $Id: function.langlinks.php,v 1.0 2006/04/18 15:22:21 Slugger Exp $// ----------------------------------------------------------------------// PostNuke Content Management System// Copyright (C) 2002 by the PostNuke Development Team.// http://www.postnuke.com/// ----------------------------------------------------------------------// Based on:// PHP-NUKE Web Portal System - http://phpnuke.org/// Thatware - http://thatware.org/// ----------------------------------------------------------------------// LICENSE//// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License (GPL)// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// To read the license please visit http://www.gnu.org/copyleft/gpl.html// ----------------------------------------------------------------------/**
* pnRender plugin
*
* This file is a plugin for pnRender, the PostNuke implementation of Smarty
*
* @package Xanthia_Templating_Environment
* @subpackage pnRender
* @version $Id: function.langlinks.php,v 1.0 2006/04/18 15:22:21 Slugger Exp $
* @author The PostNuke development team
* @link http://www.postnuke.com The PostNuke Home Page
* @copyright Copyright (C) 2002 by the PostNuke Development Team
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
*/ /**
* Smarty function to get URI of the recent site
*
*
* Available parameters:
* - assign: If set, the results are assigned to the corresponding variable instead of printed out
*
* Example
* <!--[langlinks linklang='lang' linkid='id' linktitle='title' linkurl='linkurl']-->!
*
* @author Slugger
* @since
* @param array $params All attributes passed to this function from the template
* @param object &$smarty Reference to the Smarty object
* @return string the value of the last status message posted, or void if no status message exists
*/function smarty_function_langlinks
($params, &
$smarty){ extract($params);
unset($params);
if (!pnConfigGetVar
('multilingual')) { return;
} $currentURL =
'index.php?' . pnServerGetVar
('QUERY_STRING');
if ($currentURL ===
'') { $currentURL =
'index.php';
} $pattern =
'/\?newlang=\w+/';
$currentURL =
preg_replace ($pattern,
'',
$currentURL);
$pattern =
'/\&newlang=\w+/';
$currentURL = pnVarPrepForDisplay
(preg_replace ($pattern,
'',
$currentURL));
$append =
"&";
if (strpos($currentURL,
'?') ===
false) { $append =
'?';
} $path =
"<a id=\"$linkid\" href=\"$currentURL".
$append.
"newlang=$linklang\" title=\"$linktitle\"><img src=\"images/flags/flag-$linklang.png\" alt=\"$linklang\" $imgsize[3] />$linkurl</a>";
if (isset($assign)) { $smarty->
assign($assign,
$path);
} else { return $path;
}}?>