English Version medianotions.de RSS-Feed abonnieren

10.11.2008

MODx-Feature: MODx-API-Spickzettel

Themen: MODx, Snippets | zuletzt bearbeitet: 23.03.2011


Zugegeben, es gibt besser gemachte Dokumentationen als die derzeitige von MODx. Zum Glück muss man diese nicht mehr all zu oft bemühen, wenn man einmal herausgefunden hat wie MODx im großen und ganzen funktioniert. Ausnahme ist allerdings die MODx-API und aus diesem Grund habe ich mir nach und nach einen MODx-API-Spickzettel angelegt, in dem die wichtigsten Funktionen aufgelistet sind:

MODx-Evolution-API-Spickzettel

		getPlaceholder('placeholder_name');
			$modx->setPlaceholder('placeholder_name', $var);

			// Print placeholders in HTML
			?>
				
			runSnippet('snippet_name', $params);

			// Run snippet in HTML
			?>
				
			getChunk('chunk_name');

			// Print chunk in HTML
			?>
				
			parseChunk('chunk_name', $params, '');

			// Get MODx documents
			$id=$modx->documentIdentifier;
			$document=$modx->getParent($id);
			$document=$modx->getDocument($id);
			$document=$modx->getDocumentChildren($id);
			$document=$modx->getActiveChildren($id, 'menuindex', 'ASC');

			// MODx document array
			$id=$document['id'];
			$pagetitle=$document['pagetitle'];
			$longtitle=$document['longtitle'];
			$description=$document['description'];
			$alias=$document['alias'];
			…

			// Get the value of Template Variables
			$document_tvs=$modx->getTemplateVarOutput(true, $id);
			$templatevar_output=$document_tvs['template_variable_name'];

			// Print Template Variables in HTML
			?>
				
			makeUrl(intval($id));

			// Make URL in HTML
			?>
				[~id~]
			sendRedirect('http://www.newdomain.com', $count_attempts, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');

			// Forward to a new MODx document without reloading the page
			$modx->sendForward($id);

			// get MODx configuration
			$site_name=$modx->config['site_name'];
			$site_url=$modx->config['site_url'];
			$site_start=$modx->config['site_start'];
			$error_page=$modx->config['error_page'];
			$base_path=$modx->config['base_path'];
			$base_url=$modx->config['base_url'];
			$rb_base_dir=$modx->config['rb_base_dir'];
			$rb_base_url=$modx->config['rb_base_url'];	
			$modx_charset=$modx->config['modx_charset'];
			…

			// Get MODx configuration in HTML
			?>
				Blog.Medianotions
				https://blog.medianotions.de/
				…
			Event; 
			switch($event->name)
			{ 
				case "OnBeforeDocFormSave":
					…
				break;
			}

			// TV @SELECT Binding
			@SELECT pagetitle FROM modx_site_content WHERE parent = 329 ORDER BY pagetitle

			// TV @EVAL Binding
			@EVAL return $modx->runSnippet('mySnippet', array('param' => 123)); 
		?>
	

Diese API-Funktionen sind meiner Erfahrung nach die am meisten gebrauchten Code-Schnipsel beim Entwickeln von eigenen Snippets oder Modulen.

Hintergrund: MODx-API

Mit Hilfe der MODx-API lässt sich MODx komfortabel und schnell um eigene Funktionen erweitern. Mehr dazu auch in dem Artikel „MODx-Feature: Snippets – die Alleskönner“.

Ich freue mich über Vorschläge für zur Erweiterung des MODx-API-Spickzettels!

Downloads


Kommentar schreiben

Die Kommentarfunktion ist nicht mehr aktiv

4 Kommentare

Bogdan zur Website

22.03.2011 18:53:11

Hallo Jo,

danke für dein Feedback! Der Spickzettel ist allerdings ein reiner MODx-Evolution-Spickzettel. Ich schreibe das gleich mal noch dazu :-)

Bogdan

Jo zur Website

19.03.2011 21:27:16

Hallo Bogdan!

Super Spickzettel und vielen Dank dafür!

Habe da einen kleinen Fehler gefunden (Revo 2.0.8)
// Get the value of Template Variables
$document_tvs=$modx->getTemplateVarOutput(true, $id);
$templatevar_output=$document_tvs[’template_variable_name’];

Richtig wäre das als Array:
$document_tvs=$modx->getTemplateVarOutput((array("template_variable_name"), $id);
$templatevar_output=$document_tvs[’template_variable_name’];

sonst gibt es blöde Fehlerprotokolle ;-)

Gruß Jo

Bogdan zur Website

18.02.2009 20:19:31

Hallo Florian,

freut mich, dass dir mein Spickzettel weiterhilft :-)

Die Community hier in Deutschland ist in der Tat klein … aber fein, wie ich finde. Unter http://modxcms.de/forum/ erhältst du eigentlich zu jeder Frage Hilfe und Tipps.

MODx verheimlichen kommt gar nicht in Frage. Es ist ein sehr gut funktionierendes System, dass sich für die meisten Einsatzzwecke sehr gut eignet. Es hat natürlich auch Schwächen, z.B. wenn es um Lösungen für Community-Websites geht, aber ich kenne kein CMS, das nur Stärken hat.

Bezüglich Campaign Monitor: nein ein MODx-Modul zur Steuerung von Campaign-Monitor ist mir nicht bekannt. Ich benutze auch die Campaign Monitor API nicht. Meine Vorgehensweise ist, dass ich die Newsletter in HTML und CSS MODx-basiert erstelle und dann bei Campaign Monitor importiere und dort alles andere mache. Campaign Monitor hat ja eine sehr gute Oberfläche und eine flexible Rechtevergabe, so dass auch Kunden Mailings die du erstellst hast versenden oder die Abonnentenlisten pflegen können. Einziges Manko: Campaign Monitor gibt es nur auf Englisch, was nicht allen Kunden passen dürfte.

Florian zur Website

18.02.2009 11:16:46

Hi Bogdan,

habe deine Firma/deinen Blog über Google gefunden mit dem Stichwort MODx.

1000 Dank für die Veröffentlichung deines Spickzettels, in der Tat ist die Doku momentan noch ein Alptraum. Überhaupt ist die Community noch eher schwach (zu mindest hier in Deutschland).

Um so schöner zu sehen, dass du für deine Projekte CMS-MODx einsetzt und das auch nicht verheimlichst. Ich mache das in der Agentur genauso.

Was anderes: Ich habe gesehen, dass du auch CampaignMonitor einsetzt, kennst du ein Modul/Snippet für MODx? CampaingMonitor hat ja wohl eine API.

Grüße,
Florian