[3.2] Startseite

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
sv3n
Mitglied
Beiträge: 163
Registriert: 25.01.2015 19:31

Re: [3.2] Startseite

Beitragvon sv3n » 09.02.2018 19:14

Lehrling hat geschrieben:Ich wollte dir eigentlich ein Script zur Verfügung stellen, habe aber leider gemerkt, dass das Ganze unter 3.2.x nicht mehr läuft. Mal schauen, ob ich am Wochenende noch mal Zeit zum Basteln habe.

Das wäre nett von dir.
Lehrling hat geschrieben:Unter 3.1.9 lief das Script noch.

Kannst Du mir das mal bitte zukommen lassen?

Lehrling
Supporter
Supporter
Beiträge: 2987
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: [3.2] Startseite

Beitragvon Lehrling » 09.02.2018 22:19

Das Script liegt hier. http://www.forumstyling.bplaced.net/vie ... p=410#p410
Es läuft unter 3.2.x. Du musst zuerst die php-Datei erstellen. So wie sie jetzt konfiguriert ist, muss sie eine Ebene über dem Forumsordner liegen. Näheres findest du im Artikel. Danach musst du noch eine HTML-Seite erstellen und im Ordner template des Styles prosilver abspeichern.
Danach den Cache leeren. Ich hoffe, es klappt.

Es war übrigens kein Bug im Script, sondern nur ein kleiner Tippfehler. Die Scripte laufen also auch problemlos unter 3.2.x

sv3n
Mitglied
Beiträge: 163
Registriert: 25.01.2015 19:31

Re: [3.2] Startseite

Beitragvon sv3n » 10.02.2018 01:15

Kannst du mir mal bitte ein Demo zeigen?

Bei mir sieht es ganz komisch aus. Das Forum liegt im Verzeichniss /forum/ so habe ich es in der home.php angegeben. Wenn ich nun die home.php öffne bleibt die Seite weiß, selbst wenn ich über das ACP den Cach geleert habe.
Wenn ich jetzt das /forum/ aus der home.php nehme also ./'; sieht die Seite so aus siehe Bild.
(und meine Texte die erscheinen sind nicht verlinkt. siehe Bilder
Bild1 => [ externes Bild ]
Bild2 => [ externes Bild ] hier kann man sehen das die Texte nicht verlinkt sind
Bild3 => [ externes Bild ] hier kann man sehen das die Texte verlinkt sind

meine home.php

Code: Alles auswählen

<?php
/*
* home.php
* Description: example file for displaying latest posts and topics
* by battye (for phpBB.com MOD Team)
* September 29, 2009
*/

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
/* create_where_clauses( int[] gen_id, String type )
* This function outputs an SQL WHERE statement for use when grabbing
* posts and topics */

function create_where_clauses($gen_id, $type)
{
global $db, $auth;

    $size_gen_id = sizeof($gen_id);

        switch($type)
        {
            case 'forum':
                $type = 'forum_id';
                break;
            case 'topic':
                $type = 'topic_id';
                break;
            default:
                trigger_error('No type defined');
        }

    // Set $out_where to nothing, this will be used of the gen_id
    // size is empty, in other words "grab from anywhere" with
    // no restrictions
    $out_where = '';

    if( $size_gen_id > 0 )
    {
    // Get a list of all forums the user has permissions to read
    $auth_f_read = array_keys($auth->acl_getf('f_read', true));

        if( $type == 'topic_id' )
        {
            $sql     = 'SELECT topic_id FROM ' . TOPICS_TABLE . '
                        WHERE ' .  $db->sql_in_set('topic_id', $gen_id) . '
                        AND ' .  $db->sql_in_set('forum_id', $auth_f_read);

            $result     = $db->sql_query($sql);

                while( $row = $db->sql_fetchrow($result) )
                {
                        // Create an array with all acceptable topic ids
                        $topic_id_list[] = $row['topic_id'];
                }

            unset($gen_id);

            $gen_id = $topic_id_list;
            $size_gen_id = sizeof($gen_id);
        }

    $j = 0;   

        for( $i = 0; $i < $size_gen_id; $i++ )
        {
        $id_check = (int) $gen_id[$i];

            // If the type is topic, all checks have been made and the query can start to be built
            if( $type == 'topic_id' )
            {
                $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
            }

            // If the type is forum, do the check to make sure the user has read permissions
            else if( $type == 'forum_id' && $auth->acl_get('f_read', $id_check) )
            {
                $out_where .= ($j == 0) ? 'WHERE ' . $type . ' = ' . $id_check . ' ' : 'OR ' . $type . ' = ' . $id_check . ' ';
            }   

        $j++;
        }
    }

    if( $out_where == '' && $size_gen_id > 0 )
    {
        trigger_error('A list of topics/forums has not been created');
    }

    return $out_where;
}
$search_limit = 15;

    $forum_id = array(1,2,3,4,5);
    $forum_id_where = create_where_clauses($forum_id, 'forum');

    $topic_id = array();
    $topic_id_where = create_where_clauses($topic_id, 'topic');
   $topics = 'SELECT * FROM ' . TOPICS_TABLE . '
            ' . $forum_id_where . '
              AND topic_status <> ' . ITEM_MOVED . '
              AND topic_visibility = 1
            ORDER BY topic_id DESC';

   $topics_result = $db->sql_query_limit($topics, $search_limit);

      while( $topics_row = $db->sql_fetchrow($topics_result) )
      {
         $topic_title       = $topics_row['topic_title'];
         $topic_author       = get_username_string('full', $topics_row['topic_poster'], $topics_row['topic_first_poster_name'], $topics_row['topic_first_poster_colour']);
         $topic_date       = $user->format_date($topics_row['topic_time']);
         $topic_last_post    = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topics_row['forum_id'] . '&amp;t=' . $topics_row['topic_id'] . '&amp;p=' . $topics_row['topic_last_post_id']) . '#p' . $topics_row['topic_last_post_id'];
         $topic_last_author    = get_username_string('full', $topics_row['topic_last_poster_id'], $topics_row['topic_last_poster_name'], $topics_row['topic_last_poster_colour']);
         $topic_link       = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $topics_row['forum_id'] . '&amp;t=' . $topics_row['topic_id']);

         $template->assign_block_vars('announcements', array(
         'TOPIC_TITLE'       => censor_text($topic_title),
         'TOPIC_AUTHOR'       => $topic_author,
         'TOPIC_DATE'       => $topic_date,
         'TOPIC_LAST_POST'    => $topic_last_post,
         'TOPIC_LAST_AUTHOR' => $topic_last_author,
         'TOPIC_LINK'       => $topic_link,
         ));
      }
page_header('External page');

    $template->set_filenames(array(
        'body' => 'external_body.html'
    ));

    page_footer();

und dann eine external_body.html erstellt

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->


<!-- BEGIN announcements -->
{announcements.TOPIC_TITLE} &bull;
<!-- END announcements -->

<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->

Lehrling
Supporter
Supporter
Beiträge: 2987
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: [3.2] Startseite

Beitragvon Lehrling » 10.02.2018 07:37

Ich bin gerade etwas verwirrt. Wenn du möchtest, dass auf der Startseite des Forums (index.php) die neusten Themen angezeigt werden, brauchst du diese Extension: https://www.phpbb.com/customise/db/exte ... _topics_2/
Wenn du möchtest, dass die neusten Themen auf einer externen Seite angezeigt werden (deiner Homepage z.B.) brauchst du das Script, aber dann sollte die Seite außerhalb der Forumsdateien liegen (also in einem übergeordneten Ordner). Damit Links erscheinen, müsste die external_body.html so aussehen:

Code: Alles auswählen

<!-- BEGIN announcements -->
<a href="{announcements.TOPIC_LINK}">{announcements.TOPIC_TITLE}</a> &bull;
<!-- END announcements -->

Diese dann per <?php include ("home.php"); ?> in die Homepage (muss eine php-Datei sein) einbinden.
Die Homepage könnte so aussehen:

Code: Alles auswählen

<!doctype html>
<head>
  <meta charset="utf-8">
  <title>Meine externe Seite</title>
</head>
<body>
  Text
<?php include ("home.php"); ?>
Text
</body>
</html>

Und noch eine Kleinigkeit: ändere in dem Script das page_footer(); in $template->display('body'); um.

sv3n
Mitglied
Beiträge: 163
Registriert: 25.01.2015 19:31

Re: [3.2] Startseite

Beitragvon sv3n » 10.02.2018 11:36

Danke dir trotzdem nochmal für deine Hilfe.
Aber so wie in Bild 2 zu sehen, kann ich das nicht machen?

Lehrling
Supporter
Supporter
Beiträge: 2987
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: [3.2] Startseite

Beitragvon Lehrling » 10.02.2018 11:54

In dem Falle muss deine php-Seite im Hauptverzeichnis des Forums liegen und im php-Script muss die Pfadangabe wie folgt lauten:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';

Die HTML-Seite sollte dann so aussehen:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

<!-- BEGIN announcements -->
{announcements.TOPIC_TITLE} &bull;
<a href="{announcements.TOPIC_LINK}">{announcements.TOPIC_TITLE}</a> &bull;
<!-- END announcements -->

<!-- INCLUDE overall_footer.html -->

Das Layout musst du dann noch anpassen.
Cache leeren nicht vergessen.

sv3n
Mitglied
Beiträge: 163
Registriert: 25.01.2015 19:31

Re: [3.2] Startseite

Beitragvon sv3n » 10.02.2018 21:22

Ja jetzt geht es so einigermassen.
Ich musste nur aus diesem Code:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

<!-- BEGIN announcements -->
{announcements.TOPIC_TITLE} &bull;
<a href="{announcements.TOPIC_LINK}">{announcements.TOPIC_TITLE}</a> &bull;
<!-- END announcements -->

<!-- INCLUDE overall_footer.html -->

{announcements.TOPIC_TITLE} &bull; das herausnehmen. Denn ich hatte das Thema stehen und dann nochmal das Thema als Link.

Wenn ich jetzt das jetzt in einer Tabelle haben will, und die Themen unter einander wie und wo mache ich die Einstellungen?
Kann ich der Tabelle dann noch eine Überschrift geben, wenn Ja wo/wie?

Vielleicht hilfst Du mir nochmal. Und sorry das ich dich so nerve... :-?

Lehrling
Supporter
Supporter
Beiträge: 2987
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: [3.2] Startseite

Beitragvon Lehrling » 11.02.2018 07:18

Eine Tabelle wird schwierig. Du kannst es als Liste darstellen.
Probier's mal damit für die Datei external_body.html.

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->
<div style="margin:5px;font-size:16px;">
<h3>{L_FEED_NEWS}</h3>
<!-- BEGIN announcements -->

<ul style="list-style:none;padding:5px;padding-left:0px;"><li><a href="{announcements.TOPIC_LINK}">{announcements.TOPIC_TITLE}</a></li></ul>
<!-- END announcements -->

<!-- INCLUDE overall_footer.html -->

Die Formatierungen unter style="... bitte individuell anpassen.
Und ganz WICHTIG noch: bei einem Update darfst du die beiden Dateien natürlich auf keinen Fall löschen. Beim manuellen Update würdest du ja z.B. den Ordner prosilver komplett löschen und durch den aktuellen ersetzen. Das darfst du bei dir dann nicht machen, sonst ist die external_body.html verloren.

sv3n
Mitglied
Beiträge: 163
Registriert: 25.01.2015 19:31

Re: [3.2] Startseite

Beitragvon sv3n » 11.02.2018 19:34

Hey super hat alles geklappt.
Wenn ich das jetzt noch so hinbekommen kann wie hier auf phpbb.de
Links die Info zum Forum und rechts eine Box mit den News..
( Links soll stehen:
Willkommen auf phpBB.de
Herzlich willkommen beim deutschen phpBB-Support.. bla blabla)

Rechts dann die News Box.
(phpBB.de News.. bla bla bla)

Ich will es so haben das man nicht viel Scrollen muss, wegen der Übersicht der Seite. :P

Lehrling
Supporter
Supporter
Beiträge: 2987
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: [3.2] Startseite

Beitragvon Lehrling » 12.02.2018 07:46

Du kannst mit Containern und float:left; und float:right; arbeiten.
Z.B. so:

Code: Alles auswählen

<!-- INCLUDE overall_header.html -->

<div style="width:60%;float:left;">
<h1>Überschrift</h1>
dein Text steht hier
</div>

<div style="width:35%;float:right;font-size:16px;">
<h3>{L_FEED_NEWS}</h3>
<!-- BEGIN announcements -->
<ul style="list-style:none;padding:5px;padding-left:0px;"><li><a href="{announcements.TOPIC_LINK}">{announcements.TOPIC_TITLE}</a></li></ul>
<!-- END announcements -->
</div>

<!-- INCLUDE overall_footer.html -->


Zurück zu „Extension Bastelstube“