Seite 1 von 2
" <!-- BEGIN switch_ " aber wie???
Verfasst: 01.06.2004 03:32
von bloe
hi,
ich möchte, dass in der profile_view_body.tpl die kontakt-möglichkeiten (e-mail /pn / icq...) nur angezeigt werden, wenn es verfügbar ist. die tpl selbst habe ich schon mit "<!-- BEGIN switch_" - anweisungen bestückt, aber wie steuere ich diese dann??
->
hier die tpl-datei
bernd
Verfasst: 01.06.2004 12:18
von Mungo
Natürlich musst du den Block in der usercp_viewprofile.php ausgeben.
Kleines Beispiel für die E-mail:
includes/user_viewprofile.php
Code: Alles auswählen
#
#------[ FINDE UND LÖSCHE] ----------------------------
#
'EMAIL_IMG' => $email_img,
'EMAIL' => $email,
.
.
.
'L_EMAIL_ADDRESS' => $lang['Email_address'],
'L_EMAIL' => $lang['Email'],
#
#------[ FINDE] ----------------------------
#
if ( !empty($profiledata['user_viewemail']) || $userdata['user_level'] == ADMIN )
{
$email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $profiledata['user_id']) : 'mailto:' . $profiledata['user_email'];
$email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
$email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';
#
#------[ DARUNTER EINFÜGEN ] ----------------------------
#
$template->assign_block_vars('switch_show_email',array(
'EMAIL_IMG' => $email_img,
'EMAIL' => $email,
'L_EMAIL_ADDRESS' => $lang['Email_address'],
'L_EMAIL' => $lang['Email'])
);
#
#------[ FINDE UND LÖSCHE] ----------------------------
#
else
{
$email_img = ' ';
$email = ' ';
}
templates/subSilver/profile_view_body.tpl
Code: Alles auswählen
#
#------[ FINDE] ----------------------------
#
<tr>
<td valign="middle" align="right" nowrap="nowrap"><span class="gen">{L_EMAIL_ADDRESS}:</span></td>
<td class="row1" valign="middle" width="100%"><b><span class="gen">{EMAIL_IMG}</span></b></td>
</tr>
#
#------[ ERSETZE MIT] ----------------------------
#
<!-- BEGIN switch_show_email -->
<tr>
<td valign="middle" align="right" nowrap="nowrap"><span class="gen">{switch_show_email.L_EMAIL_ADDRESS}:</span></td>
<td class="row1" valign="middle" width="100%"><b><span class="gen">{switch_show_email.EMAIL_IMG}</span></b></td>
</tr>
<!-- END switch_show_email -->
Für die anderen Felder geht es analog.
Beachte, dass der Name des Blockes in der tpl-Datei
<!-- BEGIN switch_show_email -->
in der php-Datei festgelegt wird. Also:
$template->assign_block_vars('switch_show_email',array(
Verfasst: 01.06.2004 18:31
von bloe
danke,
aber:
1. kann ich den code auch innerhalb vom tpl-file machen? die anderen installierten styles haben ja diese bezeichner nicht
2. es funktioniert nicht, jetzt wird nicht mal die adresse angezigt, wenn es sie gibt.
usercp_viewprofile.php
Code: Alles auswählen
...
$pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>';
$pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';
//GEAENDERT
if ( !empty($profiledata['user_viewemail']) || $userdata['user_level'] == ADMIN )
{
$email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&" . POST_USERS_URL .'=' . $profiledata['user_id']) : 'mailto:' . $profiledata['user_email'];
$email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
$email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';
$template->assign_block_vars('switch_show_email',array(
'EMAIL_IMG' => $email_img,
'EMAIL' => $email,
'L_EMAIL_ADDRESS' => $lang['Email_address'],
'L_EMAIL' => $lang['Email'])
);
}
//GEAENDERT
$www_img = ( $profiledata['user_website'] ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : ' ';
$www = ( $profiledata['user_website'] ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww">' . $profiledata['user_website'] . '</a>' : ' ';
...
profile_view_body.tpl
Code: Alles auswählen
...
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<!-- BEGIN switch_show_email -->
<tr>
<td valign="middle" align="right" nowrap="nowrap">
<span class="gen">
{L_EMAIL_ADDRESS}:
</span>
</td>
<td class="row1" valign="middle" width="100%">
<b>
<span class="gen">
{EMAIL_IMG}
</span>
</b>
</td>
</tr>
<!-- END switch_show_email -->
<tr>
<td valign="middle" nowrap="nowrap" align="right">
...
---------------
vielleicht bin ich einfach nur bloe(d)
![Mr. Green :D](./images/smilies/icon_mrgreen.gif)
Verfasst: 01.06.2004 18:45
von Mungo
Du hast einen kleinen Fehler beim Einbau gemacht.
In der profile_view_body.tpl muss es so aussehen:
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<!-- BEGIN switch_show_email -->
<tr>
<td valign="middle" align="right" nowrap="nowrap">
<span class="gen">
{switch_show_email.L_EMAIL_ADDRESS}:
</span>
</td>
<td class="row1" valign="middle" width="100%">
<b>
<span class="gen">
{switch_show_email.EMAIL_IMG}
</span>
</b>
</td>
</tr>
<!-- END switch_show_email -->
<tr>
<td valign="middle" nowrap="nowrap" align="right">
Du musst immer den Namen des Bolckes (mit einen Punkt dahinter) vor eine Templatevariable stellen, wenn sie nur in dem Block angezeigt werden soll.
Du musst jede profile_view_body.tpl abändern, damit die E-mail in den anderen Styles angezeigt wird. Oder was meinst du mit "kann ich den code auch innerhalb vom tpl-file machen?"?
Verfasst: 01.06.2004 19:18
von bloe
Du musst jede profile_view_body.tpl abändern, damit die E-mail in den anderen Styles angezeigt wird. Oder was meinst du mit "kann ich den code auch innerhalb vom tpl-file machen?"?
beim xs-mod kann man ja auch php in des templates reinschreiben, wäre es dann möglich diesen php code in die tpl zu schreiben, um die änderung in der usercp_viewprofile.php nicht vorrauszusetzten
Verfasst: 01.06.2004 19:58
von Mungo
Ich kenne den XS-Mod nicht. Aber in einem Standard-phpBB ist es nicht möglich. Aber was spricht gegen die Änderung in der usercp_viewprofile.php?
Verfasst: 01.06.2004 20:03
von bloe
nicht jeder der einen style runterlädt, hat lust irgendwelche dateien zu ändern
Verfasst: 01.06.2004 20:15
von Mungo
Ach du willst den Style als Download anbieten. Die einzigste Möglichkeit, die ich sehe: Du erstellst zwei Versionen.
Verfasst: 02.06.2004 21:05
von bloe
hi nochmal
ich hab jetzt das ganze bisher ohne probleme eingebaut, aber er macht noch probleme:
Hier ein Bild
wieso zeigt der browser, den beruf nicht an, aber wohnort doppelt und falsch????
php-datei
Code: Alles auswählen
...
// LOC
if ( !empty($profiledata['user_from']) )
{
$loc_all =
' <td valign="middle" nowrap="nowrap" align="right">
<span class="gen">
' . $lang['Location'] . ':
</span>
</td>
<td class="row1" valign="middle" width ="550">
<span class="gen">
' . $profiledata['user_from'] . '
</span>
</td>';
$template->assign_block_vars('switch_show_loc',array('ALL' => $loc_all ));
} else {
$loc_all =
' <td valign="middle" nowrap="nowrap" align="right">
<span class="gen">
' . $lang['Location'] . ':
</span>
</td>
<td class="row1" valign="middle">
<span class="gen">
Keinen Wohnort angegeben
</span>
</td>';
$template->assign_block_vars('switch_show_loc',array('NOTHING' => $loc_all ));
}
// OCC
if ( !empty($profiledata['user_occ']) )
{
$occ_all =
' <td valign="middle" nowrap="nowrap" align="right">
<span class="gen">
' . $lang['Occupation'] . ':
</span>
</td>
<td class="row1" valign="middle" width ="550">
<span class="gen">
' . $profiledata['user_occ'] . '
</span>
</td>';
$template->assign_block_vars('switch_show_occ',array('ALL' => $occ_all ));
} else {
$occ_all =
' <td valign="middle" nowrap="nowrap" align="right">
<span class="gen">
' . $lang['Occupation'] . ':
</span>
</td>
<td class="row1" valign="middle">
<span class="gen">
Keinen Beruf angegeben
</span>
</td>';
$template->assign_block_vars('switch_show_loc',array('NOTHING' => $loc_all ));
}
...
tpl-datei
Code: Alles auswählen
<tr>
<!-- BEGIN switch_show_loc -->
{switch_show_loc.ALL}{switch_show_loc.NOTHING}
<!-- END switch_show_loc -->
</tr>
<tr>
<!-- BEGIN switch_show_occ -->
{switch_show_occ.ALL}{switch_show_occ.NOTHING}
<!-- END switch_show_occ -->
</tr>
![Weinend oder sehr traurig :cry:](./images/smilies/icon_cry.gif)
was ist falsch????????????
![Weinend oder sehr traurig :cry:](./images/smilies/icon_cry.gif)
Verfasst: 03.06.2004 10:50
von Mungo
Bisher dachte ich, dass du z.B. die gesamte Zeile Beruf ausblenden möchtest, wenn der User nichts eingegeben hat. Wenn du dann jedoch nur hinter dem "Beruf:" einfach "Nicht angegeben" stehen haben möchtest, dann sind die ganzen switch-Anweisungen überflüssig.
Es würde dann reichen die Orginaldatei wie folgt anzupassen z.B. bei Wohnort:
Code: Alles auswählen
'LOCATION' => ( $profiledata['user_from'] ) ? $profiledata['user_from'] : ' ',
mit
Code: Alles auswählen
'LOCATION' => ( $profiledata['user_from'] ) ? $profiledata['user_from'] : 'nicht angegeben',
Zu deiner Frage:
Das Problem mit Wohnort und Beruf entsteht dadurch, dass du im folgenden Teil nochmal die Blockvariablen vom Wohnort anstatt vom Beruf zuweist:
} else {
$occ_all =
' <td valign="middle" nowrap="nowrap" align="right">
<span class="gen">
' . $lang['Occupation'] . ':
</span>
</td>
<td class="row1" valign="middle">
<span class="gen">
Keinen Beruf angegeben
</span>
</td>';
$template->assign_block_vars('switch_show_loc',array('NOTHING' => $loc_all ));
}
Es ist auch überflüsssig zwei Variablen zu benutzen also NOTHING und ALL.
Da ja beide Fälle nicht gleichzeitig auftreten können, reicht es z.B. der ALL-Variable immer den Wert zuzuweisen.
Das Rote müsste eigentlich wie folgt aussehen.
Code: Alles auswählen
$template->assign_block_vars('switch_show_occ',array('ALL' => $occ_all ));
Wenn du die Zeilen aber ausbelden möchtest, das solltest du in der profile_view_body.tpl die BEGIN und END Anweisung vor das <tr> bzw. hinter das </tr> setzen.