Willkommen im neuen Forum von concrete5.de.
Die Anmeldung ist ab dem 15.10.2020 nur noch mit E-Mail Adresse und Passwort möglich. Eine Anmeldung mit Benutzername ist nicht mehr möglich.
Diese Nachricht löschen.
Anhang entfernen?
Zurück zur Themenliste
S
Steff 18.12.2009 12:54
Weiterleitung bei Seitenaufruf Gelöst
Mittels dem Seitenattribut replace_link_with_first_in_nav kann man in einem Menü beim klicken auf den Menüeintrag die erste Unterseite anzeigen lassen. Das funktioniert auch supper.
Beispiel:
Menü1
--> SubMenü1
--> SubMenü2
Wenn nun dem Menü1 das replace_link_with_first_in_nav Attribut gegeben wird, wird beim Klick auf Menü1 automatisch die SubMenü1 angezeigt. Menü1 braucht somit keinen Content, da ja direkt auf SubMenü1 weitergeleitet wird. Es wird als http://mydom.com/Menue1/SubMenue1 aufgerufen.
Leider funktioniert das nur, innerhalb einer Seite. Wenn ich im Browser http://mydom.com/Menue1/ aufrufe, dann wird mir auch die Menue1 angezeigt. Ich möchte aber, dass diese Seite dann auch automatisch auf SubMenue1 weitergeleitet wird.
Im C5.org Froum habe ich bereits gelesen, dass dies mittels MetaTags machbar wäre. Nur leider wird dann die zuerst die Seite Menue1 komplett geladen und danach die SubMenue1, was ein "Flackern" des Browsers mit sich bringt.
Gibt es eine Alternative möglichkeit? Ich denke, dass das hauptproblem darin liegt, dass wenn man dem Menue1 einen Redirect auf SubMenue1 mitgibt, dass Menue1 danach nicht mehr so einfach bearbeitet werden könnte, was eigentlich auch nicht nötig ist, da die Seite ja keinen Inhalt haben wird.
So. Langer Rede kurzer Sinn,
Wie kann ich beim Direktaufruf über eine URL auf die nächste Unterseite weiter leiten?
Danke
Steff
Beispiel:
Menü1
--> SubMenü1
--> SubMenü2
Wenn nun dem Menü1 das replace_link_with_first_in_nav Attribut gegeben wird, wird beim Klick auf Menü1 automatisch die SubMenü1 angezeigt. Menü1 braucht somit keinen Content, da ja direkt auf SubMenü1 weitergeleitet wird. Es wird als http://mydom.com/Menue1/SubMenue1 aufgerufen.
Leider funktioniert das nur, innerhalb einer Seite. Wenn ich im Browser http://mydom.com/Menue1/ aufrufe, dann wird mir auch die Menue1 angezeigt. Ich möchte aber, dass diese Seite dann auch automatisch auf SubMenue1 weitergeleitet wird.
Im C5.org Froum habe ich bereits gelesen, dass dies mittels MetaTags machbar wäre. Nur leider wird dann die zuerst die Seite Menue1 komplett geladen und danach die SubMenue1, was ein "Flackern" des Browsers mit sich bringt.
Gibt es eine Alternative möglichkeit? Ich denke, dass das hauptproblem darin liegt, dass wenn man dem Menue1 einen Redirect auf SubMenue1 mitgibt, dass Menue1 danach nicht mehr so einfach bearbeitet werden könnte, was eigentlich auch nicht nötig ist, da die Seite ja keinen Inhalt haben wird.
So. Langer Rede kurzer Sinn,
Wie kann ich beim Direktaufruf über eine URL auf die nächste Unterseite weiter leiten?
Danke
Steff
S
Steff 18.12.2009 13:14
1. Sorry für den Doppelpost.
2. habe ich einen Weg gefunden. Ob der gut ist oder nicht, das sei mal so dahin gestellt. Wenn also jemand noch einen besseren oder anderen Weg haben sollte, habe ich immer ein offenes Ohr.
Meine Lösung:
Ich habe im header.php des Themes folgende Zeilen eingefügt.
<?php
$nh = Loader::helper('navigation');
if ($c->getCollectionAttributeValue('MenuOnly')) {
$subPage = $c->getFirstChild();
if ($subPage instanceof Page) {
$pageLink = $nh->getLinkToCollection($subPage);
}
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$pageLink\" />";
}
?>
Das hat folgende Auswirkung. Wenn also das PageAttribute MenuOnly gesetzt ist, dann wird das erste Kind von diesem Menueintrag in der $pageLink gespeichert. Anschliessend wird mit einem META TAG zu genau der Seite weiter geleitet.
Gruss,
Steff
2. habe ich einen Weg gefunden. Ob der gut ist oder nicht, das sei mal so dahin gestellt. Wenn also jemand noch einen besseren oder anderen Weg haben sollte, habe ich immer ein offenes Ohr.
Meine Lösung:
Ich habe im header.php des Themes folgende Zeilen eingefügt.
<?php
$nh = Loader::helper('navigation');
if ($c->getCollectionAttributeValue('MenuOnly')) {
$subPage = $c->getFirstChild();
if ($subPage instanceof Page) {
$pageLink = $nh->getLinkToCollection($subPage);
}
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$pageLink\" />";
}
?>
Das hat folgende Auswirkung. Wenn also das PageAttribute MenuOnly gesetzt ist, dann wird das erste Kind von diesem Menueintrag in der $pageLink gespeichert. Anschliessend wird mit einem META TAG zu genau der Seite weiter geleitet.
Gruss,
Steff
R
Remo 21.12.2009 13:57
Das ist etwas lästig, lässt sich aber eigentlich relativ elegant mit den "Application Events" umsetzen.
Folgendes Event einbinden:
Events::extend('on_before_render', 'RedirectUrl', 'redirectUrl', 'helpers/redirect_url.php');
Und in helpers/redirect_url.php kann man anschliessend das Attribut auslesen
class RedirectUrl{ function redirectUrl($page) { // Hier prüfen ob Attribut gesetzt und wenn ja umleiten.. }}
Folgendes Event einbinden:
Events::extend('on_before_render', 'RedirectUrl', 'redirectUrl', 'helpers/redirect_url.php');
Und in helpers/redirect_url.php kann man anschliessend das Attribut auslesen
class RedirectUrl{ function redirectUrl($page) { // Hier prüfen ob Attribut gesetzt und wenn ja umleiten.. }}
R
Remo 22.12.2009 08:25
du musst Events::extend in site_events.php einfügen und diese Zeile in site.php einfügen:
<?php define('ENABLE_APPLICATION_EVENTS', true); ?>
Ansonsten findest du hier ein hübsches und vor allem kleines Beispiel von Marc: http://www.concrete5.org/marketplace/addons/scala-it-browser-update-notification
<?php define('ENABLE_APPLICATION_EVENTS', true); ?>
Ansonsten findest du hier ein hübsches und vor allem kleines Beispiel von Marc: http://www.concrete5.org/marketplace/addons/scala-it-browser-update-notification
P
paperized 08.06.2010 22:23
Hi,
schlage mich jetzt seit geraumer Zeit mit einem ähnlichen, wenn nicht sogar dem selben Problem herum. Wenn man meine Domain aufruft, soll automatisch in die erste, in der Hierarchie "tiefste" Seite gesprungen werden. Das würde jetzt in dem Fall wie folgt ausschauen:
home
|- portfolio
|-- web
|--- projekt 1
|--- projekt II
usw.
Man kommt also per Domainaufruf bei der Homeseite an. Dort soll dann sofort auf Projekt I bzw. das aktuellste Weitergeleitet werden. Habe hier auch euren Lösungsansatz getestet, allerdings kommt dann eine Fehlermeldung:
Fatal error: Non-static method RedirectUrl::redirectUrl() cannot be called statically in /Users/paperized/Sites/paperized/paperized-c5/updates/concrete5.4.0.5/concrete/libraries/events.php on line 160
schlage mich jetzt seit geraumer Zeit mit einem ähnlichen, wenn nicht sogar dem selben Problem herum. Wenn man meine Domain aufruft, soll automatisch in die erste, in der Hierarchie "tiefste" Seite gesprungen werden. Das würde jetzt in dem Fall wie folgt ausschauen:
home
|- portfolio
|-- web
|--- projekt 1
|--- projekt II
usw.
Man kommt also per Domainaufruf bei der Homeseite an. Dort soll dann sofort auf Projekt I bzw. das aktuellste Weitergeleitet werden. Habe hier auch euren Lösungsansatz getestet, allerdings kommt dann eine Fehlermeldung:
Fatal error: Non-static method RedirectUrl::redirectUrl() cannot be called statically in /Users/paperized/Sites/paperized/paperized-c5/updates/concrete5.4.0.5/concrete/libraries/events.php on line 160
P
paperized 08.06.2010 22:26
Achso noch die Details:
im Ordner root/helpers befindet sich die redirect_url.php in der folgendes steht:
<?php
class RedirectUrl {
function redirectUrl($page) {
// Hier prüfen ob Attribut gesetzt und wenn ja umleiten..
if(!isset($_SESSION['uID'])){
$nh = Loader::helper('navigation');
if ($c->getCollectionAttributeValue('MenuOnly')) {
$subPage = $c->getFirstChild();
if ($subPage instanceof Page) {
$pageLink = $nh->getLinkToCollection($subPage);
}
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$pageLink\" />";
}
}
}
}
?>
Im Ordner root/config habe ich in der site.php folgende Zeile eingefügt:
define('ENABLE_APPLICATION_EVENTS', true);
und in der site_events.php steht Folgendes:
<?php
Events::extend('on_before_render',
'RedirectUrl',
'redirectUrl',
'helpers/redirect_url.php');
?>
im Ordner root/helpers befindet sich die redirect_url.php in der folgendes steht:
<?php
class RedirectUrl {
function redirectUrl($page) {
// Hier prüfen ob Attribut gesetzt und wenn ja umleiten..
if(!isset($_SESSION['uID'])){
$nh = Loader::helper('navigation');
if ($c->getCollectionAttributeValue('MenuOnly')) {
$subPage = $c->getFirstChild();
if ($subPage instanceof Page) {
$pageLink = $nh->getLinkToCollection($subPage);
}
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$pageLink\" />";
}
}
}
}
?>
Im Ordner root/config habe ich in der site.php folgende Zeile eingefügt:
define('ENABLE_APPLICATION_EVENTS', true);
und in der site_events.php steht Folgendes:
<?php
Events::extend('on_before_render',
'RedirectUrl',
'redirectUrl',
'helpers/redirect_url.php');
?>
R
Remo 11.06.2010 10:55
Meta Refresh ist kein guter Ansatz in diesem Fall.
Die Seite wird trotzdem angezeigt, der Benutzer braucht länger bis er auf der neuen Seite ist und der Server muss mehr Code verarbeiten.
ich würde hier eher etwas in dieser Richtung empfehlen:header("location: http://www.bla.com");
Die Seite wird trotzdem angezeigt, der Benutzer braucht länger bis er auf der neuen Seite ist und der Server muss mehr Code verarbeiten.
ich würde hier eher etwas in dieser Richtung empfehlen:header("location: http://www.bla.com");
Nachricht hinzufügen
Sie müssen sich anmelden , um diese Konversation zu posten.