Snippet - erster ungelesener Beitrag

Aktuelle Version: 1.0.6
Veröffentlicht: 01.09.10
Forum rules
Vor dem erstellen neuer Supportanfragen bitte zuerst in die board3 Portal FAQ schauen und die Suche benutzen!
Viele Fragen sind bereits schon gestellt und beantwortet worden.
Bitte auch unsere Forumsregeln lesen und beachten!
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Snippet - erster ungelesener Beitrag

Post by Mike »

Im Portal gibt es zwei verschiede Versionen des "News" genannten Blocks: Aktuelle Beiträge. Den 'ausführlichen' und den kompakten.
Im ACP kann man einstellen, das man bei dem Klick auf den Link zum Topic, auf den letzten Beitrag geleitet wird, was aber leider nur in der ausführlichen Variante des Blockes funktioniert.
Die (durchaus nützliche) Funktion, um (wie im Forum) jeweils auf den ersten ungelesenen Beitrag eines Topics geleitet zu werden, wenn man auf das kleine Symbol vor dem Titel klickt, fehlt leider gänzlich.

Da ich vom Support leider keine Hilfe erhalten habe, habe ich eben selbst ein kleines Snippet zusammengestellt um die Funktion einzubauen.

EDIT: das Snippet funktioniert in dieser Version nur, wenn im ACP unter "aktuelle Beiträge" die "den neusten Beitrag anzeigen" Einstellung auf ja gestellt wurde.

Öffne: portal/block/news.php
Suche nach: (etwa Zeile Nr. 150)

Code: Select all

'U_VIEWFORUM'		=> append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $fetch_news[$i]['forum_id']),
Füge danach ein:

Code: Select all

'U_UNREAD_COMMENTS'	=> append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $fetch_news[$i]['forum_id'] . '&p=' . $fetch_news[$i]['topic_last_post_id'] . '&view=unread#unread'),
abspeichern...

Öffne: styles/DEIN_STYLE/template/portal/block/news_compact.html
(gleiches danach nochmal mit der: styles/DEIN_STYLE/template/portal/block/news.html)
Suche nach: (etwa Zeile Nr. 14)

Code: Select all

<a name="n{news_row.N_ID}"></a><!-- IF news_row.S_UNREAD_INFO -->{NEWEST_POST_IMG}<!-- ELSE -->{READ_POST_IMG}<!-- ENDIF --> {news_row.ATTACH_ICON_IMG} <!-- IF news_row.S_POLL --> <strong style="font-size:1.1em;">{L_POLL}: </strong><!-- ENDIF -->
suche in dieser Zeile nach:

Code: Select all

{NEWEST_POST_IMG}
ersetze diesen Teil durch:

Code: Select all

<a href="{news_row.U_UNREAD_COMMENTS}">{NEWEST_POST_IMG}</a>
abspeichern, fertig...

Wenn ihr alles richtig gemacht habt, müsste im Portal das Symbol vor dem Titel in etwa folgendermaßen verlinkt sein:

http://DEINEDOMAIN.de/viewtopic.php?f=25&p=1704&view=unread#unread


Mike
Last edited by Mike on 20. July 2008 22:45, edited 1 time in total.
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Kevin
Site Admin
Posts: 2989
Joined: 7. January 2006 20:11
phpBB.de User: Saint
phpBB.com User: Saint_hh
Location: Hamburg
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Kevin »

Cool - danke Mike! :)
~~~ They say the definition of madness is doing the same thing and expecting a different result ~~~

Kein Support per PN / No support via PM!
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

Kevin wrote:Cool - danke Mike! :)
Immer wieder gerne ;)

Und bei der Gelegenheit:

Da der im ersten Posting angesprochene Fehler, das die Funktion "springe zum letzten Beitrag" nicht in der kompakten Ansicht funktioniert, mit dem ersten Snippet noch nicht gefixt ist, hier noch die Änderung dazu...

Öffne: styles/DEIN_STYLE/template/portal/block/news_compact.html
Suche nach: (etwa Zeile Nr. 15)

Code: Select all

<a href="{news_row.U_VIEW_COMMENTS}" title="{S_NEWEST_OR_FIRST}"><strong style="font-size:1.1em;">{news_row.TITLE}</strong></a>
suche in dieser Zeile nach:

Code: Select all

{news_row.U_VIEW_COMMENTS}
ersetze diesen Teil durch:

Code: Select all

{news_row.U_LAST_COMMENTS}
abspeichern...


EDIT: das ist noch nicht ganz richtig, denn es lässt sich dadurch nicht durch die ACP Einstellung beeinflussen...
EDIT2: es geht ja doch ?!?



Damit passt dann auch der angezeigte Text (Zum letzten Beitrag springen) zu ausgeführten Aktion ;)
Last edited by Mike on 20. July 2008 21:03, edited 2 times in total.
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Kevin
Site Admin
Posts: 2989
Joined: 7. January 2006 20:11
phpBB.de User: Saint
phpBB.com User: Saint_hh
Location: Hamburg
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Kevin »

Mike wrote:Da der im ersten Posting angesprochene Fehler, das die Funktion "springe zum letzten Beitrag" nicht in der kompakten Ansicht funktioniert, mit dem ersten Snippet noch nicht gefixt ist, hier noch die Änderung dazu...
Erm, um dort mal kurz einzuhaken: Das funktioniert in der kompakten Ansicht. Oder reden wir aneinander vorbei?

Aber zum Verständnis, ich glaube das was du suchst findest du in der portal/includes/functions.php versteckt:

Code: Select all

$post_link = ( $portal_config['portal_news_show_last'] ) ? 't.topic_last_post_id = p.post_id' : 't.topic_first_post_id = p.post_id' ;
Das ist quasi die Vorbereitung, vor der SQL Abfrage (erste oder neueste Post ID auslesen?), die dann hier folgt:

Code: Select all

			ON
				' . $post_link . '
Die Post ID wird also in der functions.php vorbereitet und bereits selektiert (erster oder neuester?) an die news.php übergeben.

Ich gebe zu, das ist ein bisschen tricky und nicht ohne weiteres zu durchschauen, deswegen wahrscheinlich deine Irritation. ;)
~~~ They say the definition of madness is doing the same thing and expecting a different result ~~~

Kein Support per PN / No support via PM!
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

Jap, das war das, wonach ich gesucht habe...
Und du hast recht, das funktioniert tatsächlich. Ich weis nicht genau wieso das bei meinem ersten Versuch mit der Einstellung im ACP nicht übereingestimmt hat, aber jetzt klappt es.

Es funktioniert allerdings (bei mir) nur dann, wenn ich den Link tatsächlich auf {news_row.U_LAST_COMMENTS} statt auf {news_row.U_VIEW_COMMENTS} setze, wie es original in der news_compact.html steht. Dann lässt sich das auch umschalten per ACP...
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Heinrich-XIV
Tester
Posts: 233
Joined: 16. May 2008 18:39
phpBB.de User: Heinze 1906
phpBB.com User: Heinrich-XIV
Location: 52353 Düren

Re: Snippet - erster ungelesener Beitrag

Post by Heinrich-XIV »

Mal ne (wahrscheinlich dumme) Frage am Rande

Erst mal, ist eine gute Idee. Da ich mich noch nicht mit dem Themenbereich beschäftigt habe: Normaler weise werden ja die Markierungen für gelesene bzw. ungelesene Beiträge im Cookie gespeichert. Es besteht aber die Möglichkeit, Im ACP unter Serverlast die Option, diese Markierungen in der DB anstatt im Cookie abspeichern zu lassen. Ich gehe mal davon aus, das dies keinen Einfluss auf die Funktion des Snippet hat, oder? :?


Heinrich
No more Heroes -=- The Stranglers

Beat the Bastards -=- The Exploited
[/size]
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

gute Frage... gleich mal testen ;)

EDIT:
Das ist auch interessant.
Das letzteres, also das mit dem "springe zum letzten Beitrag" bekomme ich nicht richtig zum laufen. Mal gehts, mal nich..
Das erstere, mit den ungelesenen Beiträgen funktioniert unabhängig davon ob die Info im cookie, oder in der Tabelle gespeichert werden.
Aber es funktioniert auch nur dann, wenn im ACP "springe zum letzten Beiotrag" auf "ja" gestellt ist. Der Link ist bei beiden Einstellungen gleich, aber wenn im ACP auf "nein" gestellt ist, dann kommt beim Klick auf das Icon nur die erste Seite des Beitrages... Wird da irgendwo der "Anker" vom Portal nicht übergeben?!?
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Heinrich-XIV
Tester
Posts: 233
Joined: 16. May 2008 18:39
phpBB.de User: Heinze 1906
phpBB.com User: Heinrich-XIV
Location: 52353 Düren

Re: Snippet - erster ungelesener Beitrag

Post by Heinrich-XIV »

Jo, danke für das Feedback

Also, habe das ganze mal eben auf meinem Testaccount eingebaut, kann deine Angaben bestätigen. Ansonsten müsste man mal nachsehen, welche Parameter durch die Einstellung "nein" durch das ACP/Portal Modul übergeben werden. Ist nur so eine "Ahnung" von mir, also nichts konkretes.

Werde gleich mal nachschauen.

MfG

Heinrich
No more Heroes -=- The Stranglers

Beat the Bastards -=- The Exploited
[/size]
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

Funktioniert bei dir denn die Funktion mit dem link auf den letzten Beitrag, ohne die Änderung, die ich in meinem zweiten Posting beschrieben habe?
Bei mir gehts wirklich nur dann, wenn ich den Link auf U_LAST_COMMENTS setze. Und da bei mir im ACP das "letzte Beitrag anzeigen" immer auf "ja" ist, hab ich da sowieso kein Problem, das das bei "nein" auch nicht geht... ;)

EDIT: also es ist bei mir definitiv so:
Wenn ich im Template den Link von U_VIEW_COMMENTS auf U_LAST_COMMENTS ändere, dann wird das korrekt angezeigt. Auch wenn ich im ACP auf nein stelle, wird das berücksichtigt. Das heist, bei ja wird der letzte Beitrag gelinkt (andere post ID im Link) und wenn ich auf nein stelle, wird der erste Beitrag eines Topic gelinkt...

Das einzige was jetzt bei mir nicht geht, ist die Funktion mit dem ersten ungelesenen Beitrag, wenn im ACP auf nein gestellt ist, obwohl der Link auf die viewtopic.php in beiden Varianten das &view=unread#unread enthält...
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Heinrich-XIV
Tester
Posts: 233
Joined: 16. May 2008 18:39
phpBB.de User: Heinze 1906
phpBB.com User: Heinrich-XIV
Location: 52353 Düren

Re: Snippet - erster ungelesener Beitrag

Post by Heinrich-XIV »

Also,

nein, ich habe ja alle relevanten Postings mit einfließen lassen, ohne Änderung geht da nichts. Im Moment hänge ich in der poral.php, da in dem ACP Modul ist nichts wesentliches dazu ist, war wohl die falsche Spur. Allerdings hat es mir geholfen, ein wenig besser durchzublicken. :D

Ja, ist richtig &view=unread#unread, ist sorry wenn ich jetzt was falsches schreibe, bezieht sich das in beiden Fällen auf Postings, und nicht auf Topics/Postings? Ich habe habe mich da noch nicht schlau gemacht, aber im Portal wird ja das gesamte Thema (Topic) als ungelesen markiert, sobald ein neues Posting drin ist, daher die Frage.


MfG

Heinrich
No more Heroes -=- The Stranglers

Beat the Bastards -=- The Exploited
[/size]
User avatar

Kevin
Site Admin
Posts: 2989
Joined: 7. January 2006 20:11
phpBB.de User: Saint
phpBB.com User: Saint_hh
Location: Hamburg
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Kevin »

Heieiei, schwer hier nachzuvollziehen was nun hier abgeht.
Mike wrote:Das einzige was jetzt bei mir nicht geht, ist die Funktion mit dem ersten ungelesenen Beitrag, wenn im ACP auf nein gestellt ist, obwohl der Link auf die viewtopic.php in beiden Varianten das &view=unread#unread enthält...
Testest du das mit Themen, die mehrere Seiten haben? Wenn ja würde es das erklären. Der erste ungelesene Beitrag ist z.B. auf Seite 3, durch die Einstellung "erster Beitrag" wird aber wegen der Post ID logischerweise die erste Seite des Topics geöffnet - die Post ID wird scheinbar vorrangig zum &view=unread behandelt. Dadurch das aber kein ungelesener Beitrag auf der ersten Seite ist, findet der Browser natürlich nicht den Marker "<a id="unread">" und auch das #postid fehlt.
Mike wrote:Wenn ich im Template den Link von U_VIEW_COMMENTS auf U_LAST_COMMENTS ändere, dann wird das korrekt angezeigt
Ja - weil nur bei der Variablen U_LAST_COMMENTS schon vorher in der portal/includes/functions.php der Datenbankeintrag portal_news_show_last abgefragt und je nach Wert die erste oder neueste Post-ID des Threads ausgelesen und übergeben wird.
~~~ They say the definition of madness is doing the same thing and expecting a different result ~~~

Kein Support per PN / No support via PM!
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

hmm... ich verstehe das so:
die viewtopic.php wird durch den link aufgerufen, und verschiedene Parameter werden im Link mit übergeben.
Die viewtopic.php verarbeitet diese dann, und zeigt das entsprechende an.
schauen wir uns den Link mal an.
Da kommt als erstes "f=ZAHL", das übergibt die Foren ID.
Danach kommt "&p=ZAHL", welches die ID des Postings übergibt.
Das "#pZahl" ist für den Anker in der HTML Seite.

Übergeben wir jetzt "&view=unread" kann sie bis hierhin schonmal feststellen ob ungelesene Beiträge da sind, und berechnen auf welcher Seite sie sich befinden. Das "#unread" ist nur noch dazu da, um gleich auf den richigen HTML Anker zu springen...

Was mir also überhaupt nicht klar ist, wieso beides nicht funktioniert, wenn man im ACP auf nein stellt, da das die viewtopic.php ja überhaupt nicht beeinflussen sollte... Die Links werden in beiden Fällen ja gleich dargestellt...
Last edited by Mike on 20. July 2008 23:26, edited 1 time in total.
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

thomas.d
Former Team Member
Posts: 625
Joined: 19. January 2008 23:56
phpBB.de User: thomas.d
phpBB.com User: thomas.d
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by thomas.d »

Nicht vergessen: Ihr müsst erst den Nippel durch die Lasche ziehen! :mrgreen:
Viele Grüße

Thomas

Deutsche Sprachdateien für
[Alpha] phpBB Calendar 0.0.8 (alightner) | [RC] phpBB Arcade 1.0.RC8 |
ACP Add User MOD 1.0.0 |
User avatar

Topic author
Mike
Former Team Member
Posts: 1862
Joined: 3. July 2008 23:59
Location: Schwarzwald / FDS
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Mike »

hää? Nippel... Lasche?? egal...

@Kevin: wir reden hier doch von zwei Verschiedenen sachen, oder glaubst du, das das alles einen zusammenhang hat?
Es geht zum einen ja um die Verlinkung der Icons und zum anderen um die Verlinkung der Titel...

Und wenn du schreibst das nur bei der U_LAST_COMMENT die richtige ID angegeben wird, muss sie ja folgerichtig auch als Link im Template stehen, und nicht die U_VIEW_COMMENTS, oder sehe ich das falsch?
kein Support per PN / Messenger
no Support via PM / Messenger
User avatar

Kevin
Site Admin
Posts: 2989
Joined: 7. January 2006 20:11
phpBB.de User: Saint
phpBB.com User: Saint_hh
Location: Hamburg
Contact:

Re: Snippet - erster ungelesener Beitrag

Post by Kevin »

Ich schätze um alles unter einen Hut zu bringen, muss man noch ein bisschen mehr Aufwand treiben, und vor allem die Funktion "unread" aus der viewtopic.php sich erstmal zu Gemüte führen:

Code: Select all

    if ($view == 'unread')
    {
        // Get topic tracking info
        $topic_tracking_info = get_complete_topic_tracking($forum_id, $topic_id);

        $topic_last_read = (isset($topic_tracking_info[$topic_id])) ? $topic_tracking_info[$topic_id] : 0;

        $sql = 'SELECT post_id, topic_id, forum_id
            FROM ' . POSTS_TABLE . "
            WHERE topic_id = $topic_id
                " . (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND post_approved = 1') . "
                AND post_time > $topic_last_read
            ORDER BY post_time ASC";
        $result = $db->sql_query_limit($sql, 1);
        $row = $db->sql_fetchrow($result);
        $db->sql_freeresult($result);

        if (!$row)
        {
            $sql = 'SELECT topic_last_post_id as post_id, topic_id, forum_id
                FROM ' . TOPICS_TABLE . '
                WHERE topic_id = ' . $topic_id;
            $result = $db->sql_query($sql);
            $row = $db->sql_fetchrow($result);
            $db->sql_freeresult($result);
        }

        if (!$row)
        {
            // Setup user environment so we can process lang string
            $user->setup('viewtopic');

            trigger_error('NO_TOPIC');
        }

        $post_id = $row['post_id'];
        $topic_id = $row['topic_id'];
    } 
Zur Zeit gehen wir stumpf vor - erster oder letzer Post.

Wäre aber in der Tat recht befriedigend, das sauber ins Portal zu implementieren. ;)
Mike wrote:Und wenn du schreibst das nur bei der U_LAST_COMMENT die richtige ID angegeben wird, muss sie ja folgerichtig auch als Link im Template stehen, und nicht die U_VIEW_COMMENTS, oder sehe ich das falsch?
Korrekt, das ist die Zeile:

Code: Select all

<!-- IF news_row.S_UNREAD_INFO -->{NEWEST_POST_IMG}<!-- ELSE -->{READ_POST_IMG}<!-- ENDIF --> {news_row.ATTACH_ICON_IMG}  <!-- IF news_row.S_POLL --><strong>{L_POLL}: </strong><!-- ENDIF --><a href="{news_row.U_LAST_COMMENTS}" title="{S_NEWEST_OR_FIRST}" class="topictitle">{news_row.TITLE}</a>
U_VIEW_COMMENTS nutzen wir nur für den Link "Antworten" - der immer auf den ersten Post eines Topics geht.
Mike wrote:@Kevin: wir reden hier doch von zwei Verschiedenen sachen, oder glaubst du, das das alles einen zusammenhang hat?
Es geht zum einen ja um die Verlinkung der Icons und zum anderen um die Verlinkung der Titel...
Jein. Ist halt die Frage, wie man es umsetzen möchte.
Ich fände es schlau das soweit zu treiben, das auch bei der Verlinkung der Titel gecheckt wird (z.B. mit der Einstellung "neuester Post"):
a: ist der User eingeloggt? - wenn nicht -> der Link geht auf den letzten Post
b: der User ist eingeloggt - 1.gibt es ungelesene Beiträge = Link geht auf den ersten ungelesenen Post / 2. alle Posts sind gelesen = Link geht auf den neuesten Post
~~~ They say the definition of madness is doing the same thing and expecting a different result ~~~

Kein Support per PN / No support via PM!
Locked

Return to “board3 Portal 1.0.x - Deutscher Support”