Template Block ausblenden

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Slup
Mitglied
Beiträge: 248
Registriert: 28.08.2007 12:06
Wohnort: Dormagen

Template Block ausblenden

Beitrag von Slup »

Moin,

Habe mal wieder ein Problem. Unzwar binde ich einige Teile in meinem Board über switch ein.
Soweit klappt auch alles aber wie mache ich es das nur gerade der HTML Block angezeigt wird der aufrerufen worden ist?

Hier mal mein Code

Code: Alles auswählen

switch ($mode) {
			case 'spon_site':
			include("{$phpbb_root_path}includes/functions_sporn.$phpEx");
				$sql = 'SELECT * 
		FROM '.SPORN_TABLE.' ORDER BY sporn';
	 $result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
	$template->assign_block_vars('gan', array(
			'gan'					=> $row['gan'],
		));
		
	}
			break;

			default:
				
	$sql = 'SELECT * 
		FROM '.SPORN_TABLE.' ORDER BY sporn';
	 $result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
	$template->assign_block_vars('sporn', array(
			'sporn'					=> $row['sporn'],
		));
		
	}

Code: Alles auswählen

[color=red]########## case 'spon_site':  [/color]          
    <table class="table1" cellspacing="1">
	<thead>
	<tr>
		<th class="trank"><strong>{L_GAN}</strong></th>
	</tr>
	</thead>
	<tbody>
					

	<tr class="bg1">
    <!-- BEGIN gan -->
		<td>{gan.sporn}</td>
    <!-- END topsite -->
	</tr>
		
		
	</tbody>
	</table>
    [color=red]######## case 'spon_site': ###########[/color]
    
    [color=red]##############  default #################[/color]
	<table class="table1" cellspacing="1">
	<thead>
	<tr>
		<th class="trank"><strong>{L_SPORN}</strong></th>
	</tr>
	</thead>
	<tbody>
					

	<tr class="bg1">
    <!-- BEGIN sporn -->
		<td>{sporn.sporn}</td>
    <!-- END topsite -->
	</tr>
		
		
	</tbody>
	</table>
    [color=red] ##############  default #################[/color]
Jetzt hätte ich gerne das der teil mit dem case sporn_site angezeigt wird der aufgerufen wird und der default teilsoll ausgeblendet werden und eben anders herum.

Wie bekomme ich das hin?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wir reden aber nicht von phpBB3, oder?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Slup
Mitglied
Beiträge: 248
Registriert: 28.08.2007 12:06
Wohnort: Dormagen

Beitrag von Slup »

HiHo,

Äh doch. Vieleicht was das ein bischen komisch beschrieben.

Aus allen switsch anweisungen steht der html code in einer einzigen Datei.

Jenachdem ob case 'spon_site oder default aufgerufen wird soll auch nur dieser Block angeiegt werden.

Immoment ist es nämlich so das wenn ich http://localhost/sporn/sporn.php?mode=spon_site aufrufe, das auch der default Block noch angezeit wird
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Wirf mal einen Blick in die Datei Docs/coding-guidelines.htm in Deinem phpBB3 Ordner. Speziell der Abschnitt styling und Abschnitt templating.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Slup
Mitglied
Beiträge: 248
Registriert: 28.08.2007 12:06
Wohnort: Dormagen

Beitrag von Slup »

Ah Thx,

Wenn ich das jetzt richtig verstanden habe ist <!-- IF xxxxxxx --> dafür zuständig.

Jetzt ist die Frage woher kommt xxxxxxx? Ich kann leider nur auf die deutschen coding-guidelines zugreifen da ich kaum ein wort English versteh und dort ist es nicht beschrieben. Kommtt da spon_site rein oder was muss ort hin?
fragz
Mitglied
Beiträge: 204
Registriert: 23.10.2006 12:52
Kontaktdaten:

Beitrag von fragz »

HiHo,

Also ich kämpfe auch noch damit aber ich vermute mal das dies mit der switch abfrage komplizierter ist.
Versuch mal anstatt des Switch ne if abfrage.
Aber warten wa nochmal ein bschen, vieleicht ist ja jemand so Nett und erklärt uns das an einem kleinen Beispiel.

EDIT: Hau mal unter default: folgendes rein

Code: Alles auswählen

if (defined('DEFAULT'))
	{
und vor dem break; Im template packst die ganzen Tabellen zwichen

Code: Alles auswählen

<!-- IF DEFAULT -->

<!-- ENDIF -->
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Solange du ein wenig php beherrscht ist das eigentlich recht einfach. Du kannst in den Templates jede beliebige Variable abfragen die du im PHP Teil per $template->assign_vars() oder $template->assign_block_vars() gesetzt hast. Die IF Abfrage im Template funktioniert dann wie bei PHP, ist die Bedingung true, dann wird der folgende Teil ausgegeben, ansonsten nicht.

Hilfreich ist da auch das "alte" Template System, bis auf wenige Ausnahmen funktioniert das so nämlich immer noch: KB:template_system, KB:template_syntax
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Slup
Mitglied
Beiträge: 248
Registriert: 28.08.2007 12:06
Wohnort: Dormagen

Beitrag von Slup »

HiHo,

Ein wenig PHP und HTML kann ich aber so ganz blicke ich da nicht durch.
Hier mal Testweise mein Code, was habe ich dort vergessen oder falsch gemacht den es klappt nicht.

Code: Alles auswählen

$sql = "SELECT * 
			FROM " .  SPORN_TABLE ."
		WHERE sporn_id = " . $user->data['user_id'] . "
	";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result)

if ($row['sporn'id'] == 1] {
    $sporn_out = 'text';
}

$template->assign_block_vars(array(
         'S_SPORN'               => $sporn_out,
      )); 

Code: Alles auswählen

<!-- IF S_SPORN -->
    text
<!-- ENDIF -->
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

erstmal so

Code: Alles auswählen

$row['sporn_id']
und nicht so

Code: Alles auswählen

$row['sporn'id']
:wink:

Slup hat geschrieben:

Code: Alles auswählen

$template->assign_block_vars(array(
         'S_SPORN'               => $sporn_out,
      )); 

du solltest dem switch irgendwas anbieten, was true oder false werden kann (1 oder halt 0)

also

Code: Alles auswählen

$template->assign_block_vars(array(
         'S_SPORN'               => ($row['sporn_id']) == 1,
      )); 
oder

Code: Alles auswählen

$template->assign_block_vars(array(
         'S_SPORN'               => (($row['sporn_id']) == 1),
      )); 

falls es ein bool feld ist (radio:yes/no)
gehts auch so

Code: Alles auswählen

$template->assign_block_vars(array(
         'S_SPORN'               => ($row['sporn_id']) ? true : false,
      )); 
und das

Code: Alles auswählen

if ($row['sporn'id'] == 1] {
    $sporn_out = 'text';
} 
funktioniert so nicht. wenn dann so:

Code: Alles auswählen

if (($row['sporn'id']) == 1) {
    $sporn_out = 'text';
} 
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

assign_block_vars funktioniert nur, wenn du auch einen Block angibst zu dem die Variablen gehoeren sollen. (Ist dazu gedacht einen Teil sehr oft mit unterschiedlichen Daten auszugeben, z.B. die Posts werden damit ausgegeben) Wenn du das nicht hast, dann nimm assign_vars.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“