Brauche Hilfe bei Topic Anzeige

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Für generate_forum_rules musst du nur den entsprechenden Code im Template haben und dann generate_forum_rules verwenden:

Code: Alles auswählen

//Get Forum information for Navigation Links and Forum Rules:
$sql = "SELECT * FROM ". FORUMS_TABLE . " WHERE forum_id = {ID}";
$result = $db->sql_query($sql);
$forum_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

if (!$forum_data)
{
	add_log('critical', 'Dieses Forum gibt's nicht.');
	trigger_error('Dieses Forum gibt's nicht', E_USER_WARNING);
}

//Navigation:
generate_forum_rules($forum_data);
generate_forum_nav($forum_data);
Im Template dann so:

Code: Alles auswählen

<!-- IF S_FORUM_RULES -->
	<div class="rules">
		<div class="inner"><span class="corners-top"><span></span></span>
		
		<!-- IF U_FORUM_RULES -->
			<a href="{U_FORUM_RULES}">{L_FORUM_RULES}</a>
		<!-- ELSE -->
			<strong>{L_FORUM_RULES}</strong><br />
			{FORUM_RULES}
		<!-- ENDIF -->
		
		<span class="corners-bottom"><span></span></span></div>
	</div>
<!-- ENDIF -->
generate_forum_nav erzeugt auch den Pfad zum Forum in der Kopfzeile.

Den anderen Fehler würde ich mir gerne mal ansehen, hast du mal einen link? Er zählt also bis zur Hälfte rückwärts und dann vorwärts? Sind denn alle Beiträge schon drin gewesen die sein sollten, oder fehlt die hälfte und wird durch wieder die gleichen Posts ersetzt?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

danke dir für die Antwort. Das mit den generate_forum_rules werde ich dann testen.

Ja, er zählt die Beiträge ab der zweiten Hälfte der Seiten wieder noch oben, so dass auf der letzten Seite der neuste Beitrag wieder ganz oben steht. Ich habe das mit unterschiedlichen Posts getestet, es spielt keine Rolle wieviele Beiträge es insgesamt pro Topic sind. Die Gesamtzahl der Posts wird richtig angezeigt, er zeigt aber nur die erste Hälfte der Beiträge wieder an. Ich denke es liegt an der Zählfunktion selber. Ob das gleiche Verhalten auch in der viewtopic.php so ist, habe ich noch nicht getestet.

Wenn ich den Code bei der Textausgabe

Code: Alles auswählen

......
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);
$i = ($store_reverse) ? $sql_limit - 1 : 0;
while ($row = $db->sql_fetchrow($result))
{
	$post_list[$i] = $row['post_id'];
	($store_reverse) ? $i-- : $i++;
......
dadurch ersetze

Code: Alles auswählen

......
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
.....
dann zeigt er alle Beiträge, aber ohne Seitenauswertung an.


Den Link zum Testforum und die Zugangsdaten bekommst du per PN.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

ich hab den Fehler gefunden. Bei der Zeile

Code: Alles auswählen

if ($start > $total_posts / 2)
den Code mit diesem hier ersetzen

Code: Alles auswählen

if ($start > $total_posts)
dann zeigt er die Beiträge richtig an. Vermutlich lag der Grund darin, dass ich in der sql Anweisung eine feste Sortierrichtung angegeben habe.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

nachdem das mit der Seitendarstellung fehlerfrei geht und auch das mit der Darstellung der Forenregeln, habe ich nochmal drei Anliegen und bräuchte deine Hilfe.

1. Ich habe ein Problem mit der Funktion dass wenn man auf das kleine Blatt neben "Verfasst ...." im Posting links oben in der Zeile klickt, dass dann das Posting am Bildschirm nach oben zum Postinganfang geschoben wird. Im Forum klappt das einwandfrei, auch wenn ich von woanders auf das Posting im Forum verweise. Bei mir klappt das nicht, da springt er nur ganz nach oben zum Seitenanfang. Was muss ich machen, damit das auch bei mir klappt (Nachrichtenseite)?

Den Link erzeuge ich so:

Code: Alles auswählen

'U_NEWS_POST'	=> append_sid("{$phpbb_root_path}svisuite/nachrichten.$phpEx" , 'p=' . $row['post_id'] . '#p' . $row['post_id']),

2. Wenn ich auf der Startseite den Link zum Einlogen einbaue, so komme ich zwar zum Login, aber er springt dann direkt ins Forum und nicht wieder zurück zur ursprünglichen Seite. Jetzt habe ich den Link so auf der Startseite drinnen:

Code: Alles auswählen

			<li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="l">{L_LOGIN_LOGOUT}</a></li>
			<!-- IF not S_USER_LOGGED_IN --><li class="icon-register"><a href="{U_REGISTER}">{L_REGISTER}</a></li><!-- ENDIF -->
Was muss ich machen, damit er nach dem Login wieder zu der Seite geht, von wo er aus aufgerufen wurde?


3. Ich möchte noch zusätzliche subjects im Posting haben, damit ich z.B. weitere Eigenschaften oder Beschreibungen dem Posting zuordnen kann. Gibt es da schon einen Mod der das macht, oder muss ich das selber in Angriff nehmen? Wenn es noch nichts gibt, was muss ich dann alles ändern, damit dann die zusätzlichen subjects eingetragen und angezeigt werden können?

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Also jetzt müsste ich wohl doch mal kurz anmerken dass wir Bumping nicht so gerne sehen... zumindest beim ersten Antwortposting auf dein eigenes hätte es auch ein Edit getan.


Zu 1: Du musst deinen Links Namen geben die genau so lauten wie das im Link, was hinter dem # kommt.

Code: Alles auswählen

<a href="link" name="karlheinz">Link</a>
<!-- Zugriff mit: -->
<a href="link#karlheinz">Link der zu karlheinz springt</a>
In diesem Fall musst du also noch etwas wie "S_LINK_NAME" an das Template übergeben dass 'p' . $row['post_id'] enthält und das dann in den Link mit name="{xyz.S_LINK_NAME}" einfügen (ich gehe davon aus, dass das in einer Schleife liegt, daher xyz durch den passenden Namen ersetzen).

zu 2.: Wie bisher: Redirect an den Link hängen, das dürfte immer noch funktionieren.

Code: Alles auswählen

ucp.php?mode=login&redirect=startseite.php
zu 3.: Ist mir nicht bekannt, das heißt aber nicht dass es sowas nicht schon gibt. Ich würde mal auf phpbb.com schauen, vielleicht tuts ja auch ein Tagging-System(also Tags mit Eigenschaften die einem Posting zugeordnet werden können), sowas dürfte es bereits geben oder in Entwicklung sein. Alternativ könnte man - falls diese Tags nicht unbedingt angezeigt werden sollen sondern nur die Suche erleichtern sollen - auch einfach am Ende des Textes ein paar Schlagworte platzieren und die dann mit einem neuen bbcode Unsichtbar machen.

PS: Du solltest auf der Nachrichtenseite den ausgewählten Tab anpassen. Aktiv ist "Zum Thema", gewollt aber denke ich "Nachrichten".
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

ja ok, werde ich mir merken... :D

zu 1: Bei mir erzeugt der Code diese Ausgabe: http://localhost/phpBB3/svisuite/nachri ... 538#p11538, was dem gleichen entspricht, wie hier im Forum http://www.phpbb.de/viewtopic.php?p=912293#912293. So gesehen sollte es eigentlich gehen. In der viewtopic.php steht für den Link diese Zeile drinnen:

Code: Alles auswählen

'U_MINI_POST'		=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . (($topic_data['topic_type'] == POST_GLOBAL) ? '&f=' . $forum_id : '') . '#p' . $row['post_id'],
Es wird hier nur noch zusätzlich die Postingeigenschaft und die $forum_id mit übergeben, aber für den Anker wird ja nur das was hinter den # steht gebraucht, denke ich.


zu 2:
Das werde ich mal testen, ich habe den Code einfach von der "overall_header.html" übernommen.


zu 3:
Das mit dem bbcode würde bestimmt gehen, ist aber nicht die saubere Lösung denke ich. Ich habe zwar schon mal auf phpbb.com geschaut, werde mich aber nochmal dort auf die Suche machen. Eine Lösung wäre vielleicht, eine neue Tabelle mit $forum_id, $topic_id, $post_id und den zusätzlichen subjects anzulegen. Die Anzeige würde kein Problem darstellen, nur die Verknüpfung beim erstellen eines neuen Postings bzw. beim editieren würde etwas an Aufwand bedeuten, da ja die viewtopic.php, die posting.php und ggf. noch weitere Dateien angepasst werden müssten.


Ja das mit dem Menue muss ich noch machen, es ist jetzt als statisches Menue realisiert und sollte nur darstellen, wie es später aussehen soll, wird aber als dynamisches Menu angelegt. Die ganzen Menuepunkte, Kartenreiter, Links usw. sollen in einer Datenbank stehen und das Menu zentral erzeugt werden. Noch habe ich keine Idee, wie ich dem Programm dann mitteile auf welcher Seite ich mich gerade befinde, damit die richtigen Menuepunkte angezeigt werden. Ich habe schon vor einiger Zeit hier mal gefragt, ob jemand sowas schon mal gemacht hat bzw. weis wo ich so ein Skript als Vorlage finde. Leider gabs damals keine Antwort, somit habe ich diese Sache mal zurückgestellt, wird aber nun doch aktuell.


[EDIT]
zu 1:
ich hab die Ursache gefunden, den Code musste ich noch in der *.html ergänzen:

Code: Alles auswählen

		<div id="p{news1.POST_ID}">
		<a href="#p{news1.POST_ID}"></a>		
Nun geht es, damit auch von einer anderen Seite auf den Beitrag direkt verwiesen werden kann.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Naja, die Tab-Erzeugung passiert ja per PHP, oder ist das bei dir "hardcoded"?

Wenn du einfach den Template Code z.b. aus dem UCP verwendest, dann kannst du mit

Code: Alles auswählen

$template->assign_block_vars('t_block1', array(
			'U_TITLE' =>  append_sid($phpbb_root_path . 'calendar.' . $phpEx . $url_ext),
			'S_SELECTED' =>  0,
			'L_TITLE' => 'Titel'
			));
die Tabs einfügen. S_SELECTED bestimmt dabei ob der gerade generierte Tab ausgewählt sein soll oder nicht (1 oder 0).

Tagging System:
http://www.phpbb.com/community/viewtopi ... g#p3206202
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

bei mir werden die Tabs noch hardcoded erzeugt, bei den Tabs im Header wäre das auch kein Problem, aber bei den seitlichen Tabs schon.

Beispiel Tabs Links:

Code: Alles auswählen

	<div id="svi-menu">
		<div id="svinav">
			<ul>
			<dl>
			<li id="active-subsection"> <a href="nachrichten.php"><span>Aktuelle Meldungen</span></a></li>
			<ul>
			<div id="svinav-u">
				<li> <a href="404.php"><span>Allgemeines</span></a></li>
				<li> <a href="404.php"><span>Forschung und Medizin</span></a></li>
				<li> <a href="404.php"><span>Gesundheitswesen</span></a></li>
				<li> <a href="404.php"><span>Gesetze und Versicherungen</span></a></li>
			</div>
			</ul>
			<dl>
			<li> <a href="archiv.php"><span>Archiv</span></a></li>						
			<ul>
			<div id="svinav-u">
				<li> <a href="404.php"><span>2007</span></a></li>
				<li> <a href="404.php"><span>2006</span></a></li>
				<li> <a href="404.php"><span>2005</span></a></li>
				<li> <a href="404.php"><span>2004</span></a></li>
				<li> <a href="404.php"><span>2003</span></a></li>
				<li> <a href="404.php"><span>2002</span></a></li>
			</div>
			</ul>
			<br><br><br>
			</dl>
			</dl>
			</ul>
		</div>
		<br>	
		<br>
		<div id="cp-main" class="mcp-main">
		<div class="panel">
			<div class="inner"><span class="corners-top"><span></span></span>		
			<dl>
				<p>Testfeld für einen weiteren Text oder ein Sponsorenlogo</p>            		
			</dl>	
			<span class="corners-bottom"><span></span></span></div>
		</div>	
		</div>

	</div>
	<br>
Insgesamt dürften es weit über hundert Tabs und Untertabs werden. So wie es hier realisiert ist, würde das ein riesiger Code werden, daher müssen die Tabs an einer zentralen Stelle erzeugt werden. Das lässt sich am besten mit einer Tabelle machen, hier muss ich dann nur den Tab einer bestimmten Seite zuordnen.

Für die Anzeige der Tabs lässt sich dein Beispiel bestimmt verwenden. Was mir noch etwas Kopfzerberchen bereitet ist die Sache wie ich der Navigationsfunktion dann mitteile, auf welcher Seite ich mich gerade befinde, damit die richtigen Tabs aus der Tabelle angezeigt werden und auch die richtigen Tabs selektiert sind.

Ich würde die Tabelle so anlegen:

$tab_id = 1- .... (auto_increment)
$toptab = 1-99 (Tab oben im Header) (index)
$subtab = 99.99.99.99. ... (Tab Position Links) (index)
$tab_name = menu1 usw.
$tab_page = Dateiname der Seite bzw. ein Link zur Seite
$tab-login = 0-1 (ob der User eingeloggt sein muss)
$tab-group_id = 0- .... (ob und welcher Gruppe der User angehören muss)
$tab_active = 0-1 (ob der Tab angezeigt werden soll)

Über $toptab und $subtab lässt sich dann die Anzeigeposition bestimmen, wenn sich die Sortierung ändert. Damit muss ich nur an einer zentralen Stelle etwas ändern und nicht jede einzelne Seite bei einer Änderung bearbeiten.


Das Tagging System habe ich mir mal auf der Seite dort angeschaut, es ist zwar nicht das was ich mir direkt vorstelle, aber vielleicht lässt sich daraus was machen. Ich werde mir mal den Code anschauen, vermutlich hat er das über eine zusätzliche Tabelle gemacht, war auch mein Gedankenansatz.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Die seitlichen Tabs lassen sich auch über eine Templateschleife erzeugen.

Tabelle kann man so anlegen, ich würde allerdings eine Spalte mit Tab-type (top, side), eine für die Sortierung und eine parent_id anlegen. Dadurch könnte man auch recht einfach alle Tabs oben aus der Tabelle bekommen. Ist aber Geschmackssache.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo gn#36,

ich habe jetzt das mit dem Login auf der Startseite getestet, das einlogen klappt so dass er wieder zur Startseite zurück kehrt, nur das auslogen klappt nicht. Hier geht er dann ins Forum und nicht wieder auf die Startseite. Ich habe es jetzt so gelöst:

Code: Alles auswählen

	if ($user->data['user_id'] != ANONYMOUS)
	{
		$u_svi_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=logout', true, $user->session_id, "&redirect=svisuite/index.php");
		$l_login_logout = sprintf($user->lang['LOGOUT_USER'], $user->data['username']);				
	}
	else
	{
		$u_svi_login_logout = append_sid("{$phpbb_root_path}ucp.$phpEx?mode=login&redirect=svisuite/index.php");
		$l_login_logout = $user->lang['LOGIN'];
	}
Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „Coding & Technik“