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 = '&nbsp;';
	$email = '&nbsp;';
}
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>' : '&nbsp;';
$www = ( $profiledata['user_website'] ) ? '<a href="' . $profiledata['user_website'] . '" target="_userwww">' . $profiledata['user_website'] . '</a>' : '&nbsp;';

 ...
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) :D

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>
:cry: was ist falsch???????????? :cry:

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'] : '&nbsp;',
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.