Seite 1 von 1

Anzeige nur, wenn Forum für Gäste offen

Verfasst: 29.04.2015 22:07
von Kermit_ch
Hi Leute

Ich möchte gerne für meine Seite die Social-Media Buttons wie in diesem Thema beschrieben einbauen.

Das Problem dabei ist, dass ich verschiedene Forenbereiche habe, auf die Gäste keinen Zugriff haben. In solchen Foren machen die Buttons natürlich wenig Sinn, denn Facebook z.B. sieht dann nur die Login-Seite.

Ich kenne PHP, finde mich auch in den Templates zurecht, habe aber noch zu wenig Know-How in phpBB, um herauszufinden, wie ich z.B. in viewtopic.php bestimmen kann, ob sich das Thema in einem Forum befinden, das für Gäste gesperrt ist. Die Idee wäre, dann eine Template Variable zu erstellen, die ich im entsprechenden HTML auswerten kann.

Eventuell gibt es das ja sogar schon.

Danke für eure Hilfe!

Gruss - Kermit

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 30.04.2015 04:40
von AYYILDIZLAR
Hallo,

Bin mir nicht ganz sicher, ob ich dich zu 100% richtig verstanden habe. Aber schau mal hier, ob dir das Snippet weiterhilft viewtopic.php?f=85&t=230116

Grüße

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 30.04.2015 08:26
von Kermit_ch
Hi

Danke schon mal für deine Antwort. Nein, ich möchte nicht vom Benutzer wissen, ob er Gast ist oder nicht, sondern aufgrund des Themas (z.B. der Themen-ID), ob es in einem Forum ist, für das Gäste keinen Zugang haben. Dann würde ich die Social-Media Buttons nicht anzeigen.

Gruss - Kermit

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 08.05.2015 23:11
von Kermit_ch
Jemand eine Idee?

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 09.05.2015 00:14
von gn#36
Die Berechtigungen werden mit einem Objekt vom Typ \phpbb\auth\auth geprüft (oder einfach nur auth im includes/ Verzeichnis in phpBB 3.0.x): https://www.phpbb.de/infos/3.1/xref/php ... h.php.html

Es sollte möglich sein, dir einfach ein neues Auth Objekt zu erzeugen, das du mit den Daten eines Gastbenutzers fütterst, egal welcher Benutzer gerade angemeldet ist. Dann kannst du mit dem neuen Objekt prüfen, ob der Gastbenutzer Lese- oder sonstwelche Rechte hat, indem du $auth_gast->acl_get('f_read', $forum_id); oder was ähnliches benutzt. Mit obtain_user_data hat das Objekt sogar eine Methode, in der du nur die User ID des Gastbenutzers übergeben musst (ANONYMOUS).

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 15.05.2015 11:34
von Kermit_ch
Danke vielmals, gn#36!

Musste zwar noch ein wenig rumturnen, weil in der von meinem Provider installierten phpBB Version die Methode auth::obtain_user_data noch nicht vorhanden war. Aber ich konnte sie von der Doku einfach rüber kopieren.

Nun siehts in viewtopic.php so aus:

Code: Alles auswählen

include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
// 15.05.2015/MM: Added guest right check
include_once($phpbb_root_path . 'includes/auth.' . $phpEx); 
...

Code: Alles auswählen

// 15.05.2015/MM: Added guest right check
$eacl_auth = new auth(); // create the auth instance.
$eacl_auth->acl($eacl_auth->obtain_user_data(1)); // retrieve the guest users (ID=1) data.
// 15.05.2015/MM: Added guest right check END

// Send vars to template
$template->assign_vars(array(
    // 15.05.2015/MM: Added guest right check
    'EACL_GUESTS_CAN_READ' => $eacl_auth->acl_get('f_read', $forum_id) > 0,
    // 15.05.2015/MM: Added guest right check END
    'FORUM_ID'         => $forum_id,
 
und in der viewtopic_body.html des style templates:

Code: Alles auswählen

	<!-- IF S_DISPLAY_SEARCHBOX -->
		<div class="search-box">
			<form method="get" id="topic-search" action="{S_SEARCHBOX_ACTION}">
			<fieldset>
				<input class="inputbox search tiny"  type="text" name="keywords" id="search_keywords" size="20" value="{L_SEARCH_TOPIC}" onclick="if(this.value=='{LA_SEARCH_TOPIC}')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_TOPIC}';" />
				<input class="button2" type="submit" value="{L_SEARCH}" />
				{S_SEARCH_LOCAL_HIDDEN_FIELDS}
			</fieldset>
			</form>
		</div>
	<!-- ENDIF -->
	
	<!-- NOTE: 15.05.2015/MM Added social media buttons -->
	<!-- IF not S_IS_BOT and EACL_GUESTS_CAN_READ -->
		<div class="addthis_toolbox addthis_default_style ">
			<a class="addthis_button_facebook_like" fb:like:layout="button_count"></a>
			<a class="addthis_button_google_plusone" g:plusone:size="medium"></a>
			<a class="addthis_button_tweet"></a>
			<a class="addthis_counter addthis_pill_style"></a>
		</div>
		<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=xa-4eac6d5c6431ec66"></script>
	<!-- ENDIF -->
	<!-- NOTE: 15.05.2015/MM Added social media buttons END -->
Also nochmals: Besten Dank für den Support!

Gruss - Kermit_ch

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 16.05.2015 04:13
von gn#36
Falls du phpBB 3.1 einsetzt würde ich dir empfehlen, das noch in eine Extension zu stecken. Die besteht aus gerade mal drei bis vier Dateien und macht dich unabhängiger von Update Problemen, weil du keine Änderungen an bestehenden PHP Dateien brauchst.

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 16.05.2015 09:39
von Kermit_ch
Danke für den Hinweis. Leider stellt mein Hostingprovider nur die Version 3.0.10 zur Verfügung und ich möchte nicht eine neuere Version installieren, sonst krieg ich bei Bedarf womöglich keinen Support von ihm.

Re: Anzeige nur, wenn Forum für Gäste offen

Verfasst: 16.05.2015 12:09
von Crizzo
Hi,

oh weia. 3.0.10 ist wirklich uralt. Wir sind schon bei 3.0.14 angekommen. Zuletzt wurde auch eine Sicherheitslücke behoben. Deine Version ist über 3 Jahre alt.

Das Ding ist eben, dass du so hier nicht den besten Support bekommen kannst und bei den Entwicklern von phpBB.com gar keinen kriegst, außer bei Problemen beim Update zu 3.0.14.

Grüße