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

#1 03. August 2011 13:12

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

[GELÖST] Smarty in UDT ausführen?

Ich möchte es einem Anwender die Handhabung eines GCBs erleichtern.
Da wollte ich den GCB mit dem UDT ersetzen und den GCB in dem UDT ausführen:
global $gCms;

$smarty = &$gCms->GetSmarty();
$gcbops=&$gCms->GetGlobalContentOperations();
$obj=&$gcbops->LoadHtmlBlobByName("showpages");
return $smarty->_eval($obj->content);

aber das klappt leider nicht.

wenn ich das mache, bekomme ich leider den normalen Inhalt inkl. {}

$smarty = &$gCms->GetSmarty();
$gcbops=&$gCms->GetGlobalContentOperations();
$obj=&$gcbops->LoadHtmlBlobByName("showpages");
return $obj->content;

Offline

#2 04. August 2011 22:24

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Smarty in UDT ausführen?

Hast du schon versucht, $obj->content einer Smarty-Variablen zuzuweisen

[== PHP ==]
$smarty->assign('GCB', $obj->content);

und dann erst in Smarty eval zu starten?

Offline

#3 04. August 2011 22:25

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Smarty in UDT ausführen?

nee. ich will das ja nicht in smarty evaluieren sondern direk tbei der ausgabe.
damit der anwender nur noch ein kurzes UDT einfügen brauch und sich nicht das GCB merken muss.

Offline

#4 04. August 2011 22:31

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] Smarty in UDT ausführen?

{eval} hat auch einen assign Parameter - könntest es damit auf {$GCBout} oder so reduzieren.

Offline

#5 04. August 2011 23:12

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

Re: [GELÖST] Smarty in UDT ausführen?

Macht das wirklich einen so großen Unterschied?
{global_content name="Kontakt"} vs {Kontakt}?

Egal.
Geht das hier?

$gcbops =& cmsms()->GetGlobalContentOperations();
$obj    =& $gcbops->LoadHtmlBlobByName("showpages");
$smarty =& cmsms()->GetSmarty();
$smarty->_compile_source('temporary template', $obj->content, $_compiled );
return $smarty->_eval('?>' . $_compiled);

oder das hier?

$gcbops =& cmsms()->GetGlobalContentOperations();
$obj    =& $gcbops->LoadHtmlBlobByName("showpages");
$smarty =& cmsms()->GetSmarty();
$smarty->_compile_source('temporary template', $obj->content, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
return $_contents;

Ist die Funktion cms_module_ProcessTemplateFromData() aus /lib/classes/module_support/modtemplates.inc.php. Bin mir nur bei dem @ob-Zeugs nicht sicher ob das nötig ist.


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

#6 04. August 2011 19:41

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: [GELÖST] Smarty in UDT ausführen?

die erste variante hat wunderbar geklappt smile
danke

Offline