Własny panel na forum

Forum poświęcone skryptom, językom programowania, serwerom i hostingowi, domenom itp.
Mlody2900
Posty: 8
Rejestracja: 06 stycznia 2015, 00:07

Własny panel na forum

Post autor: Mlody2900 » 18 listopada 2015, 11:12

Witam
Chciałbym stworzyć panel na forum w języku PHP którym będę mógł zarządzać z poziomu odpowiedniej podstrony. Wiem jak to stworzyć to w języku PHP i umiem to wykonać ale nie znam jeszcze skryptu PHPBB. Chodzi mi o to gdzie umieścić pliki oraz jak załadować panel w odpowiednim miejscu na stronie głównej forum. Przepraszam jeżeli pytanie jest napisane trochę niezrozumiale.

Aviator
Administrator
Posty: 2089
Rejestracja: 07 czerwca 2011, 22:14
Lokalizacja: ZS

Re: Własny panel na forum

Post autor: Aviator » 19 listopada 2015, 13:28

Zależy do czego taki panel ma służyć, czy ma pobierać jakieś informacje z forum itp.
Za mało podałeś konkretów żeby cokolwiek poradzić.
-=Jeżeli w moim poście brakuje znaków diakrytycznych, oznacza to, że posta wyklepałem przez telefon=-

Mlody2900
Posty: 8
Rejestracja: 06 stycznia 2015, 00:07

Re: Własny panel na forum

Post autor: Mlody2900 » 19 listopada 2015, 18:05

Chodzi mi o panel za ile odbędzie się kolejne zebranie. Odliczanie czasu i kilka informacji w panelu.
Chce aby panel był edytowany z poziomu podstrony tylko dla określonej grupy na forum. Czyli muszę stworzyć podstronę i panel.
Myślę że panel nie będzie pobierał dużo danych z forum a możliwe że wcale nie będzie ponieważ wszystkie dane będę pobierał z utworzonych kolumn w bazie.

usesefar
Posty: 5
Rejestracja: 02 lutego 2016, 18:29
Kontakt:

Re: Własny panel na forum

Post autor: usesefar » 05 lutego 2016, 19:49

upss chyba bedzie ciezko mało chetnych do pomocy ziomek

wicy
Posty: 168
Rejestracja: 22 października 2010, 10:28

Re: Własny panel na forum

Post autor: wicy » 05 lutego 2016, 21:45

Żeby taka zabawa miała ręce i nogi i była zgodna z polityką 3.1.x, należałoby napisać samemu rozszerzenie od nowa, zgodnie z regułami.
W starym 3.0.x ideą modyfikacji było wstawianie wstawek bezpośrednio w kod php i html forum.
Jeśli nie chcesz/nie umiesz napisać rozszerzenia, zrób wstawki na starych zasadach, mając jednak na względzie ew. problemy z późniejszymi aktualizacjami (ja wszakże zostawiłem wstawki w index.php i po dwóch, czy trzech aktualizacjach już na 3.1.x nie zauważyłem problemów).
Zacznij od viewforum_body.html i wstaw za pierwszą linią

Kod: Zaznacz cały

<!-- INCLUDE overall_header.html -->
link do swojej templatki, umieszczonej w styles\twój_styl\templates, np.

Kod: Zaznacz cały

<!-- INCLUDE moja_strona.html -->
Dane przesyłane do tej templatki mogą być "formowane" w głównym skrypcie php (viewforum.php) i przekazane do niej w taki sam sposób jak do templatki viewforum_body.html, czyli np.
$template_html = 'moja_strona.html';
/../
$template->assign_vars(array(
'S_POKAZ_PROFIL' => false,
'S_UZYTKOWNIK' => false,
'S_SZUKAJ' => false,
));
/../
Jeśli chcesz mogę Ci podesłać na maila przykład skryptu stojącego standalone "obok" forum, korzystającego z bazy (w części forum, w części swojej), wyświetlającego strony w stylu forum.
Projekt zarzuciłem po wejściu 3.1.x, nie był "wszyty" w nowe forum i nie wiem jak się na nowym zachowa. Na starym 3.0.x działał bez problemu.
_________
forgen.pl

wicy
Posty: 168
Rejestracja: 22 października 2010, 10:28

Re: Własny panel na forum

Post autor: wicy » 06 lutego 2016, 10:26

Aktualizowałem forum z 3.1.5 do 3.1.7 i oczywiście moje modyfikacje kodu szlag trafił. Musiałem znów ręcznie doklejać utracone kawałki, więc na bieżąco wiem jak tworzy się panel :D
1) W pliku index.php przelatuję bazę wybierając interesujące mnie dane. Tu są to ostatnie tematy z wybranych forów, ale w dwóch kolumnach. W pierwszej kolumnie mogą być wszystkie fora, w drugiej kolumnie, tylko 1-2 wybrane:

Kod: Zaznacz cały

// generuje ostatnie tematy
$sql = 'SELECT forum_id, topic_title, topic_views, topic_last_poster_id, topic_last_poster_name, topic_poster, topic_first_poster_name, topic_last_post_id, topic_last_post_time FROM ' . TOPICS_TABLE . ' WHERE forum_id NOT IN (0,2,5,7,8,9,14,40,42,43,68,70,75,76,77,78,79,80,81,98,99,100,101,102,103,104,105,106,107) ORDER BY topic_last_post_time DESC LIMIT 0 , 10';
$result = $db->sql_query($sql);
$i=0;
while($row = mysql_fetch_array($result))
{
  $sql1 = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE forum_id = '.$row['forum_id'];
  $result1 = $db->sql_query($sql1);
  $row['forum_name'] = mysql_result($result1, 0);
  $db->sql_freeresult($result1);
  $out_forum = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=".$row['forum_id']);
  $out_forum = '[<a href="'.$out_forum.'" target="_blank">'. $row['forum_name'] .'</a>] ';
  $out_title = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=".$row['forum_id']."&p=".$row['topic_last_post_id']."#p".$row['topic_last_post_id']);
  $out_title = '<a class ="lastsubject" href="'.$out_title.'" target="_blank">'. $row['topic_title'] .'</a>';
  $out_poster = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u='. $row['topic_last_poster_id']);
  $out_poster = ' [<a class ="lastsubject" href="'.$out_poster.'" target="_blank">'. $row['topic_last_poster_name'] .'</a>]';
  $out_post_date = date("d-m-Y, H:i",$row['topic_last_post_time']);

  //$template->assign_block_vars('temat', array(
  $temp1[$i] = array(
  'OUT_FORUM' => $out_forum,
  'OUT_TITLE' => $out_title,
  'OUT_POSTER' => $out_poster,
  'OUT_DATA' => $out_post_date,
  );
  
  $i++;
}
$db->sql_freeresult($result);

// generuje ostatnie tematy
$sql = 'SELECT forum_id, topic_title, topic_views, topic_last_poster_id, topic_last_poster_name, topic_poster, topic_first_poster_name, topic_last_post_id, topic_last_post_time FROM ' . TOPICS_TABLE . ' WHERE forum_id IN (5,7,8,9,98,99,100,101,102,103) ORDER BY topic_last_post_id DESC LIMIT 0 , 10';
$result = $db->sql_query($sql);
$i=0;
while($row = mysql_fetch_array($result))
{
  $sql1 = 'SELECT forum_name FROM ' . FORUMS_TABLE . ' WHERE forum_id = '.$row['forum_id'];
  $result1 = $db->sql_query($sql1);
  $row['forum_name'] = mysql_result($result1, 0);
  $db->sql_freeresult($result1);
  $out_forum = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=".$row['forum_id']);
  $out_forum = '[<a href="'.$out_forum.'" target="_blank">'. $row['forum_name'] .'</a>] ';
  $out_title = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=".$row['forum_id']."&p=".$row['topic_last_post_id']."#p".$row['topic_last_post_id']);
  $out_title = '<a class ="lastsubject" href="'.$out_title.'" target="_blank">'. $row['topic_title'] .'</a>';
  $out_poster = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&u='. $row['topic_last_poster_id']);
  $out_poster = ' [<a class ="lastsubject" href="'.$out_poster.'" target="_blank">'. $row['topic_last_poster_name'] .'</a>]';
  $out_post_date = date("d-m-Y, H:i",$row['topic_last_post_time']);

  $temp2[$i] = array(
  'OUT_FORUM' => $out_forum,
  'OUT_TITLE' => $out_title,
  'OUT_POSTER' => $out_poster,
  'OUT_DATA' => $out_post_date,
  );
  $i++;
}
$db->sql_freeresult($result);
Nie jestem biegły w php, więc kod może niezbyt piękny - może dałoby się to "wyłuskać" w jednym zapytaniu do bazy.
2) Wybieram sobie 10 pierwszych tematów i formuję zmienne wysyłane do templatki:

Kod: Zaznacz cały

for($i=0;$i<10;$i++)
{
  
  $template->assign_block_vars('temat', array(
  'OUT_FORUM' => $temp1[$i]['OUT_FORUM'],
  'OUT_TITLE' => $temp1[$i]['OUT_TITLE'],
  'OUT_POSTER' => $temp1[$i]['OUT_POSTER'],
  'OUT_DATA' => $temp1[$i]['OUT_DATA'],
  'OUT1_FORUM' => $temp2[$i]['OUT_FORUM'],
  'OUT1_TITLE' => $temp2[$i]['OUT_TITLE'],
  'OUT1_POSTER' => $temp2[$i]['OUT_POSTER'],
  'OUT1_DATA' => $temp2[$i]['OUT_DATA'],
  ));
}
3) W pliku index_body.html, przed <!-- INCLUDE forumlist_body.html --> wstawiam

Kod: Zaznacz cały

<div class="forumbg forumbg-table">
  <div class="inner">
    <table class="table1" show-header responsive>
      <thead>
        <tr>
          <th>Temat</th>
          <th>Autor</th>
          <th>Temat</th>
          <th>Autor</th>
        </tr>
      </thead>
      <tbody>
        <!-- BEGIN temat -->
          <tr class="bg1">
            <td class="forum1">{temat.OUT_TITLE}</br>w: {temat.OUT_FORUM}</td>
            <td class="poster1">{temat.OUT_POSTER}</br>{temat.OUT_DATA}</td>
            <td class="forum1">{temat.OUT1_TITLE}</br>w: {temat.OUT1_FORUM}</td>
            <td class="poster1">{temat.OUT1_POSTER}</br>{temat.OUT1_DATA}</td>
          </tr>
        <!-- END temat -->
      </tbody>
    </table>
  </div>
</div>
I mam swój kawałek panela na stronie głównej. Mógłbym jeszcze wyrzucić kod html do osobnego pliku i wstawić go przez <!-- INCLUDE moj_plik.html -->
To najprostszy i niezbyt ładny sposób.
_________
forgen.pl

Tymbark_0
Posty: 4
Rejestracja: 07 lutego 2016, 15:38
Kontakt:

Re: Własny panel na forum

Post autor: Tymbark_0 » 07 lutego 2016, 23:19

Ciezka sprawa, dalej tego nie rozgryzles? To daj znac na pw, cos pomyslimy i moze sie uda :)

wicy
Posty: 168
Rejestracja: 22 października 2010, 10:28

Re: Własny panel na forum

Post autor: wicy » 08 lutego 2016, 18:07

A ja rozgryzłem głębiej :D
Przerobiłem wstawki na pierwsze, własne rozszerzenie pokazujące ostatnie posty w dwóch różnych grupach forów ;)

Podpowiem, że do robienia wstawek na stronie najlepszym poradnikiem są proste rozszerzenia. Polecam "Copyright" wstawiający w stopkę prosty tekst. Na tej bazie można już próbować zdziałac coś więcej.
_________
forgen.pl

ODPOWIEDZ