Location: PHPKode > projects > php CMS > phpcms/parser/doc/doc_de/pax.htm
{PROJECT}		../../template/doc.de.ini
{MENU}			00.06.12
{TITEL}			Alles über PAX

{CONTENT}
<ul>
<li><a href="$self#wie">Wie funktioniert PAX? Warum PAX?</a></li>
<li><a href="$self#einbindung">Einbindung von PHP im Template</a></li>
<li><a href="$self#paxtags">Was sind PAX TAGS?</a></li>
	<ul>
		<li><a href="$self#include">PAXINC</a> Einbindung von weiteren Templates oder anderen Dateien</li>
		<li><a href="$self#highlight">PAXHIGHLIGHT</a><br />PHP-Syntaxhighlighting</li>
		<li><a href="$self#menutags">PAXMENU</a> Zugriff auf Menüwerte</li>
		<li><a href="$self#paxcombo">PAXCOMBO</a><br />Erstellung eines einfachen DropDown Menüs</li>
		<li><a href="$self#paxcomboall">PAXCOMBOALL</a><br />DropDown Menü aller vorhandener Menüs</li>
		<li><a href="$self#lastmod">PAXLASTMOD</a><br />stellt das letzte Aktualisierungsdatum der Seite dar</li>
	</ul>
<li><a href="$self#globale">Globale Werte</a></li>
<li><a href="$self#fehlerquellen">Fehlerquellen</a></li>
</ul>

<hr />
<US><a name="wie"><a href="$self#top">Wie funktioniert PAX? Warum PAX?</a></a></US>
<p>	
Ist PAX im GUI aktiviert, wird das Template vor der Übergabe an phpCMS an PAX übergeben um diverse
Erweiterungen schon im Vorfeld auszufiltern. So kommt phpCMS nicht durcheinander und PAX kann
auch weiterentwickelt werden, ohne weitere grössere Eingriffe im Parser von phpCMS vornehmen zu müssen.<br /><br />
Wie von phpCMS bekannt, werden Scripte, die über das Feld &#123;SCRIPT&#125; eingebunden sind, dynamisch zur Laufzeit in die Ausgabe eingebunden. Sollte Servercache aktiviert sein, wird die Seite jedoch auch im Cache abgelegt (obwohl dynamisch). Im Cache wird aber eben nur jener Teil abgelegt, welcher statisch ist, sich also zur Laufzeit nicht verändert. <br />Von dieser Funktionalität macht auch PAX gebrauch.
</p>
<p>
<b>PAX benötigt man, wenn PHP in Templates eingebunden werden soll.</b><br />
Weiters gibt es mit PAX verschiedene TAGS (PAXTAGS), welche bestimmte Eigenschaften haben. <br />
</p>
<p>
Bisher war es in phpCMS nicht möglich <b>PHP in Templates</b> einzubinden. Es bestand nur die Möglichkeit, wie schon oben angeführt, über &#123;SCRIPT&#125; externe Scripte in einer Contentseite einzubinden. Da ich aber zum Zeitpunt der PAX-Idee Bedarf hatte, ein Umfragescript auf jeder Seite einzubinden, musste ich mir Gedanken machen wie das funktionieren könnte, ohne in jeder Contentdatei das Feld &#123;SCRIPT&#125; anführen zu müssen. Und so entstand eben PAX *g*
</p>

<hr />
<US><a name="einbindung"><a href="$self#top">Einbindung von PHP im Template</a></a></US>

<p>
<b>Primär gilt es zu beachten, daß man mit PAX keine Debugging-Funktionalität für PHP hat!</b><br />
Die Einbindung von <b>PHP im Template</b> geschieht auf sehr einfache Weise und auf eigene Gefahr:
</p>
<p>
<u><b>Beispiel:</b></u><br />
<strong style="color:006600">&lt;!-- PAXPHP Blockbezeichnung</strong><br />
echo 'Hello World!';<br />
<strong style="color:006600">PAXPHP Blockbezeichnung --&gt;</strong>
</p>
<!-- PAXPHP hello_world
echo '<p>Ist die Unterstützung von PHP im Template aktiviert, so müsste man jetzt ein "Hello World!" sehen:<br />';
echo '<font size="+1" color="#990000">Hello World!</font>';
echo '</p>';
PAXPHP hello_world -->
<p>
<ul>
<li>PHP muss immer in einen Block geschrieben werden. Diesen filtert PAX im Vorfeld aus und verbindet vor der Ausgabe den von phpCMS erzeugten Code mit dem von PAX</li>
<li><b>Die "Blockbezeichnung" darf NICHT zweimal vorkommen</b>, egal in welchem Template!</li>
<li>In "Blockbezeichnung" dürfen Buchstaben in Gross/Kleinschreibung, Unterstriche und Zahlen verwendet werden. KEINE LEEREZEICHEN und KEINE SONDERZEICHEN ( A-Z , a-z , _ , 0-9 )</li>
<li>Der Block besteht immer aus einem <b>Beginntag und einem Endetag (&lt;!-- PAXPHP Blockbezeichnung und PAXPHP Blockbezeichnung --&gt;)</b></li>
<li>Die Trennung mit <b>Leerzeichen</b> des  PAXPHP-Tags und der Blockbezeichnung sind <b>wichtig!</b></li>
<li><b>Die üblichen Anfangstags ( &lt;? , &lt;?php ) und das Schlusstag  ( ?&gt; ) von PHP dürfen nicht vorkommen.</b></li>
</ul>
</p>
<p>
Wie man am Beispiel sieht, ist es sehr einfach PHP einzubinden.
</p>

<hr />
<US><a name="paxtags"><a href="$self#top">Was sind PAX TAGS?</a></a></US>

<p>
<ul>
<li><b>PAXTAGS</b> sind grundsätzlich <b>in Templates oder/und Contentdateien verfügbar</b></li>
<li><b>PAXTAGS</b> sind immer statisch. Das heisst, beim Ändern einer Contentdatei wird auch das PAXTAG angepasst. Sollte ein PAXTAG in einem Template verändert werden, so ist der Cache zu löschen, falls aktiviert.</li>
</ul>
---------------
<p>
Mit PAXTAGS wird die Funktionalität von phpCMS um einige interessante Features erweitert.
</p>

<hr />
<US><a name="include"><a href="$self#top">PAXINC: Einbindung von weiteren Templates oder anderen Dateien</a></a></US>

<p>
Mit PAXINC können weitere Templates oder Dateien an beliebiger Stelle im Template eingebunden werden. <br />
<b>Vorhandene Links werden <font color="#990000">NICHT</font> überprüft!</b>
</p>
<p>
<b>TAG:</b><br />
PAXINC<br /><br />
<b>SYNTAX: </b><br />
&lt;!-- PAXINC /pfad/vom_docroot/zu/template/oder/datei.html --&gt;
<br />oder<br />
&lt;!-- PAXINC http://www.domain.net/daten.html --&gt;
</p>
---------------
<p>
<b>Beispiel:</b><br />
&lt;!-- PAXINC http://phpcms.de/phpcms/doku/paxtest_de.html --&gt;<br /><br />
ergibt bei aktivierten PAXTAGS:<br /><!-- PAXINC http://phpcms.de/phpcms/doku/paxtest_de.html -->
</p>
<p>
Es können natürlich in den extern einzubindenden Templates oder Dateien weitere PAXTAGS geschrieben werden.
</p>

<hr />

<US><a name="highlight"><a href="$self#top">PAXHIGHLIGHT: PHP Syntaxhervorhebung</a></a></US>
<p>
PAXHIGHLIGHT bietet eine farbliche Syntaxhervorhebung für PHP Quellcode. 
<br />
<br />PAXHIGHLIGHT eignet sich in erster Linie für auf dem eigenen Server befindliche PHP-Dateien. Wird hingegen per HTTP auf Dateien zugegriffen, kann sich die Syntaxhervorhebung naturgemäss nur auf den vom Server zurück gegebenen Code beziehen - nicht auf den Quellcode der jeweiligen Datei.
<br />
<br />Zur syntaktischen Hervorhebung werden die im eingebauten Syntax Highlighter Ihrer PHP-Installation definierten Farben verwendet.<br />
</p>
<p>
<b>TAG:</b><br />
PAXHIGHLIGHT<br /><br />
<b>SYNTAX: </b><br />
&lt;!-- PAXHIGHLIGHT /pfad/von_root/zu/template/oder/datei.php --&gt;
<br />oder<br />
&lt;!-- PAXHIGHLIGHT http://www.domain.net/data.php --&gt;
</p>
Wenn die Variable &#36;home definiert ist, kann diese ebenfalls verwendet werden.<br />
---------------
<p>
<b>Beispiel:</b><br />
steht PAXTAGS im GUI auf "On", sehen Sie hier den syntaktisch hervorgehobenen Quellcode der Datei "/demo/user.php".<br /><br />
<!-- PAXHIGHLIGHT /demo/user.php -->
</p>

<hr />
<US><a name="menutags"><a href="$self#top">PAXMENU: Zugriff auf Menüwerte</a></a></US>

<p>
Mit <b>PAXMENU </b> ist die Möglichkeit gegeben, auf jedes Menüfeld zugreifen zu können.
</p>
<p>
<b>TAG:</b><br />
PAXMENU<br /><br />
<b>SYNTAX: </b><br />
<font color="#006600"><b>&lt;!-- PAXMENU FIELDNAME,CLASS --&gt;</b></font>
</p>
---------------
<p>
<b>einfaches Beispiel:</b><br />
Nehmen wir an, ich möchte einen Link zu einem Menüeintrag auf einer Seite oder in einem Template haben, dann wird dies wie folgt erreicht:
</p>
<p>
<font color="#006600"><b>&lt;a href="&lt;!-- PAXMENU LINK,00.08.06.12 --&gt;"&gt;&lt;!-- PAXMENU MNAME,00.08.06.12 --&gt;&lt;/a></b></font><br />
Dies würde einen Link auf einen Menüpunkt mit seinem Feldwert ergeben.
<br /><br />Ausgabe bei aktivierter PAXTAGS Unterstützung: <a href="<!-- PAXMENU LINK,00.08.06.12 -->"><!-- PAXMENU MNAME,00.08.06.12 --></a>
</p>
---------------
<p>
<b>Beispiel mit Titel (für IE), Zielframe/fenster und Statustextanzeige beim Mouseover:</b>
</p>
<p>
<font color="#006600"><b>&lt;A HREF="&lt;!-- PAXMENU LINK,00.08.06.12 --&gt;" TARGET="&lt;!-- PAXMENU TARGET,00.08.06.12 --&gt;" onMouseOver="window.status='&lt;!-- PAXMENU TEXT,00.08.06.12 --&gt;';return true;" title="&lt;!-- PAXMENU TEXT,00.08.06.12 --&gt;"&gt;&lt;!-- PAXMENU MNAME,00.08.06.12 --&gt;&lt;/a&gt;</b></font>
<br /><br />Ausgabe bei aktivierter PAXTAGS Unterstützung: <a href="<!-- PAXMENU LINK,00.08.06.12 -->" TARGET="<!-- PAXMENU TARGET,00.08.06.12 -->" onMouseOver="window.status='<!-- PAXMENU TEXT,00.08.06.12 -->';return true;" title="<!-- PAXMENU TEXT,00.08.06.12 -->"><!-- PAXMENU MNAME,00.08.06.12 --></a>
</p>
<p>
<b>Meine MenüFelder sehen wie folgt aus:</b><br />
<b>LINK</b> und <b>CLASS</b> sind ja Pfilchtfelder von phpCMS, also gibt es 
hierbei auch keine Unterschiede in der Schreibweise!<br />
<b>TARGET:</b> Zielfenster oder -frame für LINK<br />
<b>TEXT:</b> Soll in der Statuszeile dargestellt weden.<br />
<b>MNAME:</b> Feldname für Menübezeichnung
</p>
---------------
<p>
<b>Zusammengefasst</b> kann man auf <b>jedes Menüfeld zugreifen</b>, welches man 
<b>in der .mnu-Datei auch definiert</b> hat.
</p>

<hr />

<US><a name="paxcombo"><a href="$self#top">PAXCOMBO: Erstellung eines einfachen DropDown Menüs</a></a></US>
<p>PAXCOMBO kann verwendet werden, um ein Drop-Down Menü für ein einzelnes in der Menü-Datei definiertes Menü zu erzeugen.<br /><font color="#CC0000">PAXCOMBO funktioniert möglicherweise nur im non-Stealth-Mode einwandfrei!</font>
<br /><br />
Das angegebene Menü muss einen eindeutigen Namen tragen!
<br />Wenn ein Menü doppelt vorkommt (zb. SUB1), kommt es zu Fehlern bei der Darstellung!<br /><br />
Die Links werden grundsätzlich ausgehend von &#36;home gesetzt!
</p>

<p>
<b>TAG:</b><br />
PAXCOMBO<br /><br />
<b>SYNTAX: </b><br />
&lt;!-- PAXCOMBO MENUNAME,FIELDNAME,VALUES,SELECTED,SIZE,MULTI,ONCHANGE,FIRSTENTRY --&gt;
</p>
<p>
<table>
<tr>
	<td valign="top"><b>MENUNAME</b></td>
	<td valign="top">MENU:MAIN &gt; hier wäre MAIN richtig. Darf in der Menüdatei nur ein mal vorkommen!</td>
</tr>
<tr>
	<td valign="top"><b>FIELDNAME</b></td>
	<td valign="top">Welcher Feldinhalt soll angezeigt werden? LINK, TEXT, NAME, usw...</td>
</tr>
<tr>
	<td valign="top"><b>VALUES</b></td>
	<td valign="top">optional - welcher Feldinhalt soll als Wert eingefügt werden. Ganz brauchbar für zb. automischen Linklisten. Wenn nichts angegeben, wird der Wert von FIELDNAME eingetragen.</td>
</tr>
<tr>
	<td valign="top"><b>SELECTED</b></td>
	<td valign="top">optional - welche Zeile des angezeigten Menüs soll den Focus erhalten</td>
</tr>
<tr>
	<td valign="top"><b>SIZE</b></td>
	<td valign="top">optional - Wie gross soll die Liste sein (in Zeilen)</td>
</tr>
<tr>
	<td valign="top"><b>MULTI</b></td>
	<td valign="top">(on/off) optional - Soll Multiselect erlaubt werden?</td>
</tr>
<tr>
	<td valign="top"><b>ONCHANGE</b></td>
	<td valign="top">(on/off) optional - Soll ein automatischer onselect bei eintragsaktivierung eingetragen werden? Praktisch für Linklisten</td>
</tr>
<tr>
	<td valign="top"><b>FIRSTENTRY</b></td>
	<td valign="top">optional - Text der als erster Eintrag angezeigt werden soll. zb: ~ select an entry ~</td>
</tr>

</table>
</p>
---------------
<p>
<b>Beispiel:</b><br />
&lt;!-- PAXCOMBO SUB1, TEXT, LINK,, 1, off, on, ~ select your favorite ~ --&gt;<br /><br />
ergibt bei aktivierten PAXTAGS:<br /><!-- PAXCOMBO SUB1, TEXT, LINK, , 1, off, on, ~ select your favorite ~ -->
</p>

<hr />

<US><a name="paxcomboall"><a href="$self#top">PAXCOMBOALL: Erstellung eines DropDown Menüs aus allen definierten Menüs</a></a></US>

<p>PAXCOMBOALL kann verwendet werden, um ein automatisches Drop-Down Menü aller in der Menü-Datei definierten Menüs zu erzeugen.
</p>

<p>
<b>TAG:</b><br />
PAXCOMBOALL<br /><br />
<b>SYNTAX: </b><br />
&lt;!-- PAXCOMBOALL FIELDNAME,SIZE,MULTI,ONCHANGE,FIRSTENTRY --&gt;
</p>
<p>
<table>
<tr>
	<td valign="top"><b>FIELDNAME</b></td>
	<td valign="top">Welcher Feldinhalt soll angezeigt werden? LINK, TEXT, NAME, usw...</td>
</tr>
<tr>
	<td valign="top"><b>SIZE</b></td>
	<td valign="top">optional - Wie gross soll die Liste sein (in Zeilen)</td>
</tr>
<tr>
	<td valign="top"><b>MULTI</b></td>
	<td valign="top">(on/off) optional - Soll Multiselect erlaubt werden?</td>
</tr>
<tr>
	<td valign="top"><b>ONCHANGE</b></td>
	<td valign="top">(on/off) optional - Soll ein automatischer onselect bei eintragsaktivierung eingetragen werden? Praktisch für Linklisten</td>
</tr>
<tr>
	<td valign="top"><b>FIRSTENTRY</b></td>
	<td valign="top">optional - Text der als erster Eintrag angezeigt werden soll. zb: ~ select an entry ~</td>
</tr>

</table>
</p>
---------------
<p>
<b>Beispiel:</b><br />
&lt;!-- PAXCOMBOALL TEXT, 1, off, on, phpCMS Dokumentation --&gt;<br /><br />
ergibt bei aktivierten PAXTAGS:<br /><!-- PAXCOMBOALL TEXT, 1, off, on, phpCMS Dokumentation -->
</p>

<hr />

<US><a name="lastmod"><a href="$self#top">PAXLASTMOD: stellt das letzte Aktualisierungsdatum der Seite dar.</a></a></US>
<p>
<b>TAG:</b><br />
PAXLASTMOD<br /><br />
<b>SYNTAX: </b><br />
&lt;!-- PAXLASTMOD d.m.Y - H:m:s --&gt;
</p>
---------------
<p>
<b>Beispiel:</b><br />
&lt;!-- PAXLASTMOD d.m.Y - H:m:s --&gt;<br /><br />
ergibt bei aktivierten PAXTAGS:<br /><!-- PAXLASTMOD d.m.Y - H:m:s -->
<br /><br />
zur Formatierung der Ausgabe werden die Werte, die für den PHP Befehl <a href="http://www.phpcenter.de/en-html-manual/function.date.html" target="_blank">date</a> verwendet werden, herangezogen.
</p>

<hr />
<US><a name="globale"><a href="$self#top">Globale Werte</a></a></US>
<p>
Grundsätzlich stehen im PHP-Code alle globalen Werte zur Verfügung, die vor dem 
Einlesen der Seite in phpCMS vorhanden sind. Welche das sind, entnimmt man am 
besten der Dokumentation für phpCMS.<br />Nicht alle für Plug-ins beschriebenen 
Variablen stehen bereit. Hier heisst es experimentieren. Eine genaue Aufstellung 
werde ich laufend auf 
<a href="http://lemon.ac/" target="_blank">http://lemon.ac</a> bekanntgeben.<br />
Übergabe von Parametern ist natürlich ebenso möglich: http://domain.net/index.htm?&var=red<br />
Auch $PHP_SELF steht in unveränderter Form bereit. So könnte man eine Ausführung 
oder Anzeige von bestimmten Teilen im Code von der dargestellten Seite abhängig machen.
</p>

<hr />
<US><a name="fehlerquellen"><a href="$self#top">Fehlerquellen</a></a></US>
<p>
Derzeit sind keine bekannt. Wenn man sich an die Richtlinien von phpCMS, PAX und 
PHP hält, dürfte nichts schief gehen.
</p>
<p>
Tips&Tricks&FAQ zu PAX unter <a href="http://lemon.ac/" target="_blank">
lemon.ac - BBS</a><br />
Viel Spass
... <a href="mailto:hide@address.com">Wernhard</a>
</p>
Return current item: php CMS