topic_title der letzten nachricht - tricky problem

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

topic_title der letzten nachricht - tricky problem

Beitrag von bedee »

hi, bin nun durch dieses und auch das englische forum durch, falls ich was übersehen habe gibts einen :oops: bisher hab ich in meinem phpbb so einiges an meinen bedürftnissen angepasst und bin ein wenig dahintergekommen wie das alles tickt (schön programmiert ist es ja) - nur nun steh ich nun komplett auf dem schlauch:

in der viewforum.php wird in das viewforum.tpl die tabelle mit der überschrift : {L_TOPICS} / {L_REPLIES}  / {L_AUTHOR} /... generiert,

hier wird auch der beitrags-titel: {topicrow.TOPIC_TITLE} "geparst" -

nun möchte ich, das aber dass nicht der titel der ersten topic - (in diesem fall habt ihr ja auf diese nachricht geclickt mit der überschrift "topic_title der letzten nachricht - tricky problem",

sondern der titel der zuletzt in diesem "faden" geschriebene beitrag in der viewforum geparst wird. wenn ihr mir auf diese nachricht mit z.b. "so könnts funktionieren..." antwortet, so soll diese überschrift ....

versteht ihr was ich meine?

die lösung könnt irgendwie ganz einfach sein oder total kompliziert aussehen, aber ich komm mit meinen minni-php-knowhow nicht weiter - ich glaub es hat irgendwas mit der topic_last_post_id zu tun!?

bitte gebt mir einen kräftigen tritt in die richtige richtung -

besten dank für eure geduld

bedee
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

bin wohl der einzige...

Beitrag von bedee »

...dems interessiert -
naja,
bedee
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

ähm wenn mich nicht alles täuscht verwechselst du da einige begriffe miteinander...

ein thema (= topic) hat einen titel (=topic_title) und zwar den titel (=post_subject) des ersten beitrags dieses themas.

du möchtest jetzt das der titel des themas mit dem titel des letzten beitrags übschrieben wird?
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

yep

Beitrag von bedee »

danke für die antwort / für die begrifflichkeit

yep, so isses :grin:
was ich da will scheint vielleicht a bisserl absurd, da man möglicherweise recht schnell den überblick verliert, nicht mehr weiss worins in einem thema geht, ich brauch das aber so, da ich das phpbb stark modifiziert als drogenberatungsplattform nützen möchte

dank
bedee
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

du musst halt die submit_post funktion in der includes/functions_post.php so bearbeiten das immer der letzte beitrag den themen titel überschreibt. außerdem solltest du drauf aufpassen das, wenn man den 1. beitrag ändert der thementitel nicht mehr geändert wird.

mfg saerdnaer
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

ich versteh

Beitrag von bedee »

ich versteh nun wie es tickt, leider ist mein php/sql so mies, dass ichs nicht schaff -

in der functions_post.php:

schau ich nun, dass jeder beitrag eine überschrift erhält, dass schaff ich mit der ausklammerung der folgenden zeile:
// Check subject
if (!empty($subject))
{
$subject = htmlspecialchars(trim($subject));
}
// ausgeklammert, damit jeder beitrag zwingend eine überschrift hat
// zuvor wurde nur geprüft, ob der erste beitrag (newtopic) ein subject hat

else // if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'])) {
$error_msg .= (!empty($error_msg)) ? '<br />' . $lang['Empty_subject'] : $lang['Empty_subject'];
}
..
..
..
folgende zeile hab ich gefunden:
if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] )) {
$topic_vote = (!empty($poll_title) && count($poll_options) >= 2) ? 1 : 0;

$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = $topic_id";

hier passiert also der austausch der "variablen inhalte" -
dieses "austauschen" soll nun aber immer passieren, mit immer mein ich bei $mode == 'editpost' und $mode == 'reply', aber wo und wie schreib ich das in den code? ich habe versucht die zeile zu finden, in der der name des autors des letzten posts gesetzt wird, konnte ich aber nicht finden -


bitte helft mir, bin am verzweifeln

mehr info:
in meinem forum hab ich schon so einiges abgedreht, so ist es nicht möglich anonym zu posten, nur reg. user können das - es gibt auch keine announcements oder polls, einfach nur posts
außerdem solltest du drauf aufpassen das, wenn man den 1. beitrag ändert der thementitel nicht mehr geändert wird.
dass ist mir egal

danke
bedee
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Re: ich versteh

Beitrag von saerdnaer »

if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] ))
füg danach am besten einen else if ( $mode == 'reply' ) block mit ner extra sql-aweisung, die den topic titel neu setzt, ein.

hier löscht du am besten das rote raus, dann wird der titel beim bearbeiten nicht geändert.
$sql = ($mode != "editpost") ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_poster, topic_time, forum_id, topic_status, topic_type, topic_vote) VALUES ('$post_subject', " . $userdata['user_id'] . ", $current_time, $forum_id, " . TOPIC_UNLOCKED . ", $topic_type, $topic_vote)" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject', topic_type = $topic_type " . (($post_data['edit_vote'] || !empty($poll_title)) ? ", topic_vote = " . $topic_vote : "") . " WHERE topic_id = $topic_id";
ah
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

Re: ich versteh

Beitrag von bedee »

saerdnaer hat geschrieben:
if ($mode == 'newtopic' || ($mode == 'editpost' && $post_data['first_post'] ))
füg danach am besten einen else if ( $mode == 'reply' ) block mit ner extra sql-aweisung, die den topic titel neu setzt, ein.
mein sql / php ist so mies :oops: , dass ichs nicht auf die reihe bekomm. könntest du mir einen kräftigen kick geben und mir das zeile ausformulieren? shame on me

danke
bedee
Benutzeravatar
saerdnaer
Ehemaliges Teammitglied
Beiträge: 4268
Registriert: 21.04.2001 02:00

Beitrag von saerdnaer »

Code: Alles auswählen

if ( $mode == 'reply' )
{
        $sql = "UPDATE " . TOPICS_TABLE . " SET topic_title = '$post_subject' WHERE topic_id = $topic_id";
        if ( !($result = $db->sql_query($sql)) )
        {
                message_die(GENERAL_ERROR, 'Could not update topic title', '', __LINE__, __FILE__, $sql);
        }
}
ah
bedee
Mitglied
Beiträge: 29
Registriert: 21.07.2004 14:13

funkt

Beitrag von bedee »

:grin: :grin: :grin: :grin: :grin: :grin: ...sagt mehr als 1000 worte

besten dank
funkt wunderbar

bedee
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“