Seite 1 von 2

<!-- Begin switch_user_logged_in --> etc funktioniert

Verfasst: 06.01.2008 10:23
von skyworxx
hallo forum ;)


ich würde gerne einige bereiche meiner website gegen gäste schützen. so sollen zwar gäste die posts im forum lesen können, aber nicht die userdetails sehen können.

also was ich alles verstecken wollte ist:

- die komplette memberlist
- das komplette benutzerprofil
- die anzeige in themen von wem was geschrieben wurde (also komplette linke zelle, damit nur noch der post an sich da ist)


also habe ich z.b. am anfang der memberlist.tpl ein <!-- BEGIN switch_user_logged_in --> gesetzt, und am ende eben ein <!-- END switch_user_logged_in -->

Code: Alles auswählen

<!-- BEGIN switch_user_logged_in -->
[alles was in der memberlist.tpl drinnen ist]
<!-- END switch_user_logged_in -->
doch leider führt das nicht zum gewünschten ergebnis. zwar können gäste es nicht mehr sehn, aber eingeloggte user sehn es ebenso wenig.

das gleiche passierte auch als ich es versucht hab in die "viewtopic.tpl" einzubauen, damit gäste eben nicht sehn können von wem was geschrieben wurde.


meine vermutung ist, das "<!-- BEGIN switch_user_logged_in -->" usw nicht zusammen mit anderen "<!-- -->" befehlen funktionieren. also wenn zwei eineinander verschachtelt sind, dann gehts nicht mehr.



wie löse ich das problem? ich will eben nur das gäste nicht die profile und details der mitglieder sehen können


//edit
ah, ok, das mit der memberlist und dne profilen hab ich gefunden:
http://www.phpbb.de/viewtopic.php?t=47560


aber es bleibt immernoch die anzeige in den threads

Verfasst: 06.01.2008 10:35
von ScriptingBase
Ersetze
<!-- Begin switch_user_logged_in -->

mal durch
<!-- BEGIN switch_user_logged_in -->

Verfasst: 06.01.2008 10:40
von skyworxx
des war schon "BEGIN", hab mich bloß hier verschrieben gehabt

Verfasst: 06.01.2008 12:26
von Boecki91
Liegt daran das durch das <!-- Begin switch_user_logged_in --> und End, alles was da drin leigt "verschachtelt" ist.

Eine einfachere Möglichkeit wäre:

Code: Alles auswählen

if ( !$userdata['session_logged_in'] )
{
    redirect(append_sid("login.$phpEx?redirect=DIE_AKTUELLE_DATEI.$phpEx", true));
}
Der Code würde zur login.php weiterleiten und anschließend wieder zurück zu der vorherigen Stelle.

Für die Themenansicht wer was geschrieben hat, ist der Code jedoch nicht geeignet.

Was genau soll den entfernt werden? in der viewtopic die Benuterinfos(das was du hier jetzt auch siehst) oder das in der viewforum (Lezter Beitrag von XY)?

Verfasst: 06.01.2008 12:28
von skyworxx
das was man jetzt hier auch sehn kann, also

"
Mitglied


Anmeldedatum: 18.06.2006
Beiträge: 1746
"

und die leiste unter jedem post, also mit "pn", "icq", "email" buttons


der username sollte noch stehen bleiben, evtl vielleicht sogar mit nem text "(registrierter Benutzer)" unten drunter, damit man die gäste von den angemeldeten leten unterscheiden kann

Verfasst: 06.01.2008 13:19
von gsxfan
Das findest Du alles in der viewtopic_body.tpl.

Die Angaben links (Poster Name, Rang, Avatar....) nach diesem Eintrag:

Code: Alles auswählen

	<!-- BEGIN postrow -->
	<tr> 
Die Zeile lautet im Subsilver Template

Code: Alles auswählen

		<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>{postrow.POSTER_NAME}</b></span><br /><span class="postdetails">{postrow.POSTER_RANK}<br />{postrow.RANK_IMAGE}{postrow.POSTER_AVATAR}<br /><br />{postrow.POSTER_JOINED}<br />{postrow.POSTER_POSTS}<br />{postrow.POSTER_FROM}</span><br /></td>
Du musst bei Änderungen schauen, dass es Dir die Tabellendarstellung nicht zerhaut, also Ausprobieren.
Die Änderungen dürfen nur innerhalb der Tabellendefinition erfolgen, also nach <td with und vor </td>.
Das könnte dann so aussehen:

Code: Alles auswählen

<td width="150" align="left" valign="top" class="{postrow.ROW_CLASS}"><span class="name"><a name="{postrow.U_POST_ID}"></a><b>
<!-- BEGIN switch_user_logged_in -->
{postrow.POSTER_NAME}
<!-- END switch_user_logged_in -->
</b></span><br /><span class="postdetails">
<!-- BEGIN switch_user_logged_in -->
{postrow.POSTER_RANK}
<!-- END switch_user_logged_in -->
......
Das würde die Darstellung des Posternamens und des Rangs für nicht eingeloggte User unsichtbar machen.
Sinngemäß bei der Darstellung der Buttons für Mail, WWW etc. weiter unten und ebenfalls in der viewtopic_body.tpl verfahren.
Die Zeile, in der diese Buttons aufgerufen werden, lautet:

Code: Alles auswählen

			<td valign="middle" nowrap="nowrap">{postrow.PROFILE_IMG} {postrow.PM_IMG} {postrow.EMAIL_IMG} {postrow.WWW_IMG} {postrow.AIM_IMG} {postrow.YIM_IMG} {postrow.MSN_IMG}<script language="JavaScript" type="text/javascript"><!-- 
{postrow.PROFILE_IMG} ist der Aufruf für den Profilbutton und so weiter. Die musst Du dann auch in Switches setzen.

So würde ich das machen. Aber vielleicht hat ja jemand noch einen schlaueren Tipp.

Verfasst: 06.01.2008 13:28
von Boecki91
Probieren wir es mal:
viewtopic.php:
Suche (Um Zeil 919):

Code: Alles auswählen

	if ( $poster_id != ANONYMOUS )
	{
		$temp_url = append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$poster_id");
Genauer:

Code: Alles auswählen

	if ( $poster_id != ANONYMOUS )
Ersetze mit:

Code: Alles auswählen

	if ( $poster_id != ANONYMOUS && $userdata['session_logged_in'])
Mit diesem Code sollte die untere Leiste schon mal leer sein.
Um die Spalte Links zu entfernen suche ich noch.
Achtung: Back-Up machen ich habe diesen Code nicht getestet.

EDIT:

Mit den Änderungen von gsxfan wird es vermutlich nicht gehen da wieder eine Verschachtelung stattfindet.

Verfasst: 06.01.2008 13:33
von skyworxx
hab ich jetzt gemacht, aber nun könen es auch eingeloggte nutzer nicht mehr sehen

also der selbe effekt wie ich im erten post schon beschrieben hab. es wird einfach nicht angezeigt

//edit

mit den veränderungen in der .php ist jetzt die untere leiste weg, danke
fehlt noch das miniprofil

Verfasst: 06.01.2008 13:39
von Boecki91
Ich Bastle noch :D
Hier der Code:

FINDE:

Code: Alles auswählen

	//
	// Note! The order used for parsing the message _is_ important, moving things around could break any
	// output
	//
Füge DAVOR ein:

Code: Alles auswählen

    if (!$userdata['session_logged_in'])
    {
        /*
        *
        * Gäste dürfen Beitragsdetails nicht sehen $userdata['session_logged_in']
        * Schaue unter http://www.phpbb.de/viewtopic.php?t=162195 nach um weitere Informationen zu erhalten
        *
        * Einfach die Variablen leeren
        *
        */
        $poster = $post_date = $poster_posts = $poster_from = $poster_joined = $poster_avatar = $poster_rank = $rank_imag = $user_sig = '';
        
        //
        // Gäste sollen aber wissen warum sie nichts sehen können, wir missbrauchen einfach den Usernamen....
        //
        
        $poster = "Nur ein registrierter Benutzer kann genauere Infos zu den Benutzern erhalten";
    }
Bitte passe das bei Bedarf an:

Code: Alles auswählen

Nur ein registrierter Benutzer kann genauere Infos zu den Benutzern erhalten
Wenn du es so machst wird der Username durch den selbst gewählten Text ersetzt, Signatur, Avatar und Beitrag-Details werden verborgen.

Ungetestet.

Verfasst: 06.01.2008 13:49
von skyworxx
danke schonmal im vorraus :)

auch danke an gsxfan für dne versuch ;)