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

#1 20. Januar 2011 01:55

Wolfhardt
Gast

[GELÖST] Optimierter Tag {get_template_vars}

Drüben auf der .org habe ich ein Script gefunden, dass praktisch {get_template_vars} auf Speed ist.
Es gibt wie das ursprüngliche {get_template_vars} alle Variablen aus, aber dröselt dabei automatisch alle darin enthaltenen Arrays und Objekte auf.

<?php
#CMS - CMS Made Simple
#(c)2004 by Ted Kulp (wishy@users.sf.net)
#This project's homepage is: [url]http://cmsmadesimple.sf.net[/url]
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA	02111-1307	USA

function ___my_print_r($value, $level = 0)
{
	if ($level > 9)
	{	// Being paranoid
		return 'Too big level of nesting';
	}
	
	# added by NaN (backwards compatibility):
	if(version_compare(CMS_VERSION, '1.11') < 0)
		$cms_obj_name = 'CmsObject';
	else
		$cms_obj_name = 'CmsApp';
	#---
	
	if (!is_array($value) && !is_object($value))
	{
		if ($value === true)
		{
			return 'true';
		}
		else if ($value === false)
		{
			return 'false';
		}
		return $value;
	}

	$br = "\n"; // line break with tabs
	for($i = 0; $i < $level; $i++)
	{
		$br .= "\t";
	}

	if (is_object($value))
	{
		// Skip huge CMSMS core objects
		$class = get_class($value);
		do
		{
			if(in_array($class, array($cms_obj_name, 'Smarty', 'CMSModule')))
			{
				return get_class($value)." Object (skipped as a descendant of $class)";
			}
		}
		while ($class = get_parent_class($class));
		$str = get_class($value).' Object'.$br.'{';
	}
	else
	{
		$str = 'Array'.$br.'(';
	}

	foreach($value as $key => $val)
	{
		$str .= $br."\t".$key.' => '.___my_print_r($val, $level + 1);
	}
	$str .= is_array($value) ? $br.')' : $br.'}';
	return $str;
}

function smarty_function_get_template_vars($params, &$obj)
{

	# added by NaN (backwards compatibility):
	if(version_compare(CMS_VERSION, '1.11') < 0)
		$smarty = &$obj; # backward compatibility
	else
		$smarty = &$obj->smarty;
	#---
	
	$tpl_vars = $smarty->get_template_vars();

	$str = '<div style="overflow: auto; width: 500px; height: 400px;"><pre>'."\n\n";
	$str .= ___my_print_r($tpl_vars);
	$str .= "\n\n</pre></div>";
	return $str;
}
?>

Zur Installation sichert man die ursprüngliche Script-Datei plugins/function.get_template_vars.php unter einem anderen Namen weg und ersetzt sie durch eine neue, gleichnamige Datei mit dem obigen Script.

Danach kann man sie genauso verwenden wie das bisherige {get_template_vars} und hat alle Daten zur Verfügung, die man braucht, man muß dann nur noch die richtigen Variablen/Werte finden wink

Beitrag geändert von NaN (08. Februar 2013 12:30)

#2 19. März 2011 20:25

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: [GELÖST] Optimierter Tag {get_template_vars}

Wenn ich die Zeile ändere:

function smarty_cms_function_get_template_vars($params, &$smarty)

auf

function smarty_cms_function_get_template_vars_detail($params, &$smarty)

kann ichs unter dem geänderten Namen plugins/function.get_template_vars_detail.php  speichern. Dann muss ich die alte nicht umbenennen und könnte beide nutzen, diese halt als {get_template_vars_detail}

Die Frage ist nur ob ich diese Zeile auch ändern müsste:

   $tpl_vars = $gCms->smarty->get_template_vars();

auf

   $tpl_vars = $gCms->smarty->get_template_vars_detail();

Offline

#3 20. März 2011 10:21

uniqu3
Server-Pate
Ort: Feldkirchen in Kärnten
Registriert: 20. November 2010
Beiträge: 305
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

@Wolfhardt
Danke! Spitze!
Wo genau hast Du es gefunden, ich würde es gern auch auf meinem Blog veröffentlichen aber ohne Autor credits wird das wohl nix?

Offline

#4 21. März 2011 10:11

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

owr_web schrieb:

Die Frage ist nur ob ich diese Zeile auch ändern müsste:

   $tpl_vars = $gCms->smarty->get_template_vars();

auf

   $tpl_vars = $gCms->smarty->get_template_vars_detail();

Nein - das ist eine Systemfunktion von Smarty.

Offline

#5 21. März 2011 10:12

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

uniqu3 schrieb:

Wo genau hast Du es gefunden, ich würde es gern auch auf meinem Blog veröffentlichen aber ohne Autor credits wird das wohl nix?

Wenn ich mir den Header des Tags ansehe, hat der Autor bereits auf die Credits verzichtet ... oder Ted geschenkt wink.

Offline

#6 21. März 2011 10:54

piratos
Gast

Re: [GELÖST] Optimierter Tag {get_template_vars}

Das ist keine Speed-Version sondern eine Bescheissversion da mit

// Skip huge CMSMS core objects

verhindert werden soll das man Fehler in der Core erkennt, die da genau wären rekursive Mehrfachverknüpfungen von Objekten und Smarty selbst, das wird mit dem Codeteil nach  // Skip huge CMSMS core objects unterbunden.
Nur daraus folgert eine Geschwindigkeitserhöhung, dient aber in Wirklichkeit der Verschleierung von massiven Fehlern, die zu erheblicher RAM-Belastung ohne Nutzen führen.

#7 08. März 2012 17:22

leerraum
kennt CMS/ms
Ort: Baden-Baden
Registriert: 15. Dezember 2010
Beiträge: 479
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

kann das sein, dass das mit der 10.3 nicht mehr geht?

<b>Fatal error</b>:  Call to a member function get_template_vars() on a non-object in <b>/home/www/web168/html/cmsms/plugins/function.get_template_vars.php</b> on line <b>76</b><br />


Designer benötigt? Einfach eine Mail an info at lrrm dot de schicken.

Offline

#8 08. März 2012 17:58

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

Ändere mal diese Zeien:

global $gCms;

$tpl_vars = $gCms->smarty->get_template_vars();

In diese:

$tpl_vars = cmsms()->GetSmarty()->get_template_vars();

wobei das auch wieder quatsch ist, weil smarty bereits im Funktionskopf übergeben wird.
Also das hier sollte reichen:

$tpl_vars = $smarty->get_template_vars();

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

#9 08. März 2012 18:01

leerraum
kennt CMS/ms
Ort: Baden-Baden
Registriert: 15. Dezember 2010
Beiträge: 479
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

Danke, jetzt geht's wieder! Vielleicht sollten wir das im ersten Posting ändern?


Designer benötigt? Einfach eine Mail an info at lrrm dot de schicken.

Offline

#10 08. März 2012 19:50

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

Ist erledigt!

Offline

#11 07. Februar 2013 17:06

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.227
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

Hallo in 1.11.4 erstickt CMSMS / Smarty wieder in diese Tag.

Man bekommt mit diese function.get_template_vars_detail.php und anklicken der Seite Tags im Backend eine schöne leere weisse Seite.
Fehlermeldungen sind wohl eine zu grosse Luxus.

Nur wenn diese Datei gelöscht ist funktioniert es wieder.

mfg
Jan


Ubuntu 16.04 KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP
Raspi 4b mit Ubuntu 20.04 (64bit) und Mate.

Offline

#12 07. Februar 2013 17:19

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

Ändere mal den Namen der Funktion

function smarty_cms_function_get_template_vars($params, &$smarty)

in

function smarty_function_get_template_vars($params, &$smarty)

(das _cms soll da weg)


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

#13 07. Februar 2013 18:46

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.227
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

Verstehe ich es richtig?

muss ich das komplette Kodeblock nochmal kopieren an Stelle von "echo 'Hello world!';"
und das wieder kopieren in /lib/smarty/plugins

<?php
function smarty_function_hello_world($params, &$smarty) {
echo 'Hello world!';
}
?>

das wird dann
<?php
function smarty_function_get_template_vars_details($params, &$smarty){
[das komplette kodeblock]
}
?>

So verstehe ich es aus diese Beschreibung
http://www.cmsmadesimple.de/dokumentati … ndeln.html

mfg
Jan


Ubuntu 16.04 KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP
Raspi 4b mit Ubuntu 20.04 (64bit) und Mate.

Offline

#14 08. Februar 2013 07:09

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

NaN schrieb:

Ändere mal den Namen der Funktion

Ursprungsposting geändert!

Offline

#15 08. Februar 2013 07:10

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

Janl schrieb:

So verstehe ich es aus diese Beschreibung
http://www.cmsmadesimple.de/dokumentati … ndeln.html

Upps, ist noch nicht up-to-date ...

Offline

#16 08. Februar 2013 12:13

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.227
Webseite

Re: [GELÖST] Optimierter Tag {get_template_vars}

Hallo laut org installiert man so neue Pluguns

How to install
To install a new tag, put the function.tagname.php file into your /plugins directory. When you refresh the Tags page in the CMS admin, the new tag will be shown.

Nur funktioniert es in 1.11.4 nicht, Datei ist da, Permissions kontrolliert, Zwischenspeicher gelöscht und trotzdem tagt er nicht auf.

Hat jemandem ein Idee?

mfg
Jan


Ubuntu 16.04 KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP
Raspi 4b mit Ubuntu 20.04 (64bit) und Mate.

Offline

#17 08. Februar 2013 12:31

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

Re: [GELÖST] Optimierter Tag {get_template_vars}

Aha... warte mal, das Plugin hier ist noch für Smarty 2.6.
Inzwischen wird doch Smarty 3.irgendwas verwendet.
Da wird den Plugins nicht mehr das Smarty-Objekt übergeben, sondern ein Template-Objekt.
D.h. diese Zeile:

$tpl_vars = $smarty->get_template_vars();

Wird nicht mehr funktionieren.
Es müsste so lauten:

$tpl_vars = $smarty->smarty->get_template_vars();

Außerdem ist der Klassenname des CMS nicht mehr CmsObject sondern CmsApp.
Ich habe den Ursprungspost mal geändert, sodass er für beide Smarty-Versionen funktionieren müsste. Habs noch nicht getestet.


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

#18 04. November 2013 15:12

dlen
probiert CMS/ms aus
Registriert: 05. Februar 2011
Beiträge: 57

Re: [GELÖST] Optimierter Tag {get_template_vars}

Habe es mit CMSMS v1.11.9 getestet wie es im Ursprungsposting steht - leider zerschießt es die Anzeige. Kein CSS mehr und keine Ausgabe.

--- wunderbarerweise läuft es nun doch durch und liefert brav alle Variablen einer Seite und deren Werte, soweit ich das einschätzen kann..

Danke.

Beitrag geändert von dlen (05. November 2013 12:50)

Offline