Druckbare Version des Themas
Hier klicken um das Thema im Original Format zu betrachten.
CMS - Der Dirigent > DeDi-Entwicklung > Tipps & Tricks
Geschrieben von: kfo am 27. Jul 2003 - 22:34
nachfolgend code snippets:

mehr CODE
// pfad zum cms-image-ordner im projektverzeichnis
// i.e.: /projekt01/cms/img

$pfad = $cfg_client['htmlpath'].'cms/img/';


oder

mehr CODE
// url zur derzeit angezeigten seite:

$con_side[$idcatside]['link']




mehr CODE
Hier die Erklärung wie man Funktionen innerhalb von Modulen kapselt. Wenn man das nicht macht kann ein Modul mit Funktionen nicht mehrfach abgearbeitet werden! Dabei wird die Funktion am Anfang des Moduls eingebunden und mit:

if (!function_exists('FunktionsName')) {
  function FunktionsName () {
  }
}



mehr CODE
Modul mehrfach verwendbar machen:

dies wird möglich wenn Ihr die Parameter, die Ihr übergeben müßt innerhalb eines Moduls so anlegt

...&modContainernummer_Modulverdopplungsnummer_Aktion=Parameter&...
z.B. ...'&'.$dedi_mod['key'].'Aktion=Parameter&'...

Auslesen könnt Ihr es dann so:
if(${$dedi_mod['key'].'Aktion'} == 'Parameter') {
}



mehr CODE
Bearbeiten von Content-Typen:

Link: $con_side[$idcatside]['link'].'&action=edit&idcatside='.$idcatside.'&content=1.1.1-1,3-1'
content="Container"."Verdopplungsnummer"."Typ"-"Typnummer","Typ"-"Typnummer";"Container"."Verdopplungsnummer"."Typ"-"Typnummer","Typ"-"Typnummer";
z.b. content=1.1.2-1,2-2;1.2.2-1,2-2
1.1.2-1 = 1. Container, 1. Kopie, 1.HTML-Eintrag also im Modul <dedi:mod type="wysiwyg" id="1">
,2-2 = 1. HTML-Eintrag also im Modul <dedi:mod type="wysiwyg" id="2">
1.2.2-1,2-2 = genau das gleiche, nur daß das Modul gedoppelt wurde und jetzt der 2. Eintrag bearbeitet wird


mehr CODE
Browserinformationen auslesen: (Nur im Backend z.b. für Plugin verwendbar.)
$tmp_sniffer = explode(',', $sid_sniffer);

Versionnummer
$tmp_sniffer['0'] = major
$tmp_sniffer['1'] = minor:4

Browser Version
$tmp_sniffer['2'] = nav
$tmp_sniffer['3'] = nav2
$tmp_sniffer['4'] = nav3
$tmp_sniffer['5'] = nav4
$tmp_sniffer['6'] = nav4up
$tmp_sniffer['7'] = nav6
$tmp_sniffer['8'] = nav6up
$tmp_sniffer['9'] = gecko
$tmp_sniffer['10'] = navonly

$tmp_sniffer['11'] = ie
$tmp_sniffer['12'] = ie3
$tmp_sniffer['13'] = ie4
$tmp_sniffer['14'] = ie4up
$tmp_sniffer['15'] = ie5
$tmp_sniffer['16'] = ie5up
$tmp_sniffer['17'] = ie5_5
$tmp_sniffer['18'] = ie5_5up
$tmp_sniffer['19'] = ie6
$tmp_sniffer['20'] = ie6up

$tmp_sniffer['21'] = aol
$tmp_sniffer['22'] = aol3
$tmp_sniffer['23'] = aol4
$tmp_sniffer['24'] = aol5
$tmp_sniffer['25'] = aol6

$tmp_sniffer['26'] = opera
$tmp_sniffer['27'] = opera2
$tmp_sniffer['28'] = opera3
$tmp_sniffer['29'] = opera4
$tmp_sniffer['30'] = opera5
$tmp_sniffer['31'] = opera5up

$tmp_sniffer['32'] = webtv

$tmp_sniffer['33'] = hotjava
$tmp_sniffer['34'] = hotjava3
$tmp_sniffer['35'] = hotjava3up

$tmp_sniffer['36'] = AOL TV(TVNavigator)

JavaScript Version
$tmp_sniffer['37'] = js

OS
$tmp_sniffer['38'] = win
$tmp_sniffer['39'] = win16
$tmp_sniffer['40'] = win31
$tmp_sniffer['41'] = win32
$tmp_sniffer['42'] = win95
$tmp_sniffer['43'] = win98
$tmp_sniffer['44'] = winme
$tmp_sniffer['45'] = winnt
$tmp_sniffer['46'] = win2k

$tmp_sniffer['47'] = os2

$tmp_sniffer['48'] = mac
$tmp_sniffer['49'] = mac68k
$tmp_sniffer['50'] = macppc

$tmp_sniffer['51'] = unix
$tmp_sniffer['52'] = sun
$tmp_sniffer['53'] = sun4
$tmp_sniffer['54'] = sun5
$tmp_sniffer['55'] = suni86
$tmp_sniffer['56'] = irix
$tmp_sniffer['57'] = irix5
$tmp_sniffer['58'] = irix6
$tmp_sniffer['59'] = hpux
$tmp_sniffer['60'] = hpux9
$tmp_sniffer['61'] = hpux10
$tmp_sniffer['62'] = aix
$tmp_sniffer['63'] = aix1
$tmp_sniffer['64'] = aix2
$tmp_sniffer['65'] = aix3
$tmp_sniffer['66'] = aix4
$tmp_sniffer['67'] = linux
$tmp_sniffer['68'] = sco
$tmp_sniffer['69'] = unixware
$tmp_sniffer['70'] = mpras
$tmp_sniffer['71'] = reliant
$tmp_sniffer['72'] = dec
$tmp_sniffer['73'] = sinix
$tmp_sniffer['74'] = bsd
$tmp_sniffer['75'] = freebsd

$tmp_sniffer['76'] = vms



mehr CODE
Bildberechnung:

<DEDIPHP>
if (!function_exists('MakeButton')) {
function MakeButton($text, $x, $y, $color, $font, $size, $angle, $image, $new_image) {
 global $cfg_dedi, $cfg_client;

 require_once $cfg_dedi['dedi_path'].'external/pear/image/transform.php';
 $dedi_image = Image_Transform::factory($cfg_dedi['image_mode']);
 $dedi_image->load($image);
 $dedi_image->addText(array('text'=>$text,'x'=>$x,'y'=>$y,'color'=>$color,'font'=>$font,'size'=>$size,'angle'=>$angle));
 $dedi_image->save($new_image);
 $dedi_image->free();
}
}
//if (!@is_file('cms/img/blau/navi-test.png'))
MakeButton('This is Textblablub', '10', '10', 'white', 'cms/fonts/verdana.ttf', '10', '0', 'cms/img/blau/navi.png', 'cms/img/blau/navi-test.png');
</DEDIPHP>
<img src="cms/img/blau/navi-test.png">



mehr CODE
Session-, User- und andere Variablen:

$cfg_dedi['x']
$cfg_client['x']



mehr CODE
Seitenstatus ändern:
change_code_status($list, '1', 'idcatside');



mehr CODE
Outputmanipulationsmöglichkeiten:

Bildpfade in relative Pfade korrigieren:
$output = str_replace("<img src="".$cfg_client['htmlpath'], "<img src="", $output);
echo $output;
DeDi unter Tripod zum laufen zu bekommen:
$output = strstr($output, '<html>');
echo $output;

Umlaute umwandeln:
$output=str_replace('Ä', '&Auml;', $output);
$output=str_replace('ä', '&auml;', $output);
$output=str_replace('Ö', '&Ouml;', $output);
$output=str_replace('ö', '&ouml;', $output);
$output=str_replace('Ü', '&Uuml;', $output);
$output=str_replace('ü', '&uuml;', $output);
$output=str_replace('ß', '&szlig;', $output);
echo $output;



mehr CODE
Variablen über DeDi-Tags editieren und in Funktionen verwenden:

<DEDIPHP>
if (!function_exists('test')) {
 function test() {
   $test = "<?php echo <dedi:mod type="text" id="1" title="Variable" menuoptions="false" width="20" addslashes="true" />; ?>";
   echo $test;
 }
}
test();
</DEDIPHP>
<dedi:mod type="typegroup" elements="text[1]" title="Variable" />



mehr CODE
E-Mail senden:

<DEDIPHP>
include_once($dedi->cfg['dedi_path'].'external/pear/mail.php');
include_once($dedi->cfg['dedi_path'].'external/pear/mail/mime.php');
$cfg['send'] = &Mail::factory($dedi->cfg['mail']['type'], $dedi->cfg['mail']['config']);
$cfg['mime'] = new Mail_mime("n", $dedi->cfg_client['lang']['charset']);
$cfg['mime']->setTXTBody('Dies ist nur ein Test.');
$cfg['mime']->setHTMLBody('<html><body>Dies ist nur ein <b>Test</b>.<img src="doberman.jpg"></body></html>');
$cfg['mime']->addHTMLImage($dedi->cfg_client['upl_path'].'demo/doberman.jpg', 'image/jpg');
$cfg['mime']->addAttachment($dedi->cfg_client['upl_path'].'demo/top_bar_logo.gif', 'image/gif');
$cfg['send']->send($cfg['mime']->get(), $cfg['mime']->headers(array('From'=>'Paul Eppner <info@der-dirigent.de>', 'To'=>'Paul Eppner <info@der-dirigent.de>', 'Bcc'=>'Paul Eppner <info@der-dirigent.de>, Eppi <paul_eppi@gmx.de>','Subject'=>$dedi->cfg['mail']['type'].'-Testmail-'.date('H:i:s'),'X-Priority'=>'1')));
</DEDIPHP>



mehr CODE
Output strippen:

if (!function_exists('mod_manipulate_output')) {
        function mod_manipulate_output(&$output, $id) {
 $output = '$output = preg_replace(array("!((?sU).*)<!--START '.$id.'//-->!m", "!<!--END '.$id.'//-->((?s).*)!m"), array('', ''), $output);'.$output;
        }
}
mod_manipulate_output($cfg_client['manipulate_output'], $dedi_mod['container']['id']);


mehr CODE
Alle Variablen, die nur innerhalb des gecachten PHPs sichtbar sind, auch fuer dynamisches PHP zur Verfuegung stellen:
<DEDIPHP>
<?php foreach($dedi_mod['value'] AS $k => $v) echo '$mod["'.$k.'"] = "'.str_replace('"', '"', str_replace('', '', $v)).'";'."n"; ?>
</DEDIPHP>

viele grüsse
karsten.


Bearbeitet am 16.08.2004 durch jbraendle:
Abschnitt "Rechte kontrollieren" entfernt, da nicht mehr gültig, neues gepinntes Thema "Rechte abfragen" hat aktuellen Stand.

Geschrieben von: STam am 28. Jul 2003 - 12:50
Ich auch, ich auch...

Funktion um Datumseingaben zu validieren:


mehr CODE

/**
  * DediMod_Str2Date ($in)
  * Das Datum kann mit Punkt ($in= '12.1.2003'),  Bindestrich ($in= '12-1-2003'),  Slash ($in= '12/1/2003'),  oder leerzeichen ($in= '12 1 2003') separiert sein.
  * Das Datum kann mit führenden Nullen und auch ohne eingegeben werden ($in= '02.01.2003' oder $in= '2.1.2003').
  * Das Datum kann mit führendem 19/20 im Jahr und auc ohne eingegeben werden ($in= '02.01.2003' oder $in= '2.1.03').
  * Rückgabecodes:
  * bei Erfolg (int) = timestamp
  * wenn kein Datum/kein 'echtes' Datum = (int) -4
  * wenn kein Jahr/falscher Jahresbereich = (int) -3
  * wenn kein Monat = (int) -2
  * wenn kein Tag = (int) -1    
  **/
if (!function_exists('DediMod_Str2Date')) {
function DediMod_Str2Date($in)
{
 $date_time_array = getdate (time());
 $akt_year = (int) substr($date_time_array["year"], 2, 2);
 $t = trim($t); //säubern
 $t = explode(".", $in); //splitten mit .
 if (count($t) != 3) $t = explode("/", $in); //splitten mit /
 if (count($t) != 3) $t = explode("-", $in); //splitten mit -
 if (count($t) != 3) $t = explode(" ", $in); //splitten mit ' '
 if (count($t) != 3) return -4; //kein Datum
 if (!is_numeric($t[0])) return -1; //kein Tag
 if (!is_numeric($t[1])) return -2; //kein Monat
 if (!is_numeric($t[2])) return -3; //kein Jahr
 if ($t[2] <= $akt_year and $t[2] >= 0) $t[2] = $t[2] + 2000; //bei zB Jahr = 01 + 2000 = 2001 // geändert 3.09.03: if ($t[2] <=
 if ($t[2] > $akt_year and $t[2] <= 99) $t[2] = $t[2] + 1900; //bei zB Jahr = 74 + 1900 = 1974
 if ($t[2] < 1902 || $t[2] > 2037) return -3; //falscher Bereich
 if (checkdate ($t[1], $t[0], $t[2]) != true) return -4; //kein echtes Datum
 return mktime (0, 0, 0, $t[1], $t[0], $t[2]);
}
}


Funktion um Links aus bestimmten Urls innerhalb von Texten zu generieren.


mehr CODE

/**
 * DediMod_UrlParse ($url)
 * Eingabe von (string) $url
 * Ausgabe von Link mit Url
 **/  
if (!function_exists('DediMod_UrlParse')) {
function DediMod_UrlParse ($url)
{
   $pattern = '#[\s]?(^|[^\"=]{1})(http://|https://|ftp://|mailto:|news://|teamspeak://|ed2k://|unreal://|gopher://|news://|telnet://)([^\s<>]+)([\s\n<>]|$)#sm';
   return preg_replace($pattern,"\\1<a target=\"_blank\" href=\"\\2\\3\">\\2\\3</a>\\4",$url);
}
}


Gruss, STam

Geschrieben von: STam am 01. Aug 2003 - 10:58
Entwicklervariablen

Die Liste ist in Abschnitte aufgeteilt: Eingangsvariablen, Globale, Module
Es wird hier nicht weiter auf PHP eigene Variablen, Konstanten und Objekte eingegangen wie z.B.: Directory::read(), diese sind einem PHP-Handbuch zu entnehmen.
Auch habe ich erstmal Funktionen, deren nutzen sich ausschließt, überflüssig sind da das Ergebnis schon vorliegt oder zu umständlich sind, ausgelassen.
Die Abschnitte bezeichnen auch die Gültigkeit dieser Variablen, folgende Definitionen gelten für die einzelnen Bereiche:
- Eingangsvariablen, sind Variablen die per GET/POST/COOKIE/SESSION übergeben wurden und von DeDi global zur verfügung gestellt werden.
- Variablen aus dem Abschnitt 'Globale' sind immer gültig und haben global, zur laufzeit immer gleichen Inhalt!
- Eine Variable aus dem Bereich 'Module' ist nur in dem Modul gültig von wo Sie abgefragt/hinterlegt wird. In einem anderem Modul können sich die die Inhalte dieser Variablen geändert haben!

Eingangsvariablen:

Zu diesen Variablen gehören alle Variablen die aus dem Enviroment kommen und direkt Speicherzustände oder Eingabezustände wiedergeben, vom System dem Frontend und dem Backend.
Bei allen diesen Variablen sei gesagt das noch keine Eingangsbehandlung in DeDi implementiert ist und somit diese als 'unsicher' einzustufen sind.

- GET/POST/COOKIE/SESSION/ARGV Variablen werden durch DeDi global instanziert, und somit ein 'register Global´s' Simuliert.

Beispiel:
Die durch ein Formular weitergegebene Variable '<input type="text" name="vorname" id="vorname" value="">' wird aud der nächsten Seite die das Formular empfängt als $vorname, mit dem Inhalt des Textfeldes "vorname", globalisiert.
Näheres bitte der PHP-Dokumentation entnehmen!


Globale:

zu den Konstanten gehören:
- DEDI_SETUP_LOCK = 1 , wird in der Config gesetzt

zu den Objekten gehören:

- $deb = aktuelle Debug-Informationen
- $db = aktuelle Datenbankverbindung
- $auth = Session/Login Verwaltung
- $perm = Rechteverwaltung

zu den Variablen gehören:

- $idcat:string = Idcat
- $view:string = aktueller Modus
- $sid:string = SessionID
- $dedi_path:string = Backendpfad
- $client:string = ClientId
- $startlang:string = voreingestellte LangId LangId bei Start (Language)
- $cfg_dedi:array = aktuelle Konfiguration
- $dedi_db:array = Varnamen der DeDi-Tabellen
- $_PHPLIB:array = informationen zur von DeDi genutzten PhpLib
- $dedi_lang:array = aktuelle Language Übersetzungen
- $cfg_client:array = Client Konfiguration
- $lang:string = aktuelle LangId (Language)
- $con_tree:array = enthält alle Ordner des $client & $lang
- $tlo_tree:array = sortierung von $con_tree
- $catlist:array = liste aller Ordner
- $catlist_level:array = einrückung der Ordner
- $con_side:array = enthält alle Seiten des $client & $lang
- $idcatside:string = aktuelle Seite (Frontend)
- $idside:string = aktuelle Seite (Frontend)
- $idtpl:string = aktuelles Template (Frontend)
- $container:array = Inhalte aller Container
- $list:array = Container Konfiguration des Templates



Module:

zu den Variablen gehören:

- $mod_lang:array = aktuelle Language Übersetzungen
- $layout:string = Inhalt des aktuellen Layouts
- $idlay:string = LayoutId
- $dedi_mod:array = Konfiguration des Moduls


So das wärs erstmal, weiss net ob ich was vergessen hab, zumindest die sollte man kennen und zu nutzen wissen!
Natürlich gibt es noch ein paar mehr und auch einige Module/Plugins erzeugen noch zusätzlichen Schrott, der aber gewiss nicht in jedem DeDi vorkommt also auch nicht wichtig ist ;I

Wer Fehler findet, Bitte ändern!

Gruss, STam

Geschrieben von: bjoern am 01. Aug 2003 - 15:40
OK, dann noch eine Kleinigkeit von mir, aus meinem alten Contenidotutorial übernommen und ein wenig angepasst:


Wie Ihr auf die Datenbank zugreifen solltet

DEDI benutzt zum Zugriff auf eure MySql- Datenbank die Abstraktionsschicht der "PHPlib". Für euch bedeutet das , das ihr euch z.B. nicht um das Connecten zur Datenbank kümmern müßt. Ich denke, am Einfachsten erklärt sich das Ganze durch ein kleines Beispiel. Kopiert den folgenden Code einfach in die Frontendausgabe eines neu erstellten Moduls, bindet dieses in ein Template ein und ruft eine Seite eurer Wahl auf. Das Modul zeigt alle Grafiken eures Bilderverzeichnises an und funktioniert natürlich nur, wenn ihr auch schon Bilder im Uploadbereich hochgeladen habt.

Weiterführende Informationen findet ihr in der Dokumentation zur PHPlib
(http://phplib.sourceforge.net).




mehr CODE
//dirname gibt den momentanen Imageordner relativ zum frontend an (img)
//filetype gibt den Dateityp an (img)
//Für weitere Informationen guckt euch mit phpmyadmin am Besten die Tabelle dedi_upl an.
$sql = "SELECT * FROM ". $dedi_db['upl'] ."
WHERE
idclient='$client'
AND
dirname='img'
AND
filetype='img'
ORDER BY filename";

$db->query($sql);

//Zeigt an, wie viele Datensätze sich in der aktuellen
echo 'Insgesamt werden ' . $db ->num_rows() . ' Datensätze angezeigt.<br><br>';

$i = 1;

//Angezeigt werden die Felder filename, dirname, filetype, description der Tabelle con_upl
while ($db->next_record())
{
echo "Bild Nr. $i :<br>";
echo "Dateiname: ". $db->f("filename") ."<br>";
echo "Ordnername: ". $db->f("dirname") ."<br>";
echo "Dateityp: ". $db->f("filetype") ."<br>";
echo "Beschreibung: ". $db->f("description") ."<br>";

echo "Relative URL zum Bild: ". $cfgClient[$client]["htmlpath"]["img"] . $db->f("filename") ."<br>";
echo 'Und das Bild: <br> <img src="'.$cfgClient[$client]["htmlpath"]["img"] . $db->f("filename") . '" border=0><br><br><br><br>';


$i++;
}

Geschrieben von: Eppi am 01. Aug 2003 - 17:45
Habe das Entwicklervariablenmodul ein wenig aufgefrischt. Hier also die v1.1:

Geschrieben von: bjoern am 03. Aug 2003 - 04:42
Erklärung der Tabelle dedi_content bzw. dedi_content_external

In dieser Tabelle wird der gesamte redaktionelle Inhalt einer Seite abgespeichert. Beide Tabellen sind von ihrem Aufbau her identisch.

Zu beachten: Die Tabelle dedi_content_external gehört eigentlich nicht zum System, sondern wird von Modulen benutzt. Dies hat den Vorteil, das Module die interne Struktur des Speicherns von Content aus DEDI übernehmen können, ohne dabei die ContentCoreTabelle dedi_content durcheinander zu bringen. Dies würde z.B. bei der Volltextsuche zu Problemen führen. Die dedi_content_external wird z.B. von dem Modulen Gästebuch, DeDi-Flex und Webgrab benutzt)

idcontent -> Eindeutige Id des Contents. Wird per autoincrement hochgezählt
idsidelang -> Eindeutige Id einer Seite in Verbindung mit einer Sprache
container -> Entspricht der id des DEDI:tags <dedi:lay type="container" id="XX" />
number -> Einzelne Container können innerhalb eines Moduls wiederholt werden. Die einzelnen Schleifenschritte werden mit 1, 2, 3, ..., n hochgezählt.
idtype -> Eindeutiger Bezeichner eines Contenttypes. Zur Zeit sind folgende Contenttypen vorhanden:
id | type
-----------------
1 | text
2 | wysiwyg
3 | textarea
4 | img
5 | imgdescr
6 | link
7 | linkdescr
8 | linktarget
9 | sourcecode
10 | file
11 | filedescr
12 | filetarget

typenumber -> Entspricht der id eines DEDI:tags <dedi:mod type="wysiwyg|link|file..." id="XX" />
value -> Der Content eines Feldes, z.B. WYSIWYG- Editors. Maximal können pro Feld 64kb Daten abgespeichert werden.
online -> Zur Zeit keine Funktion
version -> Zur Zeit keine Funktion
author -> user_id (aus Tabelle dedi_users) des Redaktuers, welcher den Content angelegt oder zuletzt den Content geändert hat.
created -> Datum als Timestamp
lastmodified -> Datum als Timestamp

Geschrieben von: kfo am 10. Aug 2003 - 21:40
stichwort wysiwyg-editor / wie einbinden / wo finde ich den code?:


mehr CODE
hmm...hab mich mal ein wenig mit dem einbinden der editoren in dedi beschäftigt,
mich damals durch den code gelesen, probiert und rumgefummelt.

angefangen hat es mit dem verzeichnis
/backend/external/wysiwyg/
in dem die wysiwyg-archive und php-includes für die wysiwyg-editoren abgelegt sind.

dann kam der tip von björn ich solle doch mal in die datei /backend/inc/inc.con_edit.php
reinschauen.

last but not least habe ich den eigentlichen code für die applet-tags bzw. die aufrufe für
den standard ie-wysiwyg-editor dann in der datenbanktabelle dedi_type im record wysiwyg gefunden.

Geschrieben von: Eppi am 12. Aug 2003 - 22:08
wer Module mit einem einfachen und einem erweitertem Konfigurationsbereich erstellen möchte kann für den Input sowas in der Art verwenden:


mehr CODE
<?PHP
// Modus konfigurieren
if ($dedi_mod['value']['0'] == '') $dedi_mod['value']['0'] = 'advanced_mode';
if ($dedi_mod['value']['0'] == 'simple_mode' && $action == 'change') $dedi_mod['value']['0'] = 'advanced_mode';
elseif ($dedi_mod['value']['0'] == 'advanced_mode' && $action == 'change') $dedi_mod['value']['0'] = 'simple_mode';
$mip_form['0']['cat'] = 'hidden';
$mip_form['0']['cms_var'] = 'MOD_VAR[0]';
$mip_form['0']['cms_val'] = $dedi_mod['value']['0'];

// überall konfigurierbare Variablen:
$mip_form['1']['desc'] = 'Test1';
$mip_form['1']['cat'] = 'txt';
$mip_form['1']['cms_var'] = 'MOD_VAR[1]';
$mip_form['1']['cms_val'] = $dedi_mod['value']['1'];
$mip_form['1']['cms_val_default'] = '100%';

// Simple-Mode
if ($dedi_mod['value']['0'] == 'simple_mode') {
$mip_form['2']['cat'] = 'hidden';
$mip_form['2']['cms_var'] = 'MOD_VAR[2]';
$mip_form['2']['cms_val'] = $dedi_mod['value']['2'];

// Advanced-Mode
} else {
$mip_form['2']['desc'] = 'Test';
$mip_form['2']['cat'] = 'txt';
$mip_form['2']['cms_var'] = 'MOD_VAR[2]';
$mip_form['2']['cms_val'] = $dedi_mod['value']['2'];
$mip_form['2']['cms_val_default'] = '0';
}

mip_formsp($mip_form['0']);
mip_formsp($mip_form['1']);
mip_formsp($mip_form['2']);
?>
<select name="change_mode" size="1" onchange="document.editform.action.value='change';document.editform.submit();">
<?PHP
printf('<option value="simple_mode"%s>simple_mode</option>'."\n", ($dedi_mod['value']['0'] == 'simple_mode') ? ' selected' : '');
printf('<option value="advanced_mode"%s>advanced_mode</option>'."\n", ($dedi_mod['value']['0'] == 'advanced_mode') ? ' selected' : '');
?>
</select>
<?PHP unset($mip_form); ?>


Editmodus abfragen & auf edit_all umschalten...

mehr CODE
<?php
if ($dedi_side['edit']) {
$dedi_side['edit_all'] = 'true';
unset($dedi_side['edit']);
} else {}

Geschrieben von: mvsxyz am 12. Mar 2004 - 16:28
Wie kann ich in einem Modul die aktuelle URL auslesen?
Normalerweise funktioniert das über $con_tree[$idcatside]['link'], aber im Modul (unter B2) bekomme ich einen leeren Output. Wie muss es richtig lauten?

Geschrieben von: hk-cons am 12. Mar 2004 - 17:01
Also ich weiß ja nich, welches Modul so gefunzt hat, aber ich würd es mit con_side versuchen anstelle von $con_tree ... wink.gif
Und wenn Du unbeding con_tree nehmen willst, sollst Du mit $idcat arbeiten ....

Geschrieben von: mvsxyz am 12. Mar 2004 - 17:06
Du hast ja soooo recht... biggrin.gif laugh.gif

Geschrieben von: Eppi am 13. Mar 2004 - 01:19
und immer an das <DEDIPHP> denken, da ansonsten die Session mit im cache landet dry.gif

Geschrieben von: mvsxyz am 14. Mar 2004 - 14:47
Ich möchte den Bereich zwischen <head> und </head> bzw. <!--START head//--> und <!--END head//--> heraus bekommen. Nach Art des Druckversionsmodul klappt es leider nicht, da die Var $output leer ist. Kann mir jemand helfen?

Geschrieben von: bjoern am 14. Mar 2004 - 15:10
Dann hast Du was falsch gemacht, in $output steht die gesamte Seite, ist die leer, hast Du auch keine Seite.

Wichtig dabei ist, das $output erst am Skriptende (logischerweise) zur verfügung steht. Du kannst das auch bei den projekteinstellungen sehen -> Frontendausgabe manipullieren. Das funktioniert folgendermaßen:

$cfg_client['manipulate_output'] -> da steht standardmässig echo $output; drinn.

eval($cfg_client['manipulate_output'] ); -> führt dann den Inhalt der Variable aus und Du bekommst Deine Seite.

Wenn Du selbst Anpassungen machen willst, mußt Du $cfg_client['manipulate_output'] entsprechend manipullieren. Das kann mann netterweise schon festlegen, bevor die Seite generiert wird.

Beispiel: $cfg_client['manipulate_output'] .= 'echo "Hallo Welt "; ' .$cfg_client['manipulate_output'] ;

Aufpassen mit den slashen, das kann ganz schön fummelig werden. Hoffe ich hab Dich jetzt nicht zu sehr verwirrt, die Materie ist ein wenig Tricky.

Geschrieben von: mvsxyz am 14. Mar 2004 - 15:15
Momentan sieht es bei mir so aus:

mehr CODE
   $printtpl = "MOD_VALUE[22]";
   $printtpl = str_replace('{head}', '$print_head', $printtpl);
  $printtpl = str_replace('{article}', addslashes($date), $printtpl);
   $mod['manipulate_output'] = '$output = "'.$printtpl.'";';
  $cfg_client['manipulate_output'] = $mod['manipulate_output'].$cfg_client['manipulate_output'];


{article} wird ersetzt und damit erhalte ich als Output momentan das:

mehr CODE
<html><head></head><body>Text Text Text<body></html>


weil MOD_VALUE[22] so aussieht:

mehr CODE
<html><head>{head}</head><body>{article}</body></html>


Und dieser Code aus dem Druckversionsmodul hilft irgendwie nicht:

mehr CODE
$mod['manipulate_output'] .= '$start = strpos($output, "<!--START head//-->");';
$mod['manipulate_output'] .= '$ende = strpos($output, "<!--END head//-->");';
$mod['manipulate_output'] .= '$ende = $ende - $start;';
$mod['manipulate_output'] .= '$print_head .= substr($output, $start, $ende);';

Geschrieben von: bjoern am 14. Mar 2004 - 16:52
kann ich mir das mal ansehen? Könnte ich Montag oder Dienstag mal ein paar Minuten reinivestieren smile.gif .

Geschrieben von: mvsxyz am 14. Mar 2004 - 17:45
Kommt per Mail... smile.gif

Geschrieben von: Mistral am 23. Nov 2004 - 23:20
Hallo zusammen

Auf Wunsch von Bratzi ;-) habe ich eine Vorlage (inkl. einem kleinen Beispiel) für ein Modul mit den Konfigmodi (Einfach|Erweitert|Ausgeblendet) erstellt:

siehe auch: http://forum.der-dirigent.de/index.php?act=ST&f=30&t=3547&hl=

Gruss
Mistral

Geschrieben von: bratzi am 23. Nov 2004 - 23:36
Hier das Beispielmodul ;-)

Powered by Invision Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)