Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmény .

2014.06.05. 11:03

Készítette:
    Ragadozo - kornelfrici

DEMO, hogy is néz ki az egész - a lap alján legalul található!

  • Olyan emberek kérték, akik évek óta fenn voltak az index.hu oldalon, és nagyon megszokták ezt a sorszámozást. Amikor készítettek maguknak egy saját új fórumot, a régi helyen megszokott dolgok igen hiányoztak.
  • Később kiderült, hogy az "Idézés" nem a legjobb, és a legcélszerűbb megoldás főleg a "pókhálók" miatt, jobb lenne egyszerűen egy "Válasz" lehetőség, ami arra a hozzászólásra mutat, amelyikre válaszolnak. Ez egyben jelentősen tehermentesíti az adatbázist is, valamint akit érdekel, megnézi, akit nem érdekel, nem zavarja a sok idézgetés.
  • Mivel a hozzászólásokban jelent meg az idézés helyett az "Előzmény: ...." üzenet, ez viszont zavarhatta egyes felhasználókat az üzenet megírásában, valamit bele javítható volt (akár még véletlenül is!).

Ez az új változat már figyelembe vette mindezeket a szempontokat:

Mielőtt hozzá kezdesz, azért egy teljes adatbázis mentés nem árt! :)
( AVP - Karbantartás fül - bal oldalt Adatbázis - Kimentés - középen mindenhol legyen az első bejelölve - a box alatt Összes kiválasztása - Elküld )

Új ablakban lépjél be a phpMyAdmin felületre, nyissad meg az adatbázist, és klikk az SQL opcióra.
A beviteli mezőbe írd be:
(arra figyelj, hogy ha nem phpbb_ prefixet használsz, hanem mást, azt írd át!)
Kód:
ALTER TABLE phpbb_topics ADD topic_sorba MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL AFTER topic_id;
ALTER TABLE phpbb_posts ADD post_ssz MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL AFTER topic_id;
ALTER TABLE phpbb_posts ADD post_elozmeny MEDIUMTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL AFTER post_ssz ;

Klikk az Indítás gombra

Ha lefutott hibaüzenet nélkül, neki lehet állni a fájlok szerkesztésének:

--------
posting.php
--------
Keresd ezt:
Kód:
   case 'reply':
      if (!$topic_id)
      {
         trigger_error('NO_TOPIC');
      }

      // Force forum id
      $sql = 'SELECT forum_id
         FROM ' . TOPICS_TABLE . '
         WHERE topic_id = ' . $topic_id;
      $result = $db->sql_query($sql);
      $f_id = (int) $db->sql_fetchfield('forum_id');
      $db->sql_freeresult($result);

      $forum_id = (!$f_id) ? $forum_id : $f_id;

      $sql = 'SELECT f.*, t.*
         FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . " f
         WHERE t.topic_id = $topic_id
            AND (f.forum_id = t.forum_id
               OR f.forum_id = $forum_id)" .
         (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND t.topic_approved = 1');
   break;

   case 'quote':
   case 'edit':


Csere erre:
Kód:
   case 'reply':
      if (!$topic_id)
      {
         trigger_error('NO_TOPIC');
      }

      // Force forum id
      $sql = 'SELECT forum_id, topic_sorba
         FROM ' . TOPICS_TABLE . '
         WHERE topic_id = ' . $topic_id;
      $result = $db->sql_query($sql);
      $topic_sorba = (int) $db->sql_fetchfield('topic_sorba');
      $f_id = (int) $db->sql_fetchfield('forum_id');
      $db->sql_freeresult($result);

      $forum_id = (!$f_id) ? $forum_id : $f_id;
      $topic_sorba = $topic_sorba + 1;

      $sql = 'SELECT f.*, t.*
         FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . " f
         WHERE t.topic_id = $topic_id
            AND (f.forum_id = t.forum_id
               OR f.forum_id = $forum_id)" .
         (($auth->acl_get('m_approve', $forum_id)) ? '' : 'AND t.topic_approved = 1');
   break;

   case 'quote':
   case 'edit':


Keresd ezt:
Kód:
else
{
   $post_data['quote_username'] = isset($post_data['username']) ? $post_data['username'] : '';
}

Beillesztés utána új sorba:
Kód:
$post_data['quote_post_id']      = (isset($post_data['post_id'])) ? (int) $post_data['post_id'] : 0;
$post_data['quote_post_ssz']   = (isset($post_data['post_ssz'])) ? (int) $post_data['post_ssz'] : 0;
$post_data['post_elozmeny']      = (isset($post_data['post_elozmeny'])) ? $post_data['post_elozmeny'] : '';

Keresd ezt:
Kód:
         $data = array(
            'topic_title'         => (empty($post_data['topic_title'])) ? $post_data['post_subject'] : $post_data['topic_title'],
            'topic_first_post_id'   => (isset($post_data['topic_first_post_id'])) ? (int) $post_data['topic_first_post_id'] : 0,
            'topic_last_post_id'   => (isset($post_data['topic_last_post_id'])) ? (int) $post_data['topic_last_post_id'] : 0,

Beillesztés eléje új sorba:
Kód:
         if ($mode == 'quote')
         {
            $post_elozmeny = "&nbsp;<font color='navy'>V&aacute;lasz</font>" . '&nbsp;<a href=' . "http://weboldalad.tld/viewtopic.php?p=" . $post_data['quote_post_id'] . "#p" . $post_data['quote_post_id'] . '><font color="#800080">' . $post_data['quote_username'] . '&nbsp;(' . $post_data['quote_post_ssz'] . ')</font></a>&nbsp;<font color="navy">hozz&aacute;sz&oacute;l&aacute;s&aacute;ra</font>&nbsp;' . "\n";
         }
A "weboldalad.tld" szöveg helyére be kell helyettesíteni az oldalad nevét , például (akármi.hu).

Keresd ezt:
Kód:
            'topic_attachment'      => (isset($post_data['topic_attachment'])) ? (int) $post_data['topic_attachment'] : 0,
            'post_id'            => (int) $post_id,
            'topic_id'            => (int) $topic_id,

Beillesztés utána új sorba:
Kód:
            'topic_sorba'         => (int) $topic_sorba,
            'post_elozmeny'         => (string) $post_elozmeny,


Keresd ezt:
Kód:
         $post_author_name = ((!$user->data['is_registered'] || $mode == 'edit') && $post_data['username'] !== '') ? $post_data['username'] : '';

Beillesztés eléje új sorba:
Kód:
         if ($mode == 'reply')
         {
            $sql = 'UPDATE ' . TOPICS_TABLE . "
               SET topic_sorba = $topic_sorba
               WHERE topic_id = $topic_id";
            $db->sql_query($sql);
         }
         
         if ($mode == 'quote')
         {
            $sql = 'UPDATE ' . TOPICS_TABLE . "
               SET topic_sorba = topic_sorba + 1
               WHERE topic_id = $topic_id";
            $db->sql_query($sql);
         }

Keresd ezt:
Kód:
   if ($config['allow_bbcode'])
   {
      $message_parser->message = '[quote=&quot;' . $post_data['quote_username'] . '&quot;]' . censor_text(trim($message_parser->message)) . "[/quote]\n";
   }

Csere erre:
Kód:
   if ($config['allow_bbcode'])
   {
      $message_parser->message = '';
   }


Keresd ezt:
Kód:
      $message = $quote_string . $message;
      $message = str_replace("\n", "\n" . $quote_string, $message);
      $message_parser->message =  $post_data['quote_username'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n";
   }

Beillesztés utána új sorba:
Kód:
         $sql = 'SELECT forum_id, topic_sorba
         FROM ' . TOPICS_TABLE . '
         WHERE topic_id = ' . $topic_id;
      $result = $db->sql_query($sql);
      $topic_sorba = (int) $db->sql_fetchfield('topic_sorba');
      $f_id = (int) $db->sql_fetchfield('forum_id');
      $db->sql_freeresult($result);

      $forum_id = (!$f_id) ? $forum_id : $f_id;
      $topic_sorba = $topic_sorba + 1;

Mentés - visszatöltés a helyére!
--------
include/funcions_posting.php
--------
Keresd ezt:
Kód:
         $sql_data[POSTS_TABLE]['sql'] = array(
            'forum_id'         => ($topic_type == POST_GLOBAL) ? 0 : $data['forum_id'],

Beillesztés eléje új sorba:
Kód:
            $sql = 'SELECT forum_id, topic_sorba
            FROM ' . TOPICS_TABLE . '
            WHERE topic_id = ' . $data['topic_id'];            
            $result = $db->sql_query($sql);
            $topic_sorba = (int) $db->sql_fetchfield('topic_sorba');
            $db->sql_freeresult($result);

Keresd ezt:
Kód:
            'enable_sig'      => $data['enable_sig'],
            'post_username'      => (!$user->data['is_registered']) ? $username : '',
            'post_subject'      => $subject,

Beillesztés utána új sorba:
Kód:
            'post_ssz'         => (int) $topic_sorba,
            'post_elozmeny'      => $data['post_elozmeny'],

Mentés - visszatöltés a helyére!

--------
viewtopic.php
--------
Keresd ezt:
Kód:
   $rowset[$row['post_id']] = array(
      'hide_post'         => ($row['foe'] && ($view != 'show' || $post_id != $row['post_id'])) ? true : false,

      'post_id'         => $row['post_id'],
      'post_time'         => $row['post_time'],
      'user_id'         => $row['user_id'],
      'username'         => $row['username'],
      'user_colour'      => $row['user_colour'],
      'topic_id'         => $row['topic_id'],

Beillesztés utána új sorba:
Kód:
      'post_ssz'          => $row['post_ssz'],
      'post_elozmeny'      => $row['post_elozmeny'],

Keresd ezt:
Kód:
      'U_WARN'         => ($auth->acl_get('m_warn') && $poster_id != $user->data['user_id'] && $poster_id != ANONYMOUS) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&amp;mode=warn_post&amp;f=' . $forum_id . '&amp;p=' . $row['post_id'], true, $user->session_id) : '',

      'POST_ID'         => $row['post_id'],

Beillesztés utána új sorba:
Kód:
      'POST_SSZ'         => $row['post_ssz'],
      'ELOZMENY'         => $row['post_elozmeny'],

Mentés - visszatöltés a helyére!

--------
style/kinézeted/template/viewtopic_body.html (prosilver stílusba)
Ezek már csak tippek, itt már oda teszed, ahol szeretnéd megjeleníteni (persze az általános HTML szabályok betartásával).
--------
Keresd ezt: ez csak egy tipp, mert kinézet függő, hogy hova érdemes tenni!
Kód:
               <!-- IF postrow.U_QUOTE --><li class="quote-icon"><a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>{L_REPLY_WITH_QUOTE}</span></a></li><!-- ENDIF -->

Beillesztés utána új sorba:
Kód:
               <li class="none"><span style="font-size: 12px; font-weight: bold;">&nbsp;&nbsp;{postrow.POST_SSZ}&nbsp;&nbsp;</span></li>

Keresd ezt: ez csak egy tipp, mert kinézet függő, hogy hova érdemes tenni!
Kód:
         <p class="author"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF -->{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> &raquo; {postrow.POST_DATE} </p>

Beillesztés utána új sorba:
Kód:
         <!-- IF postrow.ELOZMENY != '' -->
            <span>{postrow.ELOZMENY}</span>&nbsp; &nbsp;
         <!-- ENDIF -->
Ennek az IF felételnek akkor van jelentősége, ha a megjelenítéshez valamilyen CSS "class" osztályú megoldást (is) használunk. Így az általunk készített "box", vagy "button", vagy egyéb stílus-környezet nem fog megjelenni, ha nincs megjelenítendő tartalom, tehát annak a hozzászólásnak nem volt "előzménye", csak egy egyszerű új hozzászólás.
Mentés - visszatöltés a helyére!


-------------------------------------------------------------------

Ha ezzel megvagy, akkor (egyenlőre) mindegyik hozzászólásnál "0"-nak kell lennie.

Mivel nincs jó, és egyszerű ötletem, hogy a régi hozzászólásokat hogy lehetne programból utólag besorszámozni, marad a manuális babrálás! :D

De nem szükségszerű megcsinálni, mivel a post_id-ken alapul a keresés, és a hozzászólások sorszámozása mindössze a látvány funkcióját töltik be!
Ha megvan a szerkesztett fájlok feltöltése és a cache ürítése ( AVP - Általános fül - középen Gyorsítótár kiürítése - Futtatás most - Igen - vissza a fórum főoldalára - böngészőben egy refresh (Ctrl - F5, vagy Ctrl - R), és már jónak is kell lennie ), onnantól már élnek a sorszámok, persze mindegyik "0" lesz, és erről indul a sorszámozás, de az új hozzászólások már megkapják az új sorszámokat.

Aki viszont szeretné, hogy az egész fórumba egységesen, rendesen jelenjenek meg a sorszámok, és nem a 24. hozzászólástól kezdődjön a sorszámozás, az nekik is állhat a lentebb leírtak alapján átsorszámozni a hozzászólásokat.

phpMyAdmin - megnyitod az adatbázist, kiválasztod a phpbb_posts táblát, klikk a Tartalomra.
A megjelenő táblán klikkelj a topic_id oszlopra, így az szerint rendeződik a tábla.
A lényege, hogy egyező topic_id számok egy bizonyos témát jelölnek, és adott esetben azért van több, mert ott hozzászólások is vannak, nem csak témanyitó.
A hozzászólások sorrendjét úgy tudod megállapítani, hogy az azonos topic_id számú sorokban az előtte lévő post_id oszlopban lévő számok közül a legkiesebb értékű az első hozzászólás, és az maradjon a post_ssz szerinti "0". A post_id növekvő értéke szerint lehet a többit besorszámozni. Szerkesszed az abban a sorban lévő Inline szerkesztés ikonra klikkelve, és a post_ssz oszlop értékét írd át mindig eggyel nagyobb számra. Ne felejtsed el soronként mindegyik módosítás után a megfelelő sor elején a Mentés ikonra klikkelni! Ezzel haladjál addig, amíg az azonos topic_id számok el nem fogynak.
Amikor megvan, fel kell írni egy papírra a topic_id számot, és az utolsó, legnagyobb post_ssz számot.
Ezután keressél újabb ismétlődő topic_id számot, és a folyamat ugyanaz.
Arra figyelj, ha esetleg lapozni kell, mert a következő oldalon lehet még ugyanolyan topic_id szám.

Amikor ez megvan, meg kell nyitni a phpbb_topics táblát, és klikkelni a Tartalomra, majd a topic_id oszlopra, hogy sorba rendeződjön.
Ezután a felírt topic_id számot sorba ki kell keresni, és a hozzá tartozó hozzászólás értéket be kell írni a topic_sorba oszlop megfelelő mezőjébe.
Itt se felejtsed el soronként mindegyik módosítás után a megfelelő sor elején a Mentés ikonra klikkelni!

Tudom, hogy ez babra munka, de egyenlőre jobbat nem tudok kitalálni erre, és legalább egy topiknál, ahol több hozzászólás van, érdemes megcsinálni, hogy látszódjon, jó lesz, vagy nem.

Mint az oldalon is látható, jól működik, (sőt ki is emeltem az első hozzászólást, hogy látszódjon, az sem zavarja. Ugyanígy nem befolyásolja az sem, hogy a hozzászólások sorrendje időben csökkenő, vagy növekvő sorrendben van beállítva.

DEMO itt alul - hozzászólások száma a hozzászólásoknál a jobb felső sarokban!

Természetesen egy régebbi hozzászólás törlésénél hiányozni fog annak az értéke, de az index.hu oldalon is így működik, ezért meglesz ennek is az "igazi feelingje". :)

.

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:15

Teszt hozzászólásban reagálok a témanyitó hozzászólásra.

A témanyitó hozzászólás mindig a "0".dik hozzászólás, akár ki van emelve, akár nincsen. :)

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:29

Csak egy sima hozzászólás

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:29

Még egy sima hozzászólás ........... :)

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:30

Válaszolok egy hozzászólásra .... :mrgreen: :mrgreen:

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:31

Megint egy sima hozzászólás ...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:31

És megint egy sima hozzászólás ...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:31

Na még egy sima hozzászólás ...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:32

Válaszolok a 4. hozzászólásra! :mrgreen:

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2014.07.24. 11:35

És ismételten egy sima hozzászólás :lol:

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.02. 12:47

Szia Ragadozó!

Ez a hozzászólás sorszámozás engem is érdekele.
(Előrebocsátom, kezdő vagyok - bár nem idegen a téma)

Saját (fizetős) fórumot hoztam létre: phpBB 3.0.13-PL1 van telepítve.

Fel tudnám vinni az én verziómra?
Nem tudom, hogy mivel lehet ezeket a módosításokat megcsinálni?

Van nekem egy NotePad++ -om, az jó az update-oláshoz?

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.02. 12:49

Próba

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.02. 12:50

Csatolva a 10-hez?

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.02. 12:53

Tényleg Jóóó!

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.02. 12:57

A sablon subsilver2 vagy prosilver lenne...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 18:30

Hablegeny írta:Ma is beírtam ide

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:17

Kipróbálom

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:19

Köszöntelek ebben a csodában...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:20

Most idézlek

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:21

:D :) ;)
Válasz az előzőre

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:22

Rosszul írtam a levélben, a "két lufi" az "Idézet"...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:24

Picipolgár írta:Így lehet igaziból idézni (ha írtál volna valamit:-)


Miccóssz?

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:25

Az imént csak többszöri "elküld"-re volt hajlandó valóban elmenni...
Most sincs másként...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:27

A grafika kiváló.

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:27

Nekem megy elsőre

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:28

Láttad a "lájkoló" gombot?

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:31

Itt nem érdemes a Csökkenő" gombot használni, mert a szerző úgy állította be az oldalt, hogy a Leírás, mindig felül van.

Na valami hasonlót terveltem ki, persze megtartva a mi "szolid" külsőnket

:-)

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:32

Most nekem is....
A lehetőségeket nem próbálnám, azok ismerősek, nem is mondanak újat....
Szimpatikus, végül is minden van, ami kell.
Egyelőre nem jöttem rá, miként kell végleg csökkenőre állítani a sorszámokat, minden hsz után visszafordulnak...
(Basszus, most megint nem ment el elsőre)

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:33

Ez csak erre a topikra vonatkozik nyilván...
(A sorrend)

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:35

Nekem tetszik ez a külső....

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:36

Oké!

Köszönöm a segítséget, szerintem jó lesz ez, már egy csomó programrészt átírtam, elfáradtam...találkozunk holnap hajnalban.
Jó éjt!
:-)

Most nekem sem indult elsőre, úgy tudom, van valami állítási lehetőség a "várakoztatás" megszüntetésére...

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:38

Küldéspróba
Lehet, hogy valóban várakoztatás lehet...
Jó pihenést!
A hozzászólást 1 alkalommal szerkesztették, utoljára Picipolgár 2015.03.06. 19:39-kor.

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:38

Még valami: ha rákattintasz a sárga csíkra, akkor odamegy arra sorszámra, ami a sárgában van.

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:41

Azt gondolom, hogy az eddigiekhez viszonyítva, igen felhasználóbarát lesz....

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:42

Igen, ebben bízom...

Csáó!

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.06. 19:42

Lépek én is.

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.07. 20:02

Új hsz

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.07. 20:04

Ez is új

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.07. 20:12

Még egy új

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.07. 20:13

37.-re!

Re: Egyedi hozzászólás sorszámozás, és Idézés helyett Előzmé

2015.03.07. 20:14

1.-re