Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Seite Nicht vorhanden = Startseite. Änderbar?

Begonnen von -FuFu-, 25. April 2013, 16:00:11

« vorheriges - nächstes »

-FuFu-

Mahlzeit zusammen,
ich hoffe mein Titel ist aussagekräftig genug, ich versuch mein Problem kurz zu beschreiben.
Und ich hoffe das es zu dem Problem nicht schon eine Lösung gibt, die ich übersehen hab.

Bei mozilocms ist es ja so, das er die Startseite/erste Seite der Kategorie anzeigt, wenn die aufgerufene Seite nicht existiert.
Das kommt gern mal vor, wenn veraltete Lesezeichen oder alte Google Links genutzt werden.
Für kleinere Private Seiten ist dies sicher ein guter weg.

Ich würd aber gern eine Fehlerseite Aufrufen lassen in diesem Fall, und die frage wäre da, wie ich dies am besten machen könnte.
Ich besitze bereits eigene Fehlerseiten als .htm auf dem Server, diese werden bei einem Fehler auch aufgerufen, solange es sich nicht um falsche .html verlinkungen handelt, da diese durch mod_rewrite ja auf das cms verlinkt werden.

Am liebsten wäre mir ein hack, den man in der index.php nutzen kann oder eventuell ein plugin?
Das aufrufen der Fehlerseite durch eine "versteckte" cms Seite an erster Stelle in jeder Kategorie wäre sicher auch möglich, aber dies müsste dann für jede Kategorie erledigt werden, und ich müßte meinem Kunden (für den ich die Seite erstellt habe und warte) erklären warum dies so ist, und es sieht im Admin Bereich auch nicht so schön aus.


Ich hoffe das es da eine Möglichkeit gibt, ich würd mich auch gern beteidigen an der Umsetzung und beim coden, nur blick ich derzeit im code noch nicht ganz durch, wo ich da ansetzten könnte, mein ansatz wäre sonst gewesen:
if kat != exists then -> 404.htm
und das gleiche für die Inhaltsseite.
Als plugin wäre es natürlich sehr nice, da man dort die 404.htm selbst definieren könnte.
Und ich bin gern bereit zu helfen, wo ich kann ;) ich müßte nur einen Ansatz finden.


Infos zum eingesetztem System:
moziloCMS-Version: 1.12 ("Amalia") Revision 951
PHP-Version: 5.3.22
Safe-Mode aktiv: Ja (funktioniert trotzdem alles fehlerfrei bisher)
mod_rewrite: aktiv

stefanbe

Hi

Brauchst du eine Fehlerseite das die Suchmaschienen das mitkriegen das es die nich mehr gibt?

lg stefanbe

-FuFu-

öhm, daran hab ich gar nicht gedacht ;)
aber ja, das sollte da dann wohl auch noch mit rein, falls es da eine andere Möglichkeit wie eine 301 Weiterleitung per .htaccess gibt.

aber grundlegend geht es mir erst mal um die Möglichkeit, dem "Besucher der Webseite" zu zeigen, das die Aufgerufene Seite nicht mehr existiert (ob nun verschoben, unbenannt oder gelöscht), und da finde ich eine einfache Umleitung zur Startseite, wie es bei mozilocms ist nicht ausreichend.

ansonsten finde ich mozilocms echt super, da es genau das ist, was man (in dem Fall ich) braucht, relativ klein, übersichtlich und kann das, was ein cms können muß, nur eben das einrichten von Fehlerseiten fehlt mir da persönlich halt noch, und wenn das per Plugin umsetzbar wäre, wäre das natürlich super und der ein oder andere User würd es sicher auch nutzen.


bleibt eben die frage der Umsetzbarkeit, da meine php Kenntnisse relativ begrenzt sind (aber google hilft mir oft weiter) finde ich eben keinen Ansatz dafür und in Sachen Plugin schreiben/entwickeln bin ich absoluter Anfänger, aber der wille zu helfen und lernen ist da :D

hausl78

Jetzt abgesehen von der konkreten tech. Umsetzung...

Ev. so wie bei einem Forum wenn man sich anmeldet.. Also ein Text in der Art die Seite ist leider nicht (mehr) vorhanden sie werden auf unsere aktuellen Inhalte weitergeleitet mit LInk zur Startseite bzw. ein Meta Weiterleitung nach zB 5 Sekunden.

LG

-FuFu-

Zitat von: hausl78 am 25. April 2013, 20:10:55
Jetzt abgesehen von der konkreten tech. Umsetzung...

Ev. so wie bei einem Forum wenn man sich anmeldet.. Also ein Text in der Art die Seite ist leider nicht (mehr) vorhanden sie werden auf unsere aktuellen Inhalte weitergeleitet mit LInk zur Startseite bzw. ein Meta Weiterleitung nach zB 5 Sekunden.

LG
sowas wäre ein Anfang und wenn man sowas nun als plugin machen würde, könnte man dort ja per Einstellung angeben, das er entweder ein "Template" verwendet, wo ein Infotext steht und dann auf die Startseite weiter leitet oder eine eigene Seite angeben kann, das wäre für mich eine ideale Lösung.

die frage wird wohl die Umsetzung sein, ich hab mich schon versucht in den code des cms einzuarbeiten, diverse teile versteh ich auch schon, ich weis nur nicht WO das cms ermittelt ob die Seite/Kategorie existiert und wenn nicht, das er dann die Startseite/erste Seite der Kategorie anzeigt, dort müßte man dann ja ansetzten, daher hab ich ja im Forum gefragt ;)
denn an der stelle könnte dann ja ein plugin/hack ansetzten, der dann bei "seite != exist" eingreift und halt auf die definierte Seite umleitet.


ich hoffe das meine Denkvorgänge nicht zu kompliziert sind ^^ kurz gesagt, wäre mir ein plugin lieb, was bei nicht existieren Inhaltsseiten/Kategorien auf eine in den Einstellungen definierte Seite weiterleitet oder eine definierte Inhaltsseite läd (per Inhaltsseite kann man ja auch vieles Anzeigen lassen dann)
vielleicht wäre das ganze ja auch als "Standard Funktion" in der neuen mozila 2.0 interessant, das man eben bei nicht existieren Seiten eine Bestimmte Seite laden lässt, die man selbst wählen kann, ich persönlich fand es super ;) und wäre ein grund mehr auf die 2.0 dann zu wechseln

wasp

klar ... anhängig vom cms-code / rückmeldung ... habe stefanbe mal ne PM geschickt ...

hausl78

Zitat... eigene Seite angeben kann,...

Achtung!! Wenn es die nämlich auch ev. vielleicht mal nicht mehr gibt landet man im schlimmsten Fall in einer Endlosschleife oder es passiert irgendwas blödes..

Nur so im Hinterkopf für später ;-)

-FuFu-

#7
Zitat von: hausl78 am 25. April 2013, 21:47:09
Zitat... eigene Seite angeben kann,...

Achtung!! Wenn es die nämlich auch ev. vielleicht mal nicht mehr gibt landet man im schlimmsten Fall in einer Endlosschleife oder es passiert irgendwas blödes..

Nur so im Hinterkopf für später ;-)
das stimmt ;) aber ich teste vorher immer alles 2 mal, bevor ich es freigebe (oder bei Kunden nutze).
und daher ja auch die plugin idee, dort könnte man sicher auch sowas wie einen default wert setzen (ein im plugin enthaltenes template) was aufgerufen wird, wenn das "selbst gewählte" nicht existiert oder so ;)
das wäre da dann wohl der sicherste weg, um solche "schleifen" zu umgehen


edit:::
ich hab zwar in der index.php nun die stelle gefunden, wo die kat/inhaltsseite geprüft wird, aber ich wüsste im moment nicht, wie man dort eingreifen könnte, wenn ich das richtig gesehen hab, sollte das in der index.php zwischen Zeile 188 und 229 liegen, aber meine können in sachen php und mozilocms stoßen hier an ihre grenzen

stefanbe

Ich würde das mit der 2.0 machen, da so eingreifende sachen mit der 1.12 noch nicht wirklich so möglich ist.

da gibts mehr möglichkeiten
1. du kanst die $_GET['cat'] $_GET['page'] abfragen auch bei mod_rewrite
und damit nachschauen obs die seite gibt
2. du kanst ein Plugin als erstes ausführen lassen und hast dann zugrif auf das template und kanst auch den pageinhalt selbst bestimmen.

ich geb dir gerne die tips zu den functionen die du brauchst wenn du dich entschieden hast 2.0 oder 1.12

lg stefanbe

-FuFu-

ich persönlich würd derzeit noch gern bei der 1.12 bleiben, da ich mich da sehr gut eingearbeitet hab und die 1.12 auch bei aktivem safe mode ohne Probleme funktioniert, die 2.0 bekomm ich da nicht zum laufen (ich habe bei dem einem webspace wo ich diese Funktion gern nutzen würde leider nicht die Möglichkeit safe mode zu deaktivieren)

wenn es per mod_rewrite geht, würd mir das erstmal reichen :) und sollte zweckmässig wohl vollkommen ausreichen, daher wäre ich da für Unterstützung sehr dankbar.

ich bedanke mich auf jedenfall für die Mühe und Unterstützung, und hoffe das meine Idee vielleicht den weg in die 2.0 findet, da ich mein eigenes Projekt später gern updaten würde und die Funktion für mich persönlich doch recht interessant ist und für spätere Projekte sicherlich auch nützlich wäre. Und ich würd gern bei mozilo bleiben, da es für mich das beste cms ist und sehr leicht an die eigenen Bedürfnisse anpassbar ist, daher mein Lob an alle Beteiligten für die super Arbeit.

stefanbe

hab mir das in der 1.12 mal näher angeschaut und folgendes solte gehen

du hoslst dir im plugin mit global die variablen
$CAT_REQUEST_URL = die cat die über die url kamm wenn die lehr ist dann würde nur die domain angegeben
$PAGE_REQUEST_URL = die page
$CAT_REQUEST = die cat mit position die mozilo ermitelt hat die enthält immer eiene gültig cat und wens die default cat ist
$PAGE_REQUEST = die enthält auch immer eiene gültig page und wens die default page ist

so nun der ablauf
1. wenn $CAT_REQUEST_URL lehr ist kanste gleich retun null; aufrufen
2. wenn $CAT_REQUEST_URL == $CAT_REQUEST und $PAGE_REQUEST_URL lehr ist auch retun null;
3 wenn $CAT_REQUEST_URL == $CAT_REQUEST und  $PAGE_REQUEST_URL == $PAGE_REQUEST retun null;
4. so die oberen haben nicht gegrieffen also fehler 404
damit kanste nee fehlermeldung im content machen
global $syntax;
list($content_first,$content,$content_last) = $syntax->splitContent();
$syntax->content = $content_first."Error404".$content_last;


docu plugin erstellen Entwicklerportal/Plugins programmieren.html

wenn du soweit bist dann poste am besten den ganzen plugin code hier

lg stefanbe

-FuFu-

vielen dank, ich werd mich übers WE mal an die arbeit machen und schauen was ich zusammen bekommen ;)
und wenn ich fertig bin oder irgendwo hänge, meld ich mich wieder

-FuFu-

ich bins mal wieder ;)
ich hab mich nen bisschen eingelesen in Sachen Plugin erstellen, und hab mir auch die Quellcodes diverser Plugins angeschaut, um den Aufbau zu verstehen.

auf der Basis hab ich dann mal versucht was eigenes zu bauen, aber es scheint wohl irgendwo ein fehler zu sein, den ich so nicht finden kann :( lad ich das Plugin auf den Server, bleibt im Adminbereich die Plugin Seite komplett weiss.

ich hänge meine bisherige arbeit mal als .zip hier an, vielleicht kann mir da wer helfen und eventuell auch mal sagen ob der "ansatz" den ich verfolge überhaupt richtig ist oder ich doch nochmal von vorne anfangen sollt...
und ich sag es gleich vorweg, es ist noch nicht fertig, was die Prüfung angeht, ob die Kategorie/Inhaltsseite vorhanden ist, ich hoffe mal ich hab da nicht kompletten Müll zusammen gebaut ;)


ich bedanke mich schonmal im voraus und hoffe das mir nochmal auf die sprünge geholfen werden kann :)

stefanbe

#13
<?php

class Error404 extends Plugin {

    function 
getContent($value) {

        global 
$CAT_REQUEST_URL;
        global 
$PAGE_REQUEST_URL;
        global 
$CAT_REQUEST;
        global 
$PAGE_REQUEST;

if (($CAT_REQUEST_URL == null)||($CAT_REQUEST_URL == $CAT_REQUEST)) {
return null;
}

// Setzt die default Error Seite
// Aktiviert / Deaktiviert das Plugin
# hier soltest du auf den string "true" prüfen
if($this->settings->get("Aktivieren") == "true") {
# if($this->settings->get("Aktivieren")) {
if (!$this->settings->get("ownSide")) {
$ownSide PLUGIN_DIR_REL."Error404/default.htm";
}

// Aufbau des Strings der eingefügt werden soll
$Error404Code NULL;
# string verketung in php mit eine punkt was du hier aber nicht wielst
# '{php|header(\'HTTP/1.1 404 Not Found\');}';
# {php} ist ein plugin brauchst du doch nicht sind doch in php
header('HTTP/1.1 404 Not Found');

# $Error404Code .= '{php|header('HTTP/1.1 404 Not Found');}';
# nee umleitung ist blöd da dann der fehler code so nicht geht
$Error404Code .= '<meta http-equiv="refresh" content="0; URL=';
$Error404Code .= "./$ownSide";
$Error404Code .= '">';
# $Error404Code .= '{php|exit;}';
exit;
// Rückgabe des Strings
return $Error404Code

# statt $Error404Code probier das mal

header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
global 
$syntax;

$syntax->content "eine komplette html seite als string"
# oder
list($content_first,$content,$content_last) = $syntax->splitContent();
$syntax->content $content_first." hier den neuen content  ".$content_last;

return 
null;

}

}

    
/***************************************************************
    * 
    * Gibt die Konfigurationsoptionen als Array zurück.
    * 
    ***************************************************************/
    
function getConfig() {
        
$config = array();
        
        
$config['ownSide'] = array(
            
"type" => "text",                           // Pflicht:  Eingabetyp
            
"description" => "Eigene Fehlerseite, sollte im root des Servers liegen.",     // Pflicht:  Beschreibung
            
"maxlength" => "100",                       // optional: maximale Länge
            
"size" => "130"                             // optional: dargestellte Zeichen
        
);

$config['Aktivieren'] = array(
            
"type" => "checkbox",                       // Pflicht:  Eingabetyp 
            
"description" => "Eigene Fehlerseite Aktivieren?"            // Pflicht:  Beschreibung
        
);
return $config;
    } 
// function getConfig
    
 # .............

// class GoogleAnalytics

?>


in dieser variablen ist das komplette template als sring incl. inhaltseite enthalten also der platzhalter {CONTENT} wurde schon mit der inhaltseite ersetzt
$syntax->content

damit zerteilen wir das was in $syntax->content ist in 3 teile
list($content_first,$content,$content_last) = $syntax->splitContent();

hier bauen wir es wider zusamen mit unseren eigenen content
$syntax->content = $content_first." hier den neuen content  ".$content_last;

immer fragen wen du was nicht verstehst oder ich mich unverständlich ausdrücke :)

lg stefanbe


-FuFu-

danke, das versteh ich soweit ;)
ich bin nun schon soweit, das das Plugin in den Plugins angezeigt wird, und dort auch änderungen vorgenommen werden können.

ich arbeite aber mit einem {error404} syntax, den man im template einbinden muß, wieso weis ich nicht genau, aber irgendwie versteh ich das besser so :D und es ist mein erster versuch ;)
der syntax {error404} funktioniert auch, ich häng jetzt nur bei der abfrage, ob die aufgerufene seite existiert...
das ist auch irgendwie die stelle, die ich mal garnicht verstehe im moment :( oder ich seh den Wald vor lauter Bäumen nicht mehr...

wie würde diese abfrage aussehen?
zufällig so?

if (($CAT_REQUEST_URL == "")||($CAT_REQUEST_URL == $CAT_REQUEST)) {
            return null;
            }
else if (($CAT_REQUEST_URL == $CAT_REQUEST) && ($PAGE_REQUEST_URL == "")) {
            return null;
            }
else if (($CAT_REQUEST_URL == $CAT_REQUEST) && ($PAGE_REQUEST_URL == $PAGE_REQUEST)) {
            return null;
            }
else {
//hier mein code für das aufrufen der fehlerseite
}

oder hab ich das ganze da komplett falsch verstanden? denn wenn ich das so nutze, zeigt er immer die Fehlerseite an, ausser ich ruf die domain direkt auf ohne cat und page auf...

wo hab ich nun den fehler versteckt? und ich hoffe ich bring euch nicht so auf die Palme, wie ich mich selbst gerade :D