" <!-- BEGIN switch_ " aber wie???

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
bloe
Mitglied
Beiträge: 30
Registriert: 03.04.2004 13:28

" <!-- BEGIN switch_ " aber wie???

Beitrag 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
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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(
bloe
Mitglied
Beiträge: 30
Registriert: 03.04.2004 13:28

Beitrag 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
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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?"?
bloe
Mitglied
Beiträge: 30
Registriert: 03.04.2004 13:28

Beitrag 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
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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?
bloe
Mitglied
Beiträge: 30
Registriert: 03.04.2004 13:28

Beitrag von bloe »

nicht jeder der einen style runterlädt, hat lust irgendwelche dateien zu ändern
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag von Mungo »

Ach du willst den Style als Download anbieten. Die einzigste Möglichkeit, die ich sehe: Du erstellst zwei Versionen.
bloe
Mitglied
Beiträge: 30
Registriert: 03.04.2004 13:28

Beitrag 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:
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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.
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“