Problemstellung hier ist die falsche Indizierung von Artikeln bei Google. Alle Artikel einer Kategorie sollen eine bestimmte URL haben und nicht einzeln aufgerufen werden. Google schrieb in seinen Index für einen Artikel 2 Urls. Eine mit Kategorie und ein ohne Kategorie wie zum Beispiel "~/kategorie/artikel" und "~/artikel" so ergab sich ein Problem wegen doppelten "title"-Tags. Um das zu beheben müssen alle Artikel weitergeleitet werden.
Zuerst benötigen wir eine Funktion die den aktuellen Pfad des geöffneten Arikels in Joomla ausliest. $thisPath
liefert die Menü-ID des aktuellen Artikels.
$menu = &JSite::getMenu();
$active = $menu->getActive();
$path = isset($active) ? array_reverse($active->tree) : null;
$thisPath = $path[(count($path)-1)];
Mit dem folgenden Code können wir uns die ID der aktuellen Kategorie holen.
$db = JFactory::getDBO();
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$temp = JRequest::getString('id');
$temp = explode(':', $temp);
$id = $temp[0];
if ($option == 'com_content' && $view == 'article' && $id)
{ $db->setQuery('SELECT cat.id FROM #__categories cat RIGHT JOIN #__content cont ON cat.id = cont.catid WHERE cont.id='.$id);
$category_id = $db->loadResult(); //this is current article’s category ID
//echo $category_id;
}
Nun prüfen wir ob der aktuelle Arikel zur Kategorie gehört welche umgeleitet werden soll und ob der Pfad stimmt. Ist der aktuelle Pfad nicht richtig ($thisPath != 114
) wobei 114 die ID des gewünschten Menüpunktes ist, wird die aktuelle URL umgeschrieben. Zu Testzwecken einfach die Kommentarstriche (//) entfernen und die Kategorie sowie Menüpfad ablesen.
<?php /* Printing category title*/
if ($thisPath != 114 && $category_id == '12'){
$uri = $_SERVER['REQUEST_URI'];
$url = "/faq". $uri;
//echo $category_id;
//echo $url;
//echo $thisPath;
header ("Location: $url");
}?>