[UPDATE: funktioniert fast] template nächste tabellenzeile

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

[UPDATE: funktioniert fast] template nächste tabellenzeile

Beitrag von d23 »

hallo,

ich arbeite an einer gallery und brauche ein klein bißchen hilfe, weil ich entweder zu doof bin und nicht draufkomme wie es geht oder ich es einfach nicht richtig mach.

folgendes problem, ich möchte eine anzahl von X thumbnails auslesen und jeweils innerhalb eines tabellenfeldes ausgeben.

Code: Alles auswählen

<!-- BEGIN albumthm -->
                     <td>
                    {albumthm.THMIMG}
                    <span class="gensmall"><b> {albumthm.CNT_CMTS}</b> {L_COMMENTS}<br>
                        </a></span>

                         </td>
 <!-- END albumthm -->
wenn es jedoch mehr als 5 thumbnails pro zeile sind, dann soll per <tr></tr> in die nächste zeile springen.

kann mir bitte jemand anhand eines beispiels erklären, was ich dazu im template, bzw. der zugehörigen php datei machen muß ?

vielen dank
Zuletzt geändert von d23 am 08.08.2005 12:53, insgesamt 1-mal geändert.
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

KB:74 -> Schleifen / Blöcke (bitte den kompletten Punkt lesen, Beispiel befindet sich darin, ansonsten hier fragen)
viel erfolg
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

damit hab ich mich ja beschäftigt, aber ich weiß nicht, wie ich das auf mein beispiel übertragen soll :o ?
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

Array[zeile1][Bild1]
Array[zeile1][Bild2]
Array[zeile1][Bild3]
Array[zeile1][Bild4]
Array[zeile1][Bild5]
Array[zeile2][Bild1]
Array[zeile2][Bild2]
Array[zeile2][Bild3]

usw

Code: Alles auswählen

for ($x=1, $x <= zeilen, $x++)
{
        $template->assign_block_vars('zeile', array(
        ));

        for ($y=1, $y <= 5, $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
// array[$x][$y
               ));
         }
}

Code: Alles auswählen

<!-- BEGIN zeile --> 
<tr>
<!-- BEGIN zeile.bild -->
<td> Bild </td>
<!-- End zeile.bild -->
</tr>
<!-- END zeile -->
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

sorry, ich kriegs einfach nicht gebacken, vielleicht sollte ich doch noch einmal ein bißchen schlafen.

hier mal der aktuelle code, vielleichts funktionierts wegen meinem code nicht.
wie sollte das jetzt eingebaut werden ? :o

php

Code: Alles auswählen

$alb_sql = 'SELECT * FROM `gallery_pics` WHERE `album_id` = ' . $gal_id . ' ORDER BY `photo_id` ASC LIMIT ' . $start . ', 24';
if(!$alb_result = $db->sql_query($alb_sql)) {
        message_die(GENERAL_ERROR, 'Fehler beim Auslesen der Album-Informationen', '', __LINE__, __FILE__, $alb_sql);
}

while($alb_row = $db->sql_fetchrow($alb_result)) {


UNWESENTLICHES GEKÜRZT

$img_url = "<a href=gallery_pic.php?pic_id=" . $akt_ptid . "><img src=\"gallery/" . $gal_ord['2'] . "/_thm/" . $alb_row['filename'] . "\"></a><br>";

$template->assign_block_vars('albumthm', array(
                 'CNT_PICS' => $cnt_alb,
                 'THMIMG' => $img_url,
                 'CNT_CMTS' => $cnt_cmt
             ));
}
template:

Code: Alles auswählen


<table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;{ALBADD_DATE}</th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>{ALBTITLE}</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u={ALBAUTHOR}">{ALBAUTHOR}</a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">

                       <tr>

<!-- BEGIN albumthm -->
                     <td>
                    {albumthm.THMIMG}
                    <span class="gensmall"><b> {albumthm.CNT_CMTS}</b> Kommentare<br>
                        </a></span>

                         </td>
 <!-- END albumthm -->
                           </tr>


                           </td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav">{PAGE_NUMBER}</span></td>
        <td align="right"><span class="nav">{PAGINATION}</span></td>
  </tr>
</table>




d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

hmmm, weiß das keiner ?
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

d23 hat geschrieben:hmmm, weiß das keiner ?
das unwesentliche enthält leider ein paar Zeilen die wichtig sind... zum Beispiel das Array mit allen Bildern
da du damit nicht klarkommst habe ich den Code ein wenig vereinfacht:
(jedoch schlechter Programmierstil, aber fehlerfrei:

Code: Alles auswählen

$zeilen = count($bilderarray);
for ($x=1, $x <= $zeilen, $x++) 
{ 
        $template->assign_block_vars('zeile', array( 
        //leer, ist nur wegen dem tr
        )); 

        $y = $x;
        for ($y=$x, $y <= $x +5, $y++) 
        { 
              $template->assign_block_vars('zeile.bild', array(
                  'PFADODERWASAUCHIMMER' => $was_du_halt_zuweist,
// das aktuelle Bild ist = bilderarray[$x]
               ));
                $x++
                if ( !isset($bilderarray[$x])
                        break;
         } 
}
die einzelnen Zuweisungen:

Code: Alles auswählen

<!-- BEGIN zeile --> 
<tr> 
         <!-- BEGIN zeile.bild --> 
         <td> {zeile.bild.PFADODERWASAUCHIMMER}</td> 
         <!-- End zeile.bild --> 
</tr> 
<!-- END zeile -->
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

hallo,

nach etwas längerer zeit bin ich auch mal wieder da, scheinbar funktioniert da leider etwas nicht richtig :-(

folgende fehlermeldung:

Code: Alles auswählen

Parse error: parse error, unexpected '=' in /forum/includes/template.php(929) : eval()'d code on line 33
hier mal beide dateien vollständig, ziemlich frickelcode, der is nur zum testen und wir dann mal überabrietet

gallery_album.php

Code: Alles auswählen


<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$gal_id = ( isset($HTTP_GET_VARS['gal_id']) ) ? intval($HTTP_GET_VARS['gal_id']) : 0;

//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_GALLERY);
init_userprefs($userdata);
$page_title = 'Gallery';
 include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
    'gallery_album' => 'gallery_album.tpl',
));





$alb_sql = 'SELECT * FROM `gallery_pix` WHERE `album_id` = ' . $gal_id . ' ORDER BY `id` ASC LIMIT ' . $start . ', 24';
if(!$alb_result = $db->sql_query($alb_sql)) {
        message_die(GENERAL_ERROR, 'Fehler beim Auslesen der Album-Informationen', '', __LINE__, __FILE__, $alb_sql);
}

while($alb_row = $db->sql_fetchrow($alb_result)) {



$cnt_alb = mysql_query("SELECT * FROM `gallery_pix` WHERE `album_id` = '" . $alb_row['album_id'] . "'");
$cnt_alb = mysql_num_rows($cnt_alb);

$cnt_cmt = mysql_query("SELECT * FROM `gallery_comments` WHERE `pic_id` = '" . $alb_row['id'] . "'");
$cnt_cmt = mysql_num_rows($cnt_cmt);

$akt_ptid = $alb_row['id'];

$albpl_sql = mysql_query('SELECT * FROM `gallery_albums` WHERE `id` = ' . $gal_id);
$gal_ord = mysql_fetch_row($albpl_sql);

$rd_datum = $gal_ord['3'];

$day = date("w", $rd_datum);
$days = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$date = date("j", $rd_datum);
$month = date("n", $rd_datum);

$months = array(1=>"Januar", 2=>"Februar", 3=>"März", 4=>"April", 5=>"Mai", 6=>"Juni", 7=>"Juli", 8=>"August", 9=>"September", 10=>"Oktober", 11=>"November", 12=>"Dezember");

$year = date("Y", $rd_datum);
$clc_datum = $days[$day] . ", " . $date . ". " . $months[$month] . "   " . $year;


$template->assign_vars(array(
                'ALBID' => $gal_ord['0'],
                'ALBTITLE' => $gal_ord['1'],
                'ALBAUTHOR' => $gal_ord['2'],
                'ALBADD_DATE' => $clc_datum
                 ));


// Die Ausgabe der Variablen


$img_url = "<a href=gallery_pic.php?pic_id=" . $akt_ptid . "&pic_dir=" . $alb_row['ordner'] . "&pic_name=" . $alb_row['dateiname'] . "><img src=\"gallery/" . $alb_row['ordner'] . "/_thm/" . $alb_row['dateiname'] . "\"></a><br>";
        $zeilen = count($cnt_alb);
for ($x = 1; $x <= $zeilen; $x++)
{
        $template->assign_block_vars('zeile', array(
        //leer, ist nur wegen dem tr
        ));

        $y = $x;
        for ($y = $x; $y <= $x + 5; $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
                  'THMIMG' => $img_url,
               ));
                $x++;
          if(!isset($cnt_alb[$x]))
                        break;
         }
}


        }




$board_config['topics_per_page'] = 24;

if ( $board_config['topics_per_page'] > 10 )
{
        $sql = "SELECT count(*) AS total
                FROM gallery_albums";
        $result = $db->sql_query($sql);

                if ( $total = $db->sql_fetchrow($result) )
        {
                $total_members = $total['total'];

                $pagination = generate_pagination("gallery_dir.$phpEx?gal_id=" . $gal_id . "", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
        }
        $db->sql_freeresult($result);
}
else
{
        $pagination = '&nbsp;';
        $total_members = 24;
}

$template->assign_vars(array(
        'PAGINATION' => $pagination,
        'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $total_members / $board_config['topics_per_page'] )),

        'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('gallery_album');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
gallery_album.tpl

Code: Alles auswählen

<table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;{ALBADD_DATE}</th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>{ALBTITLE}</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u={ALBAUTHOR}">{ALBAUTHOR}</a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
<!-- BEGIN zeile -->
<tr>
         <!-- BEGIN zeile.bild -->
         <td> {zeile.bild.THMIMG}</td>
         <!-- END zeile.bild -->
</tr>
<!-- END zeile -->
                           </tr></td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav">{PAGE_NUMBER}</span></td>
        <td align="right"><span class="nav">{PAGINATION}</span></td>
  </tr>
</table>

was geht denn da schief ?

lg
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

ich bin leider in Hannover und habe keine Entwicklungsumgebung

markiere mal die Zeile in der der Fehler ist
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

in der template.php (2.0.17 original, benutzer aber xs_mod, liegt aber damit nicht daran) schlägt folgende funktion fehl:

Code: Alles auswählen

 
        function pparse($handle)
        {
                if (!$this->loadfile($handle))
                {
                        die("Template->pparse(): Couldn't load template file for handle $handle");
                }

                // actually compile the template now.
                if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
                {
                        // Actually compile the code now.
                        $this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
                }

                // Run the compiled code.
                eval($this->compiled_code[$handle]);
                return true;
        }
der betroffe ne block im template

Code: Alles auswählen

<!-- BEGIN zeile -->
<tr>
         <!-- BEGIN zeile.bild -->
         <td> {zeile.bild.THMIMG}</td>
         <!-- END zeile.bild -->
</tr>
<!-- END zeile -->
geparst und gecached im xs_mod sieht das dann so aus:

Code: Alles auswählen

<?php

// eXtreme Styles mod cache. Generated on Tue, 02 Aug 2005 02:22:02 +0200 (time=1122942122)

?><table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;<?php echo isset($this->vars['ALBADD_DATE']) ? $this->vars['ALBADD_DATE'] : $this->lang('ALBADD_DATE'); ?></th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b><?php echo isset($this->vars['ALBTITLE']) ? $this->vars['ALBTITLE'] : $this->lang('ALBTITLE'); ?></a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u=<?php echo isset($this->vars['ALBAUTHOR']) ? $this->vars['ALBAUTHOR'] : $this->lang('ALBAUTHOR'); ?>"><?php echo isset($this->vars['ALBAUTHOR']) ? $this->vars['ALBAUTHOR'] : $this->lang('ALBAUTHOR'); ?></a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
<?php

$zeile_count = ( isset($this->_tpldata['zeile.']) ) ?  sizeof($this->_tpldata['zeile.']) : 0;
for ($zeile_i = 0; $zeile_i < $zeile_count; $zeile_i++)
{
 $zeile_item = &$this->_tpldata['zeile.'][$zeile_i];
 $zeile_item['S_ROW_COUNT'] = $zeile_i;
 $zeile_item['S_NUM_ROWS'] = $zeile_count;

?>
<tr>
         <?php

$zeile.bild_count = ( isset($zeile_item['bild.']) ) ? sizeof($zeile_item['bild.']) : 0;
for ($zeile.bild_i = 0; $zeile.bild_i < $zeile.bild_count; $zeile.bild_i++)
{
 $zeile.bild_item = &$zeile_item['bild.'][$zeile.bild_i];
 $zeile.bild_item['S_ROW_COUNT'] = $zeile.bild_i;
 $zeile.bild_item['S_NUM_ROWS'] = $zeile.bild_count;

?>
         <td> <?php echo isset($bild_item['THMIMG']) ? $bild_item['THMIMG'] : ''; ?></td>
         <?php

} // END zeile.bild

if(isset($zeile.bild_item)) { unset($zeile.bild_item); }

?>
</tr>
<?php

} // END zeile

if(isset($zeile_item)) { unset($zeile_item); }

?>
                           </tr></td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav"><?php echo isset($this->vars['PAGE_NUMBER']) ? $this->vars['PAGE_NUMBER'] : $this->lang('PAGE_NUMBER'); ?></span></td>
        <td align="right"><span class="nav"><?php echo isset($this->vars['PAGINATION']) ? $this->vars['PAGINATION'] : $this->lang('PAGINATION'); ?></span></td>
  </tr>
</table>
und das ist die zeile, die den fehler beinhaltet

Code: Alles auswählen

$zeile.bild_count = ( isset($zeile_item['bild.']) ) ? sizeof($zeile_item['bild.']) : 0;     
irgendeine idee ?

falls du willst, kann ich dir ftp zugriff auf meine entwicklungsumgebung geben, dann bräuchtest du nur einen editor =)
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“