it-swarm.com.de

Deaktiviert das Entfernen des Parameters aus der URL

Ich schreibe eine Komponente mit zwei Ansichten - einer Listenansicht und einer Artikelansicht.

Die Listenansicht generiert die Links für jeden Artikel wie folgt, wobei $ text die Variable ist, die ich in der URL haben möchte.

<?php echo JRoute::_("index.php?Itemid=103&testvar=".strtolower($text)); ?>

dh http://www.test.com/test ist die Listenseite und ich möchte http://www.test.com/test/text als Artikelseite

103 ist die Menüelement-ID, unter der sich die Komponente befindet. Dies wird auf die Listenansicht gesetzt.

Mein Router enthält den folgenden Code:

if(isset($query['testvar']))
    {        
     $segments[] = $query['testvar'];
     unset($query['testvar']);

    };

Dies erzeugt die folgende URL: http://www.test.com/test/text?testvar=text

unset($query['testvar']); scheint nicht zu funktionieren, um das ?testvar=text - Bit zu entfernen. Alles andere funktioniert wie erwartet.

Eine Problemumgehung wäre <?php echo JRoute::_("index.php?Itemid=103")."/".strtolower($text); ?> - aber das scheint hacky.

Irgendwelche Ideen?

3
Richard B

Schauen Sie sich die JUri :: delVar-Methode an: https://api.joomla.org/cms-3/classes/Joomla.CMS.Uri.Uri.html#method_delVar

JUri::delVar('testvar');

Arbeitete perfekt für mich :)

0

Angenommen, Sie können nur eine Listenansicht haben, dann sollte Ihre BuildRoute -Funktion maximal 1 Segment haben (das ist der Artikel-Alias). Sie sollten alle anderen Segmente deaktivieren (versuchen Sie es mit einem print_r um zu sehen, was Sie deaktivieren sollten.

In Ihrer Funktion ParseRoute überprüfen Sie die Anzahl der Segmente und geben entweder die Listenansicht oder die Artikelansicht zurück. Hier ist wie:

if (count($segments) == '0'){ //it's a list view
    `return array('option'=>'com_yourcomponent', 'view'=>'list', 'Itemid'=>[the item id of your choice]);`
else //it's an article view
    `return array('option'=>'com_yourcomponent', 'view'=>'article', 'testvar' => $segments[0], 'Itemid'=>[the item id of your choice]);`
1
itoctopus