Neue Beiträge splitten

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Neue Beiträge splitten

Beitrag von dieter99 »

Ich habe einen LösungsAnsatz gefunden:

Datei: search_results.html

Code: Alles auswählen

<!-- BEGIN searchresults -->
			<li class="row<!-- IF searchresults.S_ROW_COUNT is even --> bg1<!-- ELSE --> bg2<!-- ENDIF -->">
				<dl class="icon" style="background-image: url({searchresults.TOPIC_FOLDER_IMG_SRC}); background-repeat: no-repeat;">
					<dt <!-- IF searchresults.TOPIC_ICON_IMG -->style="background-image: url({T_ICONS_PATH}{searchresults.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF -->>
						<!-- IF searchresults.S_UNREAD_TOPIC --><a href="{searchresults.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF -->
						<a href="{searchresults.U_VIEW_TOPIC}" class="topictitle">{searchresults.TOPIC_TITLE}</a> {searchresults.ATTACH_ICON_IMG}
						<!-- IF searchresults.S_TOPIC_UNAPPROVED or searchresults.S_POSTS_UNAPPROVED --><a href="{searchresults.U_MCP_QUEUE}">{searchresults.UNAPPROVED_IMG}</a> <!-- ENDIF -->
						<!-- IF searchresults.S_TOPIC_REPORTED --><a href="{searchresults.U_MCP_REPORT}">{REPORTED_IMG}</a><!-- ENDIF --><br />
						<!-- IF searchresults.PAGINATION --><strong class="pagination"><span>{searchresults.PAGINATION}</span></strong><!-- ENDIF -->
						{L_POST_BY_AUTHOR} {searchresults.TOPIC_AUTHOR_FULL} &raquo; {searchresults.FIRST_POST_TIME} 
						<!-- IF not searchresults.S_TOPIC_GLOBAL -->{L_IN} <a href="{searchresults.U_VIEW_FORUM}" style="color:#3067A4;">{searchresults.FORUM_TITLE}</a><!-- ELSE --> ({L_GLOBAL})<!-- ENDIF -->
					</dt>
					<dd class="posts">{searchresults.TOPIC_REPLIES}</dd>
					<dd class="views">{searchresults.TOPIC_VIEWS}</dd>
					<dd class="lastpost"><span>
						{L_POST_BY_AUTHOR} {searchresults.LAST_POST_AUTHOR_FULL}
						<!-- IF not S_IS_BOT --><a href="{searchresults.U_LAST_POST}">{LAST_POST_IMG}</a> <!-- ENDIF --><br />{searchresults.LAST_POST_TIME}<br /> </span>
					</dd>
				</dl>
			</li>
		<!-- END searchresults -->
Wenn ich diesen Code einfach doppelt einfüge, werden die neuen Beiträge logischerweise auch doppelt ausgegeben.

Nun muss ich bei beiden Codeschnipseln (ich nenne es jetzt Code 1 und Code 2) nur noch eine If-Abfrage einbauen:

Code 1: "IF ELTERN-FORUM_ID 35"

Code 2: "IF ELTERN-FORUM_ID 70"

Die Schwierigkeit besteht nun darin, auf die Eltern-Forum ID Zugriff zu bekommen. Zu finden ist diese Angabe in der mySql Tabelle phpbb_forums, Spalte "forum_parents". Dort steht z.B. der Eintrag a:1:{i:35;a:2:{i:0;s:17:"Testeintrag";i:1;i:0;}}
Wie bekomme ich in der Datei search_results.html Zugriff auf den mySQL Eintrag 35? (35 ist in meinem Beispiel die Eltern-Forum-ID).
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Miriam »

Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Nuramon
Mitglied
Beiträge: 250
Registriert: 05.02.2012 21:45
Wohnort: Solingen
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Nuramon »

Muss es zwingend das Eltern-Forum sein?
In der phpbb_topics wird das Forum gespeichert, in dem sich das Thema befindet. Das kannst du ganz leicht als Template-Variable übergeben, falls es nicht sogar schon da ist, und dann mit <!-- IF searchresults.FORUM_ID == 1 or searchresults.FORUM_ID == 2 or searchresults.FORUM_ID == 3 --> die notwendigen Foren rausfiltern.
In der zweiten Anzeige machst du dasselbe, halt nur mit dem verneinten IF-Statement. In meinem Beispiel <!-- IF searchresults.FORUM_ID != 1 and searchresults.FORUM_ID != 2 and searchresults.FORUM_ID == 3 -->.

Das sollte schon ausreichen.

EDIT://
Hab gerade nachgeguckt, FORUM_ID existiert schon, sollte also so funktionieren.
Das Pinke Forum
Das Pinke Forum - werde Teil einer freundlichen Community, die dir bei Fragen rund um Liebe, Sex, Ernährung, Schule oder bei Problemen aller Art zur Seite steht! Verfasse Beiträge, erstelle Threads und lern nette Leute kennen; kostenlos und toll betreut.
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Neue Beiträge splitten

Beitrag von dieter99 »

Nuramon hat geschrieben:Muss es zwingend das Eltern-Forum sein?
Ja, es muss zwingend das Eltern-Forum sein.
Miriam hat geschrieben:Hinweis: http://php.net/manual/de/function.serialize.php
Das es sich beim Datenbankinhalt um ein serialisiertes Array handelt, war mir schon klar. Doch in welcher Datei muss ich welchen Code einfügen, damit ich den Datenbankinhalt überhaupt auslesen kann? Und wo übergebe ich den Inhalt schließlich an das Template?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Miriam »

Mit diesem serialisierten Wert kommst Du nicht weiter. Jedenfalls nicht dahin, wo Du hin möchtest.
Ansatz:
  • Finde in der search.php
    • Code: Alles auswählen

                      $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.forum_id, p.topic_id, p.post_time' : 't.forum_id, t.topic_id, t.topic_last_post_time';
    tausche aus gegen:
    • Code: Alles auswählen

                      // $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
                      $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.forum_id, p.topic_id, p.post_time' : 't.forum_id, t.topic_id, t.topic_last_post_time';
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Nuramon
Mitglied
Beiträge: 250
Registriert: 05.02.2012 21:45
Wohnort: Solingen
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Nuramon »

dieter99 hat geschrieben:Ja, es muss zwingend das Eltern-Forum sein.
Macht das ganze drölf mal komplizierter. Kommen so oft neue Foren hinzu zu deinem Eltern-Forum? Sonst ist das händisch eintragen der Zahlen bei weitem die bessere Lösung, geht viel schneller und macht genau das gleiche.
dieter99 hat geschrieben:Das es sich beim Datenbankinhalt um ein serialisiertes Array handelt, war mir schon klar. Doch in welcher Datei muss ich welchen Code einfügen, damit ich den Datenbankinhalt überhaupt auslesen kann? Und wo übergebe ich den Inhalt schließlich an das Template?
Eingefügt werden muss der Code wohl in die search.php, je nachdem, ob du global die gültigen Forum-Ids ins Template schreiben müchtest bei den globalen Variablen, sonst wenn du es für jedes Ergebnis einzeln machen möchtest, bei den template_vars 'searchresults'.
Das Pinke Forum
Das Pinke Forum - werde Teil einer freundlichen Community, die dir bei Fragen rund um Liebe, Sex, Ernährung, Schule oder bei Problemen aller Art zur Seite steht! Verfasse Beiträge, erstelle Threads und lern nette Leute kennen; kostenlos und toll betreut.
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Neue Beiträge splitten

Beitrag von dieter99 »

Miriam hat geschrieben:Mit diesem serialisierten Wert kommst Du nicht weiter. Jedenfalls nicht dahin, wo Du hin möchtest.
Ansatz:
  • Finde in der search.php
    • Code: Alles auswählen

                      $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.forum_id, p.topic_id, p.post_time' : 't.forum_id, t.topic_id, t.topic_last_post_time'; 
    tausche aus gegen:
    • Code: Alles auswählen

                      // $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.post_time' : 't.topic_last_post_time';
                      $sort_by_sql['t'] = ($show_results == 'posts') ? 'p.forum_id, p.topic_id, p.post_time' : 't.forum_id, t.topic_id, t.topic_last_post_time'; 
Du hast im Endeffekt zweimal den gleichen Code gepostet.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Miriam »

Oops,

der zu findende Code ist der, der im zweiten Codesegment auskommentiert wurde.
Das hast Du doch schon gesehen, gell?
Zuletzt geändert von Miriam am 10.10.2013 10:38, insgesamt 1-mal geändert.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
dieter99
Mitglied
Beiträge: 430
Registriert: 07.04.2005 20:09

Re: Neue Beiträge splitten

Beitrag von dieter99 »

dieter99 hat geschrieben:Ich habe einen LösungsAnsatz gefunden:

Datei: search_results.html

Code: Alles auswählen

<!-- BEGIN searchresults -->
			<li class="row<!-- IF searchresults.S_ROW_COUNT is even --> bg1<!-- ELSE --> bg2<!-- ENDIF -->">
				<dl class="icon" style="background-image: url({searchresults.TOPIC_FOLDER_IMG_SRC}); background-repeat: no-repeat;">
					<dt <!-- IF searchresults.TOPIC_ICON_IMG -->style="background-image: url({T_ICONS_PATH}{searchresults.TOPIC_ICON_IMG}); background-repeat: no-repeat;"<!-- ENDIF -->>
						<!-- IF searchresults.S_UNREAD_TOPIC --><a href="{searchresults.U_NEWEST_POST}">{NEWEST_POST_IMG}</a> <!-- ENDIF -->
						<a href="{searchresults.U_VIEW_TOPIC}" class="topictitle">{searchresults.TOPIC_TITLE}</a> {searchresults.ATTACH_ICON_IMG}
						<!-- IF searchresults.S_TOPIC_UNAPPROVED or searchresults.S_POSTS_UNAPPROVED --><a href="{searchresults.U_MCP_QUEUE}">{searchresults.UNAPPROVED_IMG}</a> <!-- ENDIF -->
						<!-- IF searchresults.S_TOPIC_REPORTED --><a href="{searchresults.U_MCP_REPORT}">{REPORTED_IMG}</a><!-- ENDIF --><br />
						<!-- IF searchresults.PAGINATION --><strong class="pagination"><span>{searchresults.PAGINATION}</span></strong><!-- ENDIF -->
						{L_POST_BY_AUTHOR} {searchresults.TOPIC_AUTHOR_FULL} &raquo; {searchresults.FIRST_POST_TIME} 
						<!-- IF not searchresults.S_TOPIC_GLOBAL -->{L_IN} <a href="{searchresults.U_VIEW_FORUM}" style="color:#3067A4;">{searchresults.FORUM_TITLE}</a><!-- ELSE --> ({L_GLOBAL})<!-- ENDIF -->
					</dt>
					<dd class="posts">{searchresults.TOPIC_REPLIES}</dd>
					<dd class="views">{searchresults.TOPIC_VIEWS}</dd>
					<dd class="lastpost"><span>
						{L_POST_BY_AUTHOR} {searchresults.LAST_POST_AUTHOR_FULL}
						<!-- IF not S_IS_BOT --><a href="{searchresults.U_LAST_POST}">{LAST_POST_IMG}</a> <!-- ENDIF --><br />{searchresults.LAST_POST_TIME}<br /> </span>
					</dd>
				</dl>
			</li>
		<!-- END searchresults -->
Wenn ich diesen Code einfach doppelt einfüge, werden die neuen Beiträge logischerweise auch doppelt ausgegeben.

Nun muss ich bei beiden Codeschnipseln (ich nenne es jetzt Code 1 und Code 2) nur noch eine If-Abfrage einbauen:

Code 1: "IF ELTERN-FORUM_ID 35"

Code 2: "IF ELTERN-FORUM_ID 70"

Die Schwierigkeit besteht nun darin, auf die Eltern-Forum ID Zugriff zu bekommen. Zu finden ist diese Angabe in der mySql Tabelle phpbb_forums, Spalte "forum_parents". Dort steht z.B. der Eintrag a:1:{i:35;a:2:{i:0;s:17:"Testeintrag";i:1;i:0;}}
Wie bekomme ich in der Datei search_results.html Zugriff auf den mySQL Eintrag 35? (35 ist in meinem Beispiel die Eltern-Forum-ID).
Die von mir gepostete Idee hat einen großen Nachteil:

Nehmen wir mal an, ich lasse unter "neue Beiträge" erst die Beiträge der Kategrie1 ausgeben, und danach alle Beiträge der Kategorie 2. In der Kategorie 1 sind 50 neue Beiträge vorhanden, d.h. es sind so viele Beiträge das die Beiträge der Kategorie 2 sehr weit unten angeordnet sind und daher im ersten Moment nicht sichtbar sind (da im ersten Moment nicht auf den Bildschirm zu sehen). Wenn nun der User x alle 50 Beiträge der Kategorie 1 gelesen hat, und zu einem späteren Zeitpunkt schreibt jemand einen Beitrag zu Kategorie 2, dann taucht dieser Beitrag unter "neue Beiträge" nicht oben auf, da zunächst die 50 gelesenen Beiträge von Kategorie 1 aufgelistet werden. Womöglich werden dann die neuen Beiträge von Kategorie 2 übersehen. Hat jemand einen anderen Lösungsansatz?
Benutzeravatar
Nuramon
Mitglied
Beiträge: 250
Registriert: 05.02.2012 21:45
Wohnort: Solingen
Kontaktdaten:

Re: Neue Beiträge splitten

Beitrag von Nuramon »

Warum willst du die überhaupt trennen?
Das Pinke Forum
Das Pinke Forum - werde Teil einer freundlichen Community, die dir bei Fragen rund um Liebe, Sex, Ernährung, Schule oder bei Problemen aller Art zur Seite steht! Verfasse Beiträge, erstelle Threads und lern nette Leute kennen; kostenlos und toll betreut.
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“