-
Url per Modul ändern
Hallo,
ist es möglich die Url einer Seite in ein Modul nachträglich zu ändern?
Zum Beispiel wenn man im Url-Parameter "item" eine Id des Artikels stehen hat, diese ersetzt wird?
Also aus "seite.html?aid=4" wird seite/ich-bin-ein-artikel.html".
Ist so etwas möglich?
Danke im vorraus.
Philipp
-
Hi,
ja mit ner Weiterleitung?!
GET Parameter prüfen und dann entsprechend weiterleiten.
PHP-Code:
if(Input::get('aid') == 4)
{
Controller::redirect('seite/ich-bin-ein-artikel.html');
}
-
Wie weitergeleiten wenn die URL erst gar nicht existiert? Die URL muss doch erst umgeschrieben werden oder?
-
??
Also von deinem Post habe ich es so verstanden du hast eine ?aid=4 und willst, dass die URL auf seite/ich-bin-ein-artikel.html "umgeschrieben" wird.
Anscheinend hast du etwas anderes gemeint.
-
Meine ich auch so. Mit Umschreiben meine ich ob Contao eine Seite mit Parameter zu eine SEO- freundliche Url umformen kann.
Bei Typo3 (welches ich nicht so mag) gibt es die Extension Realurl oder Cooluri welches diese URL umformt.
-
Ach jetzt verstehe ich das. Ich denke deine Frage gehört wohl eher in den Bereich "was kann Contao" anstatt in den Entwicklerbereich.
Schau mal im Backend unter System -> Einstellungen -> Frontend-Einstellungen. Dort musst du lediglich den Haken "URL umschreiben" setzen (.htaccess.default in .htaccess umbenennen). Dann macht Contao das für dich automatisch, dann gibts keine "ids" mehr.
-
Ja das weiß ich.
Wenn ich aber selber ein fe- modul entwickle und beliebige get Parameter benutze, kann contao diese umschreiben?
Deshalb doch in Entwicklerforum^^
-
Ja müsste gehen. Deine "URL" ist ja nur ein Alias im System, welcher dann mit der Seite verbunden ist.
-
Wie?
Ich habe schon probiert den Alias über das $objPage zu ändern, leider wird nur das Array geändert aber nicht die URL?
PHP-Code:
$objPage->alias = "testurl";
Oder geht das anders?
-
wie willst Du den die URL ändern, wenn die Seite schon ausgeliefert ist?
wenn Dein Artikel die ID 4 hat und der Alias ich-bin-ein-artikel lautet sollte es möglich sein mit einem jumpTo auf den richtigen Artikel zu springen
http://api.contao.org/classes/Contao.ArticleModel.html
-
Verstehe ich irgendwie nicht ganz :(
Also ich generiere in mein Template folgenden Link:
PHP-Code:
echo "<a href='{{link_url::{{page::id}}}}?page=$i' $class>$i</a>"
Ausgabe der URL:
HTML-Code:
index.php/hausebelegung.html?page=3
Aussehen soll sie so:
HTML-Code:
index.php/hausebelegung/3.html
Ich weiß ist jetzt anders als oben beschrieben, will aber erst klein anfangen.
Kannst du mir bitte ein Beispiel geben wie so etwas aussehen kann?
-
Was ist denn eigentlich so verkehrt an dem GET-Parameter? Ob da jetzt page=3 steht oder /3.html ist doch vollkommen wurscht.
-
... das Echo deutet darauf hin, dass du irgendwo im PHP unterwegs bist...
PHP-Code:
$objPage = \PageModel::findWithDetails($intPageId]);
echo '<a href="/index.php/'.$objPage->alias.'/'.$i.'" '.$class.' >'.$i."</a>\n";
sofern der Alias mit html kommt, wegschneiden
-
Danke schonmal :)
Ich weis das es bei diesem Fall eigentlich egal sein dürfte, aber ich kenne Kunden die bestehen drauf :)
Eben anderes Beispiel warum ich es benötige:
www.domain.de/forum.html?forumid=3&topicid=55 soll zu http://www.domain.de/forum/subforum/...es-topics.html
Ist soetwas mit $this->generateFrontendUrl möglich?
edit:
Ich habe das page- script wie von zonky so umgesetzt, es kommt aber immer 404 :(
Ich habe das script auch mal mit $this->generateFrontendUrl angepasst, auch 404 :(
PHP-Code:
$objLink = \PageModel::findWithDetails(27);
$id = 2;
$this->Template->linktest = $this->generateFrontendUrl($objLink->row(), "/$id");
-
Ich hab es mit generateFrontendUri gelöst bekommen :)
PHP-Code:
$objLink = \PageModel::findByPk($objPage->id);
$page = \Input::get("page");
for ($i = 1; $i <= $pages; $i++) {
$link = ampersand($this->generateFrontendUrl($objLink->row(), "/$i"));
$navigation .= " <a href='$link'>$i</a> ";
}
Anschließend nur noch
PHP-Code:
\Input::setGet("page", \Input::get("auto_item"));
an Anfang schreiben.