[gelöst] Spezielle Fehlerseite, wenn unpublished Node auf 403-Fehler führt
am 17.02.2015 - 16:56 Uhr in
Wir importieren jede Nach 1000e von Produkt-Daten diverser Händler-Shops in Nodes.
Dabei werden die Nodes eines Händlers vorher auf Status = 0 gesetzt und nur wenn sie im CSV Import vorkommen, werden sie via Feeds wieder auf status=1 gesetzt.
So werden der Produktkataloge aktuell gehalten.
Die Einträge sollen nicht gelöscht werden, weil das Produkt evt. in einer Woche wieder in der CSV geliefert wird und die in Drupal hinterlegten Flags und Kommentare nicht verloren gehen sollen.
Nun ist es unschön, daß solche Seiten, die ja bei Google im Index stehen, auf einen 403-Fehler "Zugriff verweigert" führen.
Sinnvoller wäre eine individuelle Fehlerseite "Produkt leider momentan nicht verfügbar".
Wie könnte man das am Besten unterscheiden?
Gibt es ein Modul, daß eine spezielle Fehlerseite für unpublished Nodes pro Inhaltstyp zuläßt oder muß man sich da ein Modul schreiben.
Das Modul CustomError habe ich angesehen, scheint aber diese Unterscheidung nicht zu machen.
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Regina,Kannst du das
am 17.02.2015 - 17:09 Uhr
Hallo Regina,
Kannst du das nicht einfach mit Rules lösen.
Auslöser: When content is viewed
Bedingung: Content is unpublished
Aktion: Redirect auf eine entsprechende Seite.
Sollte doch funktionieren oder ?
Gruß
Berthold
Drupal Video-Tutorials
Das Problem ist, daß mit der
am 17.02.2015 - 17:23 Uhr
Das Problem ist, daß mit der Funktion drupal_access_denied() der Header schon sehr frühzeitig auf 403 gesetzt wird und damit alle Drupal eigenen Logiken gar nicht erst angesprochen werden.
So habe ich es zumindest gelesen.
Diesen Vorgang müßte man umgehen.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Ich habe das mal lokal bei
am 17.02.2015 - 17:34 Uhr
Ich habe das mal lokal bei mir getestet, da funktioniert es einwandfrei.
[Nachtrag]
Aaaahh ich war als Admin eingeloggt. Dann funktioniert es.
Drupal Video-Tutorials
Tja, der Admin hat das
am 17.02.2015 - 17:39 Uhr
Tja, der Admin hat das Problem sowieso nicht. ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Könnte man das nicht über
am 17.02.2015 - 18:43 Uhr
Könnte man das nicht über Views Kontextfilter regeln, Beitrags-ID wählen, dann:
Falls der Filterwert NICHT verfügbar ist
und dann kommt die Auswahl Vorgabewert bereitstellen?
Bin nur nicht sicher ob das bei 403 auch zutreffen kann.
Grüße Jenna
Jenna, das hilft in dem Fall
am 17.02.2015 - 18:52 Uhr
Jenna, das hilft in dem Fall nicht, weil ja die Aliase des Nodes (nicht der View) bei Google im Index sind.
Und vermutlich greift auch hier der 403-Mechanismus via Header bevor die View überhaupt tangiert wird.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Mir scheint in _diesem_ Fall
am 18.02.2015 - 00:08 Uhr
Mir scheint in _diesem_ Fall die Methode mit "published"/"unpublished" eher ungeeignet.
Ich würde das über ein zusätzliches Feld im Node zu lösen versuchen. In Views simpel filterbar, und in der Detail-Darstellung über ein eigenes Node-Template unterschiedlich darstellbar.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
Hallo Regina,ich habe jetzt
am 18.02.2015 - 14:15 Uhr
Hallo Regina,
ich habe jetzt doch mal eine Lösung mit Rules "ausbaldowert".
Auch auf die Gefahr hin, dass ich von Steffen wieder eines über den Rüssel bekomme, weil PHP in der Datenbank steht.
Ich weiß, dass das nicht gut ist :-(
hier also die Rule:
Event: System-Log-Eintrag wird erstellt.
Damit steht dir bei Conditions ein Array: $log_entry zur Verfügung
Das Array $log_entry enthält unter anderem die folgenden Felder:
$log_entry['type'] und $log_entry['message']
type ist z.B.: access denied und message ist die node, die unveröffentlicht ist, die also das "access denied" ausgelöst hat, z.B. node/8
Du weißt jetzt also, dass der Aufruf der Seite einen access denied Eintrag ausgelöst hat und welche Node davon betroffen ist.
Dann kannst du entweder die Action (Seitenweiterleitung) ausführen oder eben nicht.
Wenn ich das richtig verstanden haben, soll ja diese spezielle 403 Seite nur bei bestimmten Nodes gezeigt werden, aber wie schon gesagt, du hast ja die NID.
Ich habe das auch lokal bei mir getestet und es funktioniert gut bei mir.
Gruß
Berthold
Drupal Video-Tutorials
@Leda, das mit dem
am 18.02.2015 - 07:01 Uhr
@Leda, das mit dem Alternativ-Feld habe ich auch im Hinterkopf als Ersatzlösung.
Soweit habe ich damals einfach nicht gedacht.
Falls Bertholds Lösung nicht funzt, werde ich das wohl machen müssen.
@Berthold, boahh...soviel Mühe, danke!
Das hört sich sehr gut an. Ich werde es probieren und berichten.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Jaaa...funktioniert wunderbar
am 18.02.2015 - 07:54 Uhr
Jaaa...funktioniert wunderbar mit der Rule.
Danke noch mal Berthold, evt. Anschiss bitte an mich weiter leiten. ;-)
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de