Seite 1 von 1

PRobleme im Umgang mit Template Klasse

Verfasst: 29.09.2003 22:29
von mAx\\
Er gibt das Template xw_body korrekt ohne jegliche Fehlermeldung aus. Auch der "Block" wird der while entsprechend wiederholt jedoch ersetzt er die Platzhalter nicht sprich die Funktion assign_block_vars geht nicht so wie ich will. Wo liegt mein Fehler, was mach ich falsch? :)

Code:

Code: Alles auswählen

<?
define('IN_PHPBB', true); 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

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

if (xw_access($userdata["user_id"])) { 
	$result = mysql_query("SELECT id FROM phpbb_xw_spieler WHERE name='$spieler'");
	$spieler = mysql_fetch_array($result);
	if ($spieler) {
		$result = mysql_query("SELECT * FROM phpbb_xw_planeten WHERE besitzer='$spieler[id]'");
		while ($planeten = mysql_fetch_array($result)){
			$template->assign_block_vars('planrow', array(
				'XW_GAL' => $planeten[galaxie],
				'XW_SYS' => $planeten[system],
				'XW_PLAN' => $planeten[planet],
				'XW_SPIELER' => $spieler[name])
			);
		}
	}

} 
else { message_die(GENERAL_MESSAGE, "Nichts für dich"); }
$template->pparse('xw_body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Template:

Code: Alles auswählen

<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
<tr> 
	<th class="thCornerL" height="25" nowrap="nowrap">&nbsp;Gal&nbsp;</th>
	<th class="thTop" nowrap="nowrap">&nbsp;Sys&nbsp;</th>
	<th class="thTop" nowrap="nowrap">&nbsp;Plan&nbsp;</th>
	<th colspan="2" class="thCornerR" nowrap="nowrap">&nbsp;</th>
</tr>
<!-- BEGIN planrow -->
<tr> 
	<td class="row2" align="center" valign="middle" width="20" height="25"><span class="gensmall">{XW_GAL}</span></td>
	<td class="row2" align="center" valign="middle" width="20" nowrap="nowrap"> <span class="gensmall">{XW_SYS}</span></td>
	<td class="row2" align="center" valign="middle" width="20"><span class="gensmall">{XW_PLAN}</span></td>
	<td class="row1"><span class="forumlink">&nbsp;<a href="viewxwdb.php?spieler={XW_SPIELER}" class="forumlink">{XW_SPIELER}</a>&nbsp;</span></td>
</tr>
<!-- END planrow -->
</table>

Verfasst: 29.09.2003 22:38
von PhilippK
Die Variablen in den Blocks müssen jeweils mit dem Namen des Blocks beginnen. Also statt

Code: Alles auswählen

{XW_PLAN}

Code: Alles auswählen

{planrow.XW_PLAN}
Entspricht zumindest dem besten Wissenstand - einfach mal probieren :-)

Gruß, Philipp

Verfasst: 30.09.2003 12:30
von mAx\\
Leider nicht, Beispiel aus der index.php:

Code: Alles auswählen

$template->assign_block_vars('catrow', array(
	'CAT_ID' => $cat_id,
	'CAT_DESC' => $category_rows[$i]['cat_title'],
	'U_VIEWCAT' => append_sid("index.$phpEx?" . POST_CAT_URL . "=$cat_id"))
);

Verfasst: 30.09.2003 16:22
von PhilippK
Tja, dann war das wohl der falsche Weg. Kann aber derzeit nicht auf meine Testumgebung zugreifen :-(
Versuch mal folgendes:
statt

Code: Alles auswählen

            'XW_GAL' => $planeten[galaxie], 
            'XW_SYS' => $planeten[system], 
            'XW_PLAN' => $planeten[planet], 
            'XW_SPIELER' => $spieler[name]) 

Code: Alles auswählen

            'XW_GAL' => 'a', 
            'XW_SYS' => 'b', 
            'XW_PLAN' => 'c', 
            'XW_SPIELER' => 'd') 
Gruß, Philipp

BTW: das in den eckigen Klammern sind übrigens String-Werte und keine Konstanten: immer schön in Anführungszeichen setzen:

Code: Alles auswählen

$planeten['galaxie']

Verfasst: 30.09.2003 20:12
von mAx\\
Führt auch so nicht zum gewünschten Erfolg :(

Verfasst: 30.09.2003 23:40
von PhilippK
So, jetzt habe ich nochmals in den Code geschaut. Das was ich mit dem Prefix gesagt habe, war richtig. Natürlich nur im Template.
Zu dem von dir genannten Beispiel heißt der Template-Code nämlich:

Code: Alles auswählen

  <!-- BEGIN catrow -->
  <tr> 
	<td class="catLeft" colspan="2" height="28"><span class="cattitle"><a href="{catrow.U_VIEWCAT}" class="cattitle">{catrow.CAT_DESC}</a></span></td>
	<td class="rowpic" colspan="3" align="right">&nbsp;</td>
  </tr>
...
Versuch doch bitte mal, die Änderung am Template durchzuführen. Wenn's immer noch nicht will, weise den Variablen zusätzlich testweise feste Werte zu. (siehe mein letztes Beispiel)

Gruß, Philipp

Verfasst: 01.10.2003 01:32
von mAx\\
Vielen Dank, nun klappt es bestens das hab ich wohl glatt übersehen.