Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 24. Juni 2014 13:52

Sven
probiert CMS/ms aus
Registriert: 25. April 2014
Beiträge: 35

CGSimpleSmarty - "Sprung" vom Backend ins Frontend

Hallo Forum,

Bin gerade dabei, auf einer Kundenwebseite Mehrsprachigkeit nachzurüsten. Dafür wollte ich eine bestimmte Funktion von CGSimpleSmarty nutzen. Bis dahin alles unproblematisch.

Nun läuft auf der Webseite CMSMS 1.11.2.1. Hab mir dafür die zeitlich passende Version von CGSimpleSmarty installiert. Nur hab ich dabei nicht darauf geachtet, dass die benötigte Funktion erst in einer späteren Version hinzugefügt wurde.

Hab also unwissender Weise die unbekannte Funktion im Template eingefügt. Und jetzt kommt es - anstatt einer Fehlermeldung im Backend springt die Seite beim Abspeichern ins Frontend und liefert dort mit der Backend URL eine 404er Seite aus - ohne zu speichern.

Was genau passiert beim Speichern des Templates? Die Art der "Fehlerbehandlung" ist mir neu. Wird das Template beim Speichern testhalber geparst oder was?

Würde gerne verstehen, was mich da ne knappe Stunde und einige graue Haare gekostet hat (die ich dem Kunden nicht in Rechnung stellen kann).

Offline

#2 24. Juni 2014 14:24

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.934
Webseite

Re: CGSimpleSmarty - "Sprung" vom Backend ins Frontend

Was für eine Funktion von CGSimpleSmarty nutzt du?

Seit der 1.11er Version werden im Backend die Templates rudimentär auf Ausführbarkeit geprüft. Wie rufst du CGSimpleSmarty auf? Eigentlich erstaunt es mich, wenn CG hier eine neue Funktion eingebaut haben sollte.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#3 24. Juni 2014 15:25

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: CGSimpleSmarty - "Sprung" vom Backend ins Frontend

Wird das Template beim Speichern testhalber geparst oder was?

Jepp!
Dabei werden auch Plugins etc. ausgelöst, die eigentlich nicht im Backend ausgelöst werden sollen. Kannst ja mal aus Spaß das Modul FrontEndUsers ins Template einbauen und wenn ein User im Frontend nicht eingeloggt ist, auf die Login-Seite umleiten.

Rate, was passiert, wenn Du im Backend ein Template ändern möchtest ...  monkey

Ich vermute die spezielle Funktion aus CGSimpleSmarty (welche ist es denn eigentlich?) wird - aus welchen Gründen auch immer - auf eine ganz bestimmte Seite umleiten bzw. diese laden wollen. Und ich vermute mal weiterhin, dass es dazu die aktuell angezeigte Frontend-Seite nehmen will (aka "returnid"). Da im Backend aber kein "returnid" existiert (weil es das nur zur Laufzeit im Frontend gibt) wird daraus eine Fehlerseite.

Du kannst das umgehen, indem Du z.B. im Template prüfst, bevor Du CGSimpleSmarty ausführst, ob das Inhaltobjekt der aktuellen Seite existiert:

{if isset($content_obj) && is_object($content_obj)}
    {CGSimple ...}
{/if}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#4 24. Juni 2014 16:21

Sven
probiert CMS/ms aus
Registriert: 25. April 2014
Beiträge: 35

Re: CGSimpleSmarty - "Sprung" vom Backend ins Frontend

nockenfell schrieb:

Wie rufst du CGSimpleSmarty auf? Eigentlich erstaunt es mich, wenn CG hier eine neue Funktion eingebaut haben sollte.

{cgsimple::get_parallel_page('EN',$page_alias,'tmp')}

Macht genau das, was der Name der Funktion bereits sagt - zieht die parallele Seite aus einem vorzugebenden Tree (Bsp.: 1.2.3 > 2.2.3) und von daher für mehrsprachige Seiten keine schlechte Sache. Kannte die Funktion schon vom Babel-Modul und war froh, sie hier wiedergefunden zu haben. Nur ist sie in der 1.5.3 noch nicht drin, in der 1.7.2 dagegen schon.

Muss mal schauen, ob ich die Funktion mir über einen Backport oder ein Plugin zurück hole.

Beitrag geändert von Sven (24. Juni 2014 16:37)

Offline

#5 24. Juni 2014 16:34

Sven
probiert CMS/ms aus
Registriert: 25. April 2014
Beiträge: 35

Re: CGSimpleSmarty - "Sprung" vom Backend ins Frontend

NaN schrieb:

Du kannst das umgehen, indem Du z.B. im Template prüfst, bevor Du CGSimpleSmarty ausführst, ob das Inhaltobjekt der aktuellen Seite existiert:

{if isset($content_obj) && is_object($content_obj)}
    {CGSimple ...}
{/if}

Danke, danke, danke - you made my day!!! <5x Strg+D drück />

Jetzt kann ich das Template ohne Probleme speichern.

Das oben beschriebene Verhalten scheint ein Problem der Isabella (CMSMS 1.11.2) zu sein. Mit der aktuellen 1.11.10 springt es (ohne den Trick) zumindest nicht mehr ins Frontend, sondern bleibt im Backend und geht in die Template-Auflistung zurück. Gespeichert wird trotzdem nix, und Fehlermeldung gibts auch keine sad. Wozu ist denn dann das Dashboard gut?

Ist das im DesignManager der V2 besser abgefangen?

Offline

#6 27. Juni 2014 13:04

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: CGSimpleSmarty - "Sprung" vom Backend ins Frontend

Sven schrieb:

Hallo Forum,

Bin gerade dabei, auf einer Kundenwebseite Mehrsprachigkeit nachzurüsten. Dafür wollte ich eine bestimmte Funktion von CGSimpleSmarty nutzen.

Warum nicht einfach MLEcms?

Servus,
Alex

Offline