De:DocumentParser

From MODx Wiki

Jump to: navigation, search
Dieser Artikel ist noch nicht ganz vollständig.

Wenn du Ahnung von diesem Thema hast schau einfach mal wo du noch was erweitern kannst.

Dieser Artikel kann noch eine Rechtschreibprüfung vertragen.

Wenn du gut Deutsch kannst, schau mal drüber.

Die DocumentParser-Klasse ist sozusagen der Kern von MODx. Die meiste Zeit ist sie unter der Variable $modx anzutreffen. Diese Dokumentation befasst sich nur mit den API-Funktionen der Klasse.

Contents

Get the Parent Ids

Befehl

Diese Funktion gibt die Ids der übergeordneten Dokumente zurück.

getParentIds(int startId [, int hoehe [, array eltern]]);

startId gibt die Id des Dokuments an, dessen Eltern gesucht werden sollen. Der optionale Parameter hoehe gibt an, wie viele Ebenen zurück gesucht werden soll. Der letzte optionale Parameter wird für eine interne Rekursion verwendet.

Get the Child Ids

Befehl

Zeigt die Ids der Kindelemente des aktuellen Dokuments

getChildIds(int startId[,int tiefe[,array kinder]]);

Alert Message

Befehl

Zeigt eine Javascript-Warnmeldung im Browser

webAlert(string nachricht[,string url]);

Add Log Event

Befehl

Diese Funktion fügt einen neuen Log-Eintrag in die Datenbank ein.

logEvent(int ereignisId,int ereignisTyp,string Nachricht[,string Quelle]);

Die ereignisId kann resourcenspezifisch sein. ereignisTyp muss einer der folgenden Werte sein:

1 Information
2 Warnung
3 Fehler

Quelle sollte den Namen der Resource enthalten.

Beispiel

Ich habe ein Gästebuch-Snippet und möchte gerne einen Logeintrag bei neuen Einträgen

$modx->logEvent(1,1,'Neue Nachricht im Gästebuch: ' . $gbNew['msg'],'Gästebuch);

Backend or Frontend?

Befehle

Diese beiden Funktionen helfen einer Resource herauszufinden ob sie im Backend oder Frontend aufgerufen wird. Nützlich z.B. um den Aufruf im Backend abzubrechen.

isBackend();
isFrontend();

Beide antworten auf die Frage entsprechend mit TRUE oder FALSE

Alte Methode

Die alte Methode ist

insideManager();

Der Rückgabewert kann hier aber auch noch zusätzlich interact oder install sein.

Beispiel

Ich habe ein ultrageheimes Snippet um meine Benutzer auszuspionieren. Mich selber soll es natürlich nicht ausspionieren

if(isBackend()) {
  return "Hier fühl ich mich nicht wohl!";
}

Get all Children

Befehl

Dieser Befehl gibt die einen multidimensionalen Array mit allen Kindern des angegeben Dokuments und deren Eigenschaften zurück

getAllChildren([int startId[,string spalteNachDerSortiertWird[,string sortierRichtung[,string spalten]]]]);

startId ist das Dokument dessen Kinder gesucht werden sollen. Die spalteNachDerSortiertWird sollte der Name einer Spalte in der Tabelle site_content sein.Die sortierRichtung ist entweder ASC (aufsteigend) oder DESC (absteigend). spalten gibt an welche Spalten der Tabelle schließlich im Array gespeichert werden sollten. Diese Funktion ist nicht rekursiv, gibt also nur die Kindelemente auf dem Level 1 unter startId zurück.

Get active Children

Befehl

Dieser Befehl verhält sich wie getAllChildren, außer dass er nur veröffentlichte und nicht gelöschte Dokumente, auf die der aktuelle Benutzer zugriff hat anzeigt.

getActiveChildren([int startId[,string spalteNachDerSortiertWird[,string sortierRichtung[,string spalten]]]]);

Get Snippet Id

Befehl

Gibt die Id des aktuelle ausgeführten Snippets unter der es in der Datenbank ableget ist zurück.

getSnippetId();

Get Snippet Name

Befehl

Gibt den Namen des aktuellen Snippets zurück

getSnippetName();

Clear Cache

Befehl

Löscht den Dokumentcache.

clearCache();

Make Url

Befehl

Dieser Befehl erzeugt eine URL

makeUrl(int dokumentId[,string dokumentAlias[,string argumente[,string schema]]]);

Beispiele

Hier ein paar Beispiele, um die Verwendung zu verdeutlichen.

Ich möchte in meinem Gästebuch gerne eine Aufteilung auf mehrere Seite einbauen.

$id = $modx->documentIdentifier;
$nextPageUrl = $modx->makeUrl($id,,'nextPage=' . ($page + 1));

Das Ergebnis kann je nach Einstellung ganz unterschiedlich sein:
Mit freundlichen URLs

/gaestebuch.html?nextPage=2

Ich habe hier $alias nicht mit angegeben obwohl ich freundliche URLs benutze. In diesem Fall versucht MODx den passenden Alias selber zu finden.
Ohne freundliche URLs

/index.php?id=126&nextPage=2

Durch die Angabe von schema kann ich MODx dazu bringen eine URI zu erzeugen.
Gehen wir davon aus, dass ich bei schema https eingegeben habe:

https://example.com/gaestebuch.html?nextPage=2

Get Configuration Variable

Befehl

Dieser Befehl gibt den Wert der angegeben Konfigurationsvariablen zurück.

getConfig(string variablenName);

Beispiel

Um auf möglichst komplizierten Wege an die base_url zu kommen könnte ich folgendes schreiben

$baseUrl = $modx->getConfig('base_url');

Get Version Information

Befehl

Mit dieser Funktion erhalte ich detailierte Informationen zur aktuellen MODx Version als assoziativen Array

getVersionData();

Rückgabewerte

Ein Array mit folgenden Schlüsseln

code_name z.B. rev 1785
version z.B. 0.9.5 beta 5
small_version z.B. 0
patch_level z.B. 0
full_appname MODx

Make Lists

Befehl

Diese Funktion ist dabei behilflich, Listen zu bauen:

makeList(array werte[,string cssKlasse[,string cssUnterKlassenPrefix[,string cssListStyleType[,bool geordnet[,int einrueckung]]]]]);

Die Funktion kann auch mit multidimensionalen Arrays umgehen. einrueckung wird intern verwendet und sollte nicht belegt werden. geordnet auf TRUE zu setzen würde eine geordnete (ol) statt ungeordnete (ul) Liste erzeugen.

Beispiel

Als Ausgangswert nehme ich folgenden Array

Array
(
    [a] => Startseite
    [b] => Aktuelles
    [c] => Ausflüge
        (
            [0] => Köln
            [1] => Xanden
            [2] => Trier
            [3] => Rom
        )
    [d] => Impressum
)

und folgenden Aufruf

$modx->makeList($array,'navileiste','sub_','none',false);

und erhalte folgendes Resultat

<ul class="navileiste" style="list-style-type: none">
  <li>Starseite</li>
  <li>Aktuelles</li>
  <li>Ausflüge</li>
    <ul class="sub_navileiste" style="list-style-type: none">
      <li>Köln</li>
      <li>Xanden</li>
      <li>Trier</li>
      <li>Rom</li>
    </ul>
  </li>
  <li>Impressum</li>
</ul>

User details

Befehl

Dieser Befehl gibt einige Details zum aktuellen Benutzer aus.

userLoggedIn();

Rückgabewerte

Wenn der Benutzer nicht angemeldet ist wird FALSE zurückgegeben. Entscheidend ist ob die Funktion im Backend oder im Frontend aufgerufen wird.

loggedIn TRUE
id Die Benutzer-Id
username Der Benutzername
usertype Im Frontend: web Im Backend: manager

Get Keywords

Befehl

getKeywords([int dokumentId]);
Der Rückgabewert ist ein Array

Get Metatags

Befehl

getMETATags([int dokumentId]);

Rückgabewert

Der Rückgabewert ist ein multidimensionaler assoziativer Array, wobei die Schlüssel des obersten Arrays dem im Manager eingegeben Name entsprechen. Die Schlüssel der inneren Array haben folgende Werte

tag
tagvalue
http_equiv

Run Snippet

Befehl

Dieser Befehl führt ein Snippet aus. Der Rückgabewert entspricht dem return des ausgeführten Snippets

runSnippet(string snippetName[,array paramter]);

Die optionalen Parameter werden als assoziativer Array übergeben.

Get Chunk

Befehl

Dieser Befehl holt einen Template Chunk aus der Datenbank und gibt ihn zurück.

getChunk(string chunkName);

Alte Methode

In älteren Snippets ist evtl. noch der aufruf

putChunk(string chunkName);

zu finden, der ein Alias für getChunk ist.

Beispiel

Bei meinem Gästebuch habe ich einen Einführungstext als Chunk verfasst.

$gbIntroString = $modx->getChunk('gbIntroText');
// ...
return $gbIntroString . $guestbook;

Parse Chunk

Befehl

Diese Funktion ist nützlich um alle Platzhalter eines Chunks mit den entsprechenden Werten zu ersetzen und den Chunk zurückzugeben

parseChunk(string chunkName,array chunkAttribute[,string prefix[,string suffix]]);

prefix entspricht normalerweise { und suffix }

Beispiel

Für die einzelnen Einträge in meinem Gästebuch habe ich einen Template Chunk erstellt:

<div class="gb_entry">
  <div class="gb_entry_info">{gb.poster} {gb.posttime} <a href="mailto:{gb.mailaddress}">{gb.mailaddress}</div>
  {gb.entry}
</div>

Außerdem habe ich folgenden assoziativen Array

Array
(
  [gb.poster] => "Hans Müller"
  [gb.posttime] => "25.10.2006 04:01"
  [gb.mailaddress] => "hans-mueller@example.com"
  [gb.entry] => "Hey, Super Seite hast du da. Wie kann ich auch sowas machen?"
)

Daraus folgt dieser Aufruf

$entry = $modx->parseChunk('gbEntry',$gbEntryValues);

Mit diesem Ergebnis

<div class="gb_entry">
  <div class="gb_entry_info">Hans Müller 25.10.2006 04:01 <a href="mailto:hans-mueller@example.com">hans-mueller@example.com</div>
  Hey, Super Seite hast du da. Wie kann ich auch sowas machen?
</div>

Get User Data

Befehl

Dieser Befehl gibt einen assoziativen Array mit verschiedenen Daten zum aktuellen Benutzer zurück. Dabei handelt es sich um seine Browserkonfiguration nicht MODx Einstellungen.

getUserData();

Rückgabewerte

ip IP-Adresse des Benutzers
ua
browser
long_name
version
maj_ver
min_ver
letter_ver
javascript
platform
os
language
gecko
gecko_ver
html
images
frames
tables
java
plugins
css2
css1
iframes
xml
dom
hdml
wml
must_cache_forms
avoid_popup_windows
cache_ssl_downloads
break_disposition_header
empty_file_input_value
scrollbar_in_way

Get Full Table Name

Befehl

Gibt den Namen einer Tabelle mit Prefix aus.

getFullTableName(string tabellenName);

Beispiel

Damit mein Gästebuch auch auf anderen MODx Installationen läuft verwende ich folgenden Code

$tabelle = $modx->getFullTableName('gb_entries');
$query = $modx->db->select('*',$tabelle);
...

Map Path

Befehl

Gibt den physikalischen Pfad einer Datei an

mapPath([string virtuellerPfad[,string dateiname]]);

Wird kein virutellerPfad angegeben wird das aktuelle Verzeichnis verwendet.

Beispiel

$echterPfad = $modx->mapPath('/assets/images/','herkules.jpg');

Gibt zurück (z.B.)

/var/www/vhosts/example.com/htdocs/assets/images/herkules.jpg

Get Placeholder

Befehl

Gibt den Wert eines Platzhalters zurück

getPlaceholder(string name);

Beispiel

$gbHintergrund = $modx->getPlaceholder('gb.Hintergrundfarbe');

Set Placeholder

Befehl

Legt einen Platzhalter mit einem Wert fest

setPlaceholder(string name,string wert);

Beispiel

$modx->setPlaceholder('gb.Hintergrundfarbe','rot');

Get Manager Path

Befehl

Gibt den virtuellen absoluten Pfad zum Manager aus

getManagerPath();

Beispiel

Wenn ich MODx im DOCUMENT_ROOT meines Webservers installiert haben ist der Rückgabewert in der Regel

/manager/

Get Cache Path

Befehl

Gibt den virtuellen Pfad zum Cache Ordner aus

getCachePath();

Beispiel

Wenn ich MODx im DOCUMENT_ROOT meines Webservers installiert haben ist der Rückgabewert in der Regel

/assets/cache/

Send Alert

Befehl

Sendet eine Nachricht an einen Benutzer

sendAlert(int typ,int empfaengerBenutzerId,int senderBenutzerId,string Betreff,string Nachricht[,int privat]);

Anstatt die Id des empfaengerBenutzer und des senderBenutzer anzugeben kann man auch deren Namen angeben. MODx versucht dann automatisch die entsprechende Id zu finden.

Get User Id

Befehl

Gibt die Id des aktuellen Benutzers zurück. Die Funktion unterscheidet automatisch Backend und Frontend.

getLoginUserID();

Get User Name

Befehl

Gibt den Name des aktuellen Benutzers zurück. Die Funktion unterscheidet automatisch Backend und Frontend.

getLoginUserName();

Get User Type

Befehl

Gibt entweder web, manager oder LEEREN_STRING zurück. Die Funktion unterscheidet automatisch Backend und Frontend.

getLoginUserType();

Get Manager User Info

Befehl

Dieser Befehl gibt alle Information zu einer Benutzer-Id als assoziativen Array zurück. Funktioniert nur mit Manager-Benutzern

getUserInfo(int benutzerId);

Get Web User Info

Befehl

Dieser Befehl gibt alle Information zu einer Benutzer-Id als assoziativen Array zurück. Funktioniert nur mit Web-Benutzern

getWebUserInfo(int benutzerId);

Change Web User Password

Befehl

Ändert das Passwort eines Web-Benutzers.

changeWebUserPassword(string altesPasswort,string neuesPasswort);

Alte Methode

changePasswort(string altesPasswort,string neuesPasswort);

Is Member of Web Group ?

Befehl

Gibt TRUE zurück wenn der aktuelle Web-Benutzer in mind. einer der angegeben Web-Gruppen ist

isMemberOfWebGroup(array 'webGruppen);

Register Clientside CSS

Befehl

Dieser Befehl fügt einen Verweis auf eine CSS-Datei in den <head> ein.

regClientCSS(string pfadDerCSSDatei);

Wenn ein Snippet, dass diesen Befehl verwendet mehrmals auf einer Seite aufgerufen wird, wird der Wert trotzdem nur einmal eingefügt.

Beispiel

Mein kleines Gästebuch hat einige exta CSS-Attribute, die ich nicht in meine Haupt-CSS-Datei mit reinschreiben möchte.

$modx->regClientCSS('assets/snippets/guestbook/style.css');

Dadurch wird folgender Code vor </head> eingefügt

<link rel="stylesheet" href="assets/snippets/guestbook/style.css" />

Auch wenn ich das Gästebuch-Snippet mehrmals auf der Seite aufrufe wird nur ein Aufruf der CSS-Datei in den HTML-Kopf geschrieben.

Register Clientside Startup Script

Befehl

Dieser Befehl verhält sich wie regClientCSS, außer dass man hiermit Javascripts in den Header einbinden kann.

regClientStartupScript(string pfadZumScript[,bool nurText]);

nurText ist normalerweise auf FALSE gesetzt.

Rückgabewerte

Ein Aufruf fügt folgenden Code vor </head> ein

<script type="text/javascript" src="pfadZumScript"></script>

Register Clientside Script

Befehl

Entsprcith regClientStartupScript, außer dass hier der Code vor </body> eingefügt wird.

regClientScript(string pfadZumScript[,bool nurText]);

Register Clientsie Startup HTML Block

Befehl

Fügt den angegeben HTML-Block vor </head> ein

regClientStartupHTMLBlock(string htmlCode);

Register Clientside HTML Block

Befehl

Fügt den angegeben HTML-Block vor </body> ein

regClientHTMLBlock(string htmlCode);

Strip Tags

Befehl

Diese Funktion ist ein Wrapper für strip_tags. Zusätzlich werden auch noch alle MODx-Tags entfernt.

stripTags(string eingabe[,string erlaubteHTMLTags]);
Personal tools