Funktionen verschachteln?

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Funktionen verschachteln?

Beitrag von shadowrider »

ist es irgendwie möglich, zwei Funktionen folgender Art zu verschachteln, also erst soll die switch_user_logged_in, dann die last_seen_row greifen?

Code: Alles auswählen

<!-- BEGIN switch_user_logged_in -->
<!-- BEGIN last_seen_row -->
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dann musst Du in der entsprechenden PHP-Datei in der Übergabe an das Template ebenso handeln. Also so:

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in', array(...

$template->assign_block_vars('switch_user_logged_in.last_seen_row', array(...
Ein Platzhalter in der tpl-Datei würde dann so lauten:

Code: Alles auswählen

{switch_user_logged_in.last_seen_row.PLATZHALTER}
Und vergiss nicht, beide Switche wieder mit END zu beenden. Und das in umgekehrter Reihenfolge!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

aaah ja - das ist ne Nummer zu groß für mich, da würd ich dich vermutlich solange löchern bis du am Ende jede Zeile gecoded hast, lassen wir das mal lieber, danke
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Noch einfacher kann man das nicht erklären.
Ich jedenfalls nicht. Sorry...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ich versuchs mal. :)

Ein switch wird ja mittels

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in', array() );
definiert.
Wenn du nun einen weiteren switch nutzen möchtest der innerhalb dieses switches zum einsatz kommt, dann musst du ihn nach dem erstem definieren und ausserdem den ersten mit angeben. Wobei die beiden switchnamen mit einem punkt voneinander getrennt werden.
Also so:

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in.last_seen_row', array() );
Der einsatz im template ist dann so:

Code: Alles auswählen

<!-- BEGIN switch_user_logged_in -->
HTML-Code
<!-- BEGIN last_seen_row -->
HTML-Code
<!-- END switch_user_logged_in -->
<!-- END last_seen_row -->
Solltest du innerhalb des block-arrays noch Platzhalter definieren.
Zum Beispiel so:

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in.last_seen_row', array(
	'LAST_SEEN' => $last_seen,
	'L_LAST_SEEN' => $lang('last_seen')
));
Dann muss beim einsatz des Platzhalters, der name des switches mit angegeben werden. Wobei auch hier wieder ein punkt zur trennung eingesetzt wird.
Also so:

Code: Alles auswählen

<!-- BEGIN switch_user_logged_in -->
<table border="0" cellpadding="3" cellspacing="1" width="100%" class="forumline">
	<tr> 
		<th class="thHead" colspan="2" height="25" valign="middle">Onlinedaten</th>
	</tr>
<!-- BEGIN last_seen_row -->
	<tr> 
		<td class="row1"><span class="gen">{switch_user_logged_in.last_seen_row.L_LAST_SEEN}: </span></td>
	</tr>
	<tr> 
		<td class="row2"><span class="gen">{switch_user_logged_in.last_seen_row.LAST_SEEN}</span></td>
	</tr>
<!-- END last_seen_row -->
</table>
<!-- END switch_user_logged_in -->
Zuletzt geändert von AmigaLink am Mi 30.Mär, 2005 12:28, insgesamt 1-mal geändert.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

vielen dank mal für die Mühe.

aber als ich das hier in der portal.php gemacht habe:

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in.last_seen_row', array(
            'L_LSEEN_USERNAME' => $user_online_link,
            'L_LSEEN_TIME' => create_date($board_config['default_dateformat'], $row['user_lastvisit'], $board_config['board_timezone'])));
        }
hat es mir das ganze Portal zerschossen (übergroße Tabellen, mehrfach die gleichen Tabellen usw., totales Chaos
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

hat es mir das ganze Portal zerschossen (übergroße Tabellen, mehrfach die gleichen Tabellen usw., totales Chaos
Ein zeichen dafür das mit der definition des switchs was nicht stimmt (reihenfolge). Wo und wann wird 'switch_user_logged_in' definiert???
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

in der page_header.php:

Code: Alles auswählen

// Login box?
//
if ( !$userdata['session_logged_in'] )
{
	$template->assign_block_vars('switch_user_logged_out', array());
}
else
{
	$template->assign_block_vars('switch_user_logged_in', array());

	if ( !empty($userdata['user_popup_pm']) )
	{
		$template->assign_block_vars('switch_enable_pm_popup', array());
	}
	if ( $userdata['user_absence'] == TRUE )
	{
		$template->assign_block_vars('switch_absence', array());
	}
}
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Aha. Dann brauchst Du in Deinem Switch diese nicht mit einbinden, sondern nur in der TPL als "Klammer" um Deinen Block verwenden.
Du musst nur sicherstellen, daß Dein Switch nach dem includieren der page_header.php erstellt wird.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

wenn ich den um den Block klammere, dann wird dieser teil überhaupt nicht angezeigt, weder bei login noch bei logout (die Klammermethode hattest du mir mal verklickert, funktioniert bei allen anderen Stellen auch problemlos, nur hier eben nicht
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du darfst dann hier ja auch nicht

Code: Alles auswählen

$template->assign_block_vars('switch_user_logged_in.last_seen_row', array(
verwenden, sondern

Code: Alles auswählen

$template->assign_block_vars('last_seen_row', array(
Ist dieser Block leer, kommt keine Anzeige.
Und nur die Titelzeile der Tabelle, bzw. auch evtl. vorhandenen Tabellenfuß, würde ich mit dem Switch "switch_user_logged_in" versehen.
Dann aber auch jede Sprachvariable mit $lang['...'] in den Block "last_seen_row" packen.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Ich schließe mich jetzt bei dem Thema einfach mal mit an.

Ich habe von einer Portalbox zusätzliche BEGIN und END Bereiche gesetzt. Mit diesen besteht die Möglichkeit die Box über das ACP ein- bzw auszuschalten. Das funktioniert auch ohne Probleme, nur wird der Inhalt der Box nicht mehr angezeigt.
Aus den Beitägen vorher werde ich nicht schlau bzw schafft das keine Abhilfe.

Hier mal der Code aus der portal_body.tpl

Code: Alles auswählen

<!-- BEGIN switch_topposter -->
		<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
		  <tr>
		    <th>{L_TOP_MEMBERS}</th>
		  </tr>
          <tr>
         	<td class="row1" align="left">
         		<table border="0" width="100%" cellspacing="0" cellpadding="2">
         		<!-- BEGIN most_posts -->
         		<tr>
         		<td valign="top" align="center"><img src="templates/{T_NAME}/images/orion/icons/pfeil.png"></td>
         		<td valign="top" align="left"><span class="gensmall"><a href="{most_posts.U_VIEWPROFILE}" class="genmed">{most_posts.USERNAME}</a> <b>::</b> {most_posts.POSTS}&nbsp;{L_POSTS}<br></span></td>
         		</tr>
         		<!-- END most_posts -->
         		</table>
         	</td>
         </tr>
		</table>

		<br>
<!-- END switch_topposter -->
Und der entsprechende aus der portal.php

Code: Alles auswählen

///
// Show Portalbox (yes/no)
//
if ( $board_config['statistik_enable'] == '1' )
{
	$template->assign_block_vars('switch_statistik',array());
}
if ( $board_config['topposter_enable'] == '1' )
{
	$template->assign_block_vars('switch_topposter',array());
}
if ( $board_config['themen_enable'] == '1' )
{
	$template->assign_block_vars('switch_themen',array());
}
if ( $board_config['search_enable'] == '1' )
{
	$template->assign_block_vars('switch_search',array());
}
if ( $board_config['syndication_enable'] == '1' )
{
	$template->assign_block_vars('switch_syndication',array());
}
if ( $board_config['birthday_enable'] == '1' )
{
	$template->assign_block_vars('switch_birthday',array());
}
if ( $board_config['termine_enable'] == '1' )
{
	$template->assign_block_vars('switch_termine',array());
}
if ( $board_config['counter_enable'] == '1' )
{
	$template->assign_block_vars('switch_counter',array());
}
if ( $board_config['chat_enable'] == '1' )
{
	$template->assign_block_vars('switch_chat',array());
}
if ( $board_config['poll_enable'] == '1' )
{
	$template->assign_block_vars('switch_poll',array());
}
if ( $board_config['qlink_enable'] == '1' )
{
	$template->assign_block_vars('switch_qlink',array());
}
Udo
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du erstellst so einen verschachtelten Switch, den Du dann auch im Script so angeben musst. Sonst wird eben nichts umgesetzt.
Sie auch: http://www.oxpus.de/viewtopic.php?t=2642
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Naja, aber da versteh ich nur Bahnhof :(

Edit: So ich hab jetzt nach deiner 2. Anleitung mal das geändert ( soweit in damit zurecht kam ) und ändern tut sich da nichts.

portal.php

Code: Alles auswählen

//
// Show Topposterbox (yes/no)
//
$template->assign_block_vars('switch_topposter', array());
if ($board_config['topposter_enable'] == '1' )
 {
          $template->assign_block_vars('switch_topposter.most_posts', array(
               'U_VIEWPROFILE' => $u_viewprofile,
               'USERNAME' => $username,
               'POSTS' => $posts,
               'L_POSTS' => $lang['posts'])
          );
     }
portal_body.tpl

Code: Alles auswählen

<!-- BEGIN switch_topposter -->
		<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
		  <tr>
		    <th>{L_TOP_MEMBERS}</th>
		  </tr>
          <tr>
         	<td class="row1" align="left">
         		<table border="0" width="100%" cellspacing="0" cellpadding="2">
         		<!-- BEGIN most_posts -->
         		<tr>
         		<td valign="top" align="center"><img src="templates/{T_NAME}/images/orion/icons/pfeil.png"></td>
         		<td valign="top" align="left"><span class="gensmall"><a href="{switch_topposter.most_posts.U_VIEWPROFILE}" class="genmed">{switch_topposter.most_posts.USERNAME}</a> <b>::</b> {switch_topposter.most_posts.POSTS}&nbsp;{L_POSTS}<br></span></td>
         		</tr>
         		<!-- END most_posts -->
         		</table>
         	</td>
         </tr>
		</table>

		<br>
<!-- END switch_topposter -->
Udo
Zuletzt geändert von Udo am Fr 20.Okt, 2006 18:11, insgesamt 2-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, hier brauchst Du den "äusseren" Switch nun wirklich nicht. Der ist hier absolut fehl am Platz.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

[quote="oxpus";p="65436"]Naja, hier brauchst Du den "äusseren" Switch nun wirklich nicht. Der ist hier absolut fehl am Platz.[/quote]

Doch da wird der schon genötigt, sonst kann diese Box halt nicht über das ACP aus- bzw eingeshaltet werden.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du hast mich scheinbar falsch verstanden:

Code: Alles auswählen

$template->assign_block_vars('switch_topposter', array());
Das ist der äussere Switch, der pur ohne eine Bedingung erstellt wird.

Code: Alles auswählen

if ($board_config['topposter_enable'] == '1' )
Und das hier ist die Bedingung, die auf die Angaben vom ACP reagiert.
Also ist der äussere Switch nicht nötig!
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Und wie müssten denn die beiden Codestellen aussehen damit das funktioniert ?

Udo
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öh, jetzt hab ich gesehen, was Du willst...
Wo ist denn dieser Block enthalten?
So wie der aufgebaut ist, muss dieser ja in einer Schleife laufen, oder ist es nur ein User, der angezeigt werden soll?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Die Box ist die ganz normale Topposter Box von CBack Orion v2.3.5

Mit dem Mod sollen insgesamt 12 Portalboxen über das ACP ein- und ausschaltet werden können.
Das funktioniert alles auch einwandfrei.

Das Problem sind halt die Portalboxen welche eine switch Funktion beinhalten. Dort wird dann der Inhalt nicht angezeigt.

Top Poster,
Letzte Themen,
Statistik/Termine,
Chat,
Umfrage,
Q-Links,

Ich kann dir auch gerne die install.txt mal zukommen lassen

Udo
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ja, häng die mal an, dann schau ich mal, ob ich auf die Schnelle da was zaubern kann...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Hier ist sie. Laß dir aber Zeit.

Bin sowieso noch mit der linken Boardnavigation beschäfftigt.

Und danke schonmal im Voraus.

Udo
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Also für die eine Box sollte der Code für die portal.php

Code: Alles auswählen

//
// Top Posters MOD
//
if ($board_config['topposter_enable'] == '1' )
{
	$template->assign_block_vars('switch_topposter', array(
		'L_POSTS' => $lang['posts'])
	);

	$sql = "SELECT user_id, username, user_posts
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS . "
		ORDER BY user_posts DESC
		LIMIT 5";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not obtain top posters forums information', '', __LINE__, __FILE__, $sql);
	}

	while ($row = $db->sql_fetchrow($result))
	{
		$user_id=$row['user_id'];
		$template->assign_block_vars("switch_topposter.most_posts", array(
			'USERNAME' => $row['username'],
			'POSTS' => $row['user_posts'],
			'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id"))
		);
	}
//
// END: Top Posters MOD
//
und das Template

Code: Alles auswählen

<!-- BEGIN switch_topposter -->
<table width="100%" cellpadding="3" cellspacing="1" border="0" class="forumline">
<tr>
	<th>{L_TOP_MEMBERS}</th>
</tr>
<tr>
	<td class="row1" align="left">
	<table border="0" width="100%" cellspacing="0" cellpadding="2">
	<!-- BEGIN most_posts -->
	<tr>
		<td valign="top" align="center"><img src="templates/{T_NAME}/images/orion/icons/pfeil.png"></td>
		<td valign="top" align="left"><span class="gensmall"><a href="{switch_topposter.most_posts.U_VIEWPROFILE}" class="genmed">{switch_topposter.most_posts.USERNAME}</a> <b>::</b> {switch_topposter.most_posts.POSTS}&nbsp;{switch_topposter.L_POSTS}<br></span></td>
	</tr>
	<!-- END most_posts -->
	</table>
	</td>
</tr>
</table>

<br>
<!-- END switch_topposter -->
lauten...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Udo
Beiträge: 54
Registriert: Di 06.Sep, 2005 19:46
Kontaktdaten:

Beitrag von Udo »

Danke, jetzt erhalte ich nur leider folgende Fehlermeldung:

Parse error: parse error, unexpected $ in /home/www/htdocs/rurportal.de/orion/portal.php on line 1249

Die Zeile gibt es leider nur nicht :(

Edit: Hab den Fehler gefunden und jetzt funktioniert es ;)
Habe soweit das mit den anderen Boxen auch geschafft.
Nur die Chatbox, Umfragebox und Q-Linksbox wollen nicht.

Udo
Zuletzt geändert von Udo am So 22.Okt, 2006 00:04, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Die gehen auch, musst Dir nur Zeit dafür nehmen.
Das Prinzip ist jedenfalls immer das gleiche.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten