Modul Erstellung anhand eines Beispiels

Peter Beauvain
2007-06-24 22:49
Über dieses Beispiel:
Es soll aus einem Contenido Artikel eine PDF-Datei erzeugt werden. Es wird dafür die FPDF-Klasse benötigt, die man auf http://www.fpdf.org herunterladen kann. In diesem Beispiel wird nur ein Einstieg aufgezeigt, es ist also nicht mit einer Komplettlösung zu verwechseln.

@smily und alle die auch Module schreiben wollen !!

Du erstellst ein neues Modul. Du nennst dieses Modul meinetwegen mach_mir_ein_pdf.
Das Modul bindest du über ein template in Contenido ein.Das Modul platziert ein Image (bild_fuer_link_mach_mir_ein_pdf.png) irgendwo in deinem Layot.
Du übergibst in dem Modul den den aktuellen client, die aktuelle lang, und die aktuelle Artikel id an deinen PDF Parser.
In diesem Beispiel die Datei: mach_mir_ein_pdf.php
Das Modul hat den folgenden Inhalt:

<?

   
if ($cfgClient["set"] != "set"// CONTENIDO

   
{

      
$db = new DB_Contenido;

      
rereadClients();

   }
$pdfFile =$cfgClient[$client]['path']['frontendpath']."mach_mir_ein_pdf.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart";

echo 
"<A target=\"_blank\" href=\"$pdfFile\"><img src=images/bild_fuer_link_mach_mir_ein_pdf.png border=\"0\"
height=30></A>"

?>



Nun noch die Datei: mach_mir_ein_pdf.php die du mit deinem Modul includest:
Die Datei liegt im Verzeichnis deines aktuellen Mandanten.
In dem Beispiel liest du den Inhalt des Moduls Text(HTML) --> CMS_HTML[1] des aktuellen Artikels aus.


<?php
// include der DB Variablen von Contenido und der Pfade
include ('../contenido/includes/config.php');

include 
$cfg["path"]["contenido"].$cfg["path"]["includes"] . 'cfg_sql.inc.php';
// Verbinden mit der Datenbank
$db     = new DB_Contenido;
$query "SELECT  htmlpath FROM ".$cfg["tab"]["clients"]." WHERE idclient='".$client."'"
$db->query($query); 
$db->next_record(); 
$front $db->f("htmlpath");


//Auslesen der Aktuellen idartlang des Artikels 
$query "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".

          
$cfg["tab"]["art_lang"]." AS ARTLANG ".

         
"WHERE CATART.idcat = '$idcat' AND ARTLANG.idart = '$idart' AND ARTLANG.idlang = '$lang' AND ".

         
"ARTLANG.online = '1' ";

          
$db->query($query);

          
$db->next_record();

          
$value $db->f("idartlang"); //wird im nächsten SQL Query gebraucht



/*Auslesen der CMS_HTML[1] des Aktuellen Artikels

 '$value' AND idtype = '2' AND typeid = '1'"; ist das Modul Text(HTML) --> CMS_HTML[1]

 '$value' AND idtype = '1' AND typeid = '2'"; wäre z.B. das Modul Subheadline (HTML) --> CMS_HTMLHEAD[2]

 '$value' AND idtype = '1' AND typeid = '1'"; wäre z.B. das Modul Headline (HTML) --> CMS_HTMLHEAD[1]

 in der Tabelle con_content kann man sich das ansehen. in der Tabelle con_type ist die idtype

 abgelegt. --> in das DB-Modell schauen und die Tabellen mit PHPMyAdmin ansehen !!!! */
$sql2 "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '2' AND typeid = '1'"

          
$db->query($sql2);

          
$db->next_record();

          
$htmltext $db->f("value");

          
$htmltext urldecode  ($htmltext); 

          
//nun kommt dein PHP Code für das Parsen des CMS_HTML[1] ist in $htmltext enthalten !
define("FPDF_FONTPATH""font/");

require_once (
"fpdf.php");


$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->WriteHTML($htmltext);
$pdf->Output($pdfFile);


?>



Ich hoffe wenn Du diese Zusammenhänge nachvollziehen kannst, wirst Du demnächst in der Lage sein Module
für die Community zu schreiben. Ausserdem wäre es sehr nett von dir wenn du daraus eine A4 Seite machen könntest,
und diese dann der Contenido-FAQ zur verfügung stellst ;-) . Alleine schreiben macht keinen Spaß.

in diesem Sinne....
Durchschnittliche Bewertung: 3.8 (10 Abstimmungen)

Es ist möglich, diese FAQ zu kommentieren.