[TYPO3-german] Extension Entwicklung Template Einbinden

Basti Baumann donillo at gmail.com
Mon Apr 23 12:10:36 CEST 2007


Basti Baumann schrieb:
> Fabian Koenig schrieb:
>> Immerwieder gern. :-)
>>
>>
>> Tobias Sasse schrieb:
>>> Super so funktioniert es :), bin dir sehr Dankbar.
>>>
>>> Schönen Tag noch und freundlichen Gruß
>>> Tobias
>>>
>>> Fabian Koenig schrieb:
>>>> Hi!
>>>>
>>>> Als erstes versuch es am besten mal mit dem Template:
>>>>
>>>> ==HTML:Template==
>>>> <!-- ###TEMPLATE### begin -->
>>>>    <table>
>>>>      <!-- ###CONTENT### begin-->
>>>>        <!-- ###LIST_ITEM### begin -->
>>>>          <tr>
>>>>            <td>###VALUE_NR###</td>
>>>>            <td>###VALUE_NAME###</td>
>>>>            <td>###VALUE_DESCRIPTION###</td>
>>>>            <td>###VALUE_ACTION###</td>
>>>>          </tr>
>>>>        <!-- ###LIST_ITEM### end -->
>>>>      <!-- ###CONTENT### end-->
>>>>    </table>
>>>> <!-- ###TEMPLATE### end -->
>>>> ==HTML:Template==
>>>>
>>>> Und mit folgendem script:
>>>>
>>>> ==PHP==
>>>> $this->templateCode = 
>>>> $this->cObj->fileResource($this->conf['templateFile']);
>>>>
>>>> $template['template'] = 
>>>> $this->cObj->getSubpart($this->templateCode,'###TEMPLATE###');
>>>> $template['listItem'] = 
>>>> $this->cObj->getSubpart($template['template'],'###LIST_ITEM###');
>>>>
>>>>
>>>> // Hier kommt deine Datenbankabfrage rein.
>>>> // Beispiel: $res = 
>>>> $GLOBALS['TYPO3_DB']->exec_SELECTquery($fieldList,$table,$whereClause,$groupBy,$orderBy,$limit); 
>>>>
>>>> $res = ...
>>>>
>>>>
>>>> while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
>>>>   $markerArray['###VALUE_NR###'] = $row['nr'];
>>>>   $markerArray['###VALUE_NAME###'] = $row['name'];
>>>>   $markerArray['###VALUE_DESCRIPTION###'] = $row['description'];
>>>>   $markerArray['###VALUE_ACTION###'] = $row['action'];
>>>>   $content_item .= 
>>>> $this->cObj->substituteMarkerArrayCached($template['listItem'], 
>>>> $markerArray);
>>>> }
>>>>
>>>> $subpartArray['###CONTENT###'] = $content_item;
>>>>
>>>> $content = 
>>>> $this->cObj->substituteMarkerArrayCached($template['template'], 
>>>> array(), $subpartArray);
>>>> return $content;
>>>> ==PHP==
>>>>
>>>>
>>>>
>>>> Hoffe es hilft.
>>>> Wenn nicht -> Weiter fragen ^^
>>>> $GLOBALS['TYPO3_DB']->MfG('Fabian König');
>>>>
>>>>
>>>>
>>>>
>>>> Tobias Sasse schrieb:
>>>>  
>>>>> Hallo zusammen,
>>>>>
>>>>> habe gerade mittel großes verständis Problem:
>>>>>
>>>>> Möchte eine Extension entwickeln und stecke nun beim Einbinden des 
>>>>> HTML Templates:
>>>>>
>>>>> Also es geht um die Ausgabe einer Liste die in etwa so aussehen 
>>>>> sollte:
>>>>>
>>>>> Name  |  Beschreibung   |  Aktion
>>>>> ----------------------------------
>>>>> Hans   |   Neter Kerl      | Anschauen
>>>>> Peter   |   Guter Läufer   | Anschauen
>>>>>
>>>>>
>>>>> usw.
>>>>>
>>>>> mein Template sieht wie folgt aus:
>>>>>
>>>>> <!-- ###CONTENT### begin-->
>>>>>    <table>
>>>>>        <tr>
>>>>>            <td>###LABEL_NR###</td>
>>>>>            <td>###LABEL_NAME###</td>
>>>>>            <td>###LABEL_DESCRIPTION###</td>
>>>>>            <td>###LABEL_ACTION###</td>
>>>>>        </tr>
>>>>>    <!-- ###LIST_ITEM### begin -->
>>>>>            <tr>
>>>>>                <td>###VALUE_NR###</td>
>>>>>                <td>###VALUE_NAME###</td>
>>>>>                <td>###VALUE_DESCRIPTION###</td>
>>>>>                <td>###VALUE_ACTION###</td>
>>>>>            </tr>
>>>>>              <!-- ###LIST_ITEM### end -->
>>>>>    </table>
>>>>> <!-- ###CONTENT### end-->
>>>>>
>>>>> Jetzt bekomme ich es nicht hin das die Marker richtig ersetzt 
>>>>> werden, kann mir da wohl wer helfen?!?
>>>>>
>>>>> http://wiki.typo3.org/index.php/Extension_Development,_using_HTML-Templates 
>>>>>
>>>>>
>>>>> Habe mit hilfe dieser Anleitung nen Ansatz ausprobiert und 
>>>>> verstricke mich irgendwie immer wieder :(.
>>>>>
>>>>> Mit freundlichen Grüßen
>>>>> Tobias
>>>>>
>>>>>     
>>>>
>>>>
>>>> _______________________________________________
>>>> TYPO3-german mailing list
>>>> TYPO3-german at lists.netfielders.de
>>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german
>>>>
>>>>   
>>>
> 
> Hi,
> 
> ich häng mich da mal hin ;)
> Ich habe fast das gleiche Problem wie Tobias.
> Habe per Kickstarter eine Extension angelegt und will mir das nun auch 
> per Template ausgeben lassen.
> Nun habe ich zum einen das Problem, dass ich nicht wirklich weis, ich 
> ich der Extension beibringe, dass es meinen Templatepfad aus der 
> ext_typoscript_setup.txt ausliest.
> Das habe ich aber immerhin umgangen, indem ich das Template so abfrage:
> ===PHP===
> if(isset($this->conf['templateFile']) && $this->conf['templateFile'] != 
> ""){
>             $this->templateCode = 
> $this->cObj->fileResource($this->conf['templateFile']);
>         }else{
>             $this->templateCode = 
> $this->cObj->fileResource("EXT:sb_partner/sb_partner_template.html");
>         }
> ===PHP===
> 
> Wie bringe ich das denn noch meiner Extension bei?
> 
> Nun zu meinem größeren Problem.
> Ich habe mich an die Anleitung von Fabian gehalten und so meine function 
> main bestückt:
> 
> ===PHP===
>     function main($content,$conf)    {
>         $this->conf=$conf;
>         $this->pi_setPiVarDefaults();
>         $this->pi_loadLL();
>         if(isset($this->conf['templateFile']) && 
> $this->conf['templateFile'] != ""){
>             $this->templateCode = 
> $this->cObj->fileResource($this->conf['templateFile']);
>         }else{
>             $this->templateCode = 
> $this->cObj->fileResource("EXT:sb_partner/sb_partner_template.html");
>         }
>         $content=$this->templateCode;
> 
>     $this->templateCode = $this->cObj->fileResource($this->templateCode);
> 
>     $template['template'] = 
> $this->cObj->getSubpart($this->templateCode,'###TEMPLATE###');
>     $template['listItem'] = 
> $this->cObj->getSubpart($template['template'],'###LIST_ITEM###');
> 
> 
>     // Hier kommt deine Datenbankabfrage rein.
>     // Beispiel: $res = 
> $GLOBALS['TYPO3_DB']->exec_SELECTquery($fieldList,$table,$whereClause,$groupBy,$orderBy,$limit); 
> 
> 
>     $res = 
> $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_sbpartner_partner','tx_sbpartner_partner.hidden=0'); 
> 
> 
> 
>     while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
>      $markerArray['###COMPANY###'] = $row['company'];
>      $markerArray['###FIRSTNAME###'] = $row['firstname'];
>      $markerArray['###LASTNAME###'] = $row['lastname'];
>      $markerArray['###ADDRESS###'] = $row['address'];
>      $markerArray['###ZIP###'] = $row['zip'];
>      $markerArray['###CITY###'] = $row['city'];
>      $markerArray['###COUNTRY###'] = $row['country'];
>      $content_item .= 
> $this->cObj->substituteMarkerArrayCached($template['listItem'], 
> $markerArray);
>     }
> 
>     $subpartArray['###CONTENT###'] = $content_item;
> 
>     $content = 
> $this->cObj->substituteMarkerArrayCached($template['template'], array(), 
> $subpartArray);
>       return $content;
>     }
> }
> ===PHP===
> 
> Allerdings wird dabei rein gar nichts ausgegeben.
> So sieht mein Template aus:
> ===HTML===
> <!-- ###TEMPLATE### begin -->
>      <table>
>   <!-- ###CONTENT### begin-->
>      <!-- ###LIST_ITEM### begin -->
>              <tr>
>                  <td>###COMPANY###</td>
>                  <td>###FIRSTNAME### ###LASTNAME###</td>
>                  <td>###ADDRESS</td>
>                  <td>###ZIP### ###CITY###</td>
>                  <td>###COUNTRY###</td>
>              </tr>
>       <!-- ###LIST_ITEM### end -->
>   <!-- ###CONTENT### end-->
>       </table>
> <!-- ###TEMPLATE### end -->
> ===HTML===
> 
> Wenn ich dagegen in der Funktion eine normale SQL Abfrage mache:
> 
> $abfrage = "SELECT * FROM tx_sbpartner_partner";
>   $ergebnis = mysql_query($abfrage);
>       $res = '';
>       while($row = mysql_fetch_object($ergebnis))
>         {
>         $res.=$row->company;
>         }
>         $content = $res;
> Dann bekomme ich zumindest meine Werte ausgegeben.
> 
> Nun ist die Frage, was mache ich falsch....
> 
> Danke schon einmal.
> 
> Grüße
> Basti

Hi,

habe den Fehler gefunden. Die zwei Zeilen waren zu viel:

$content=$this->templateCode;
$this->templateCode = $this->cObj->fileResource($this->templateCode);


Grüße
Basti


More information about the TYPO3-german mailing list