• Wie müsste eine Abfrage in php lauten, wenn sie in deutsch so aussehen würde:
    Wenn Kategorie viewforum.php?f=2, dann irgenwelchen Text
    Ich möchte das in die viewforum.php mehrmals einbinden, um auf den Forenunterseiten individuelle Texte einbinden zu können.

    Ich habe leider von php keine Ahnung :)

  • Hm, kommt drauf an.

    Das "Kategorie viewforum.php?f=2" ist halt nicht wirtlich definiert.
    Möglich wäre hier, wenn Parameter "f=2" oder wenn URL = "viewforum.php?f=2" Bei der URL darf dann so aber nichts mehr hinten dran kommen. Oder wenn in der URL "viewforum.php?f=2" vorkommt, also noch was anderes danach sein kann. Also kommt hier wirklich nur drauf an, wie diese Bedingung genau zu verstehen ist und welche Werte sie haben kann.

    Per Parameter f

    PHP
    if(isset($_GET['f']) AND $_GET['f'] == 2)
    {
        dann mach was
    }


    oder per URL (exakt)

    PHP
    if($_SERVER['REQUEST_URI'] == '/viewforum.php?f=2')
    {
        dann mach was
    }


    oder eben anders ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Also wenn das hier um ein Forum geht, so wie ich das noch kenne und "f" für Forum steht und die 2 die Forenid ist, dann müsste der erste Weg sicher funktionieren, denn da ist egal welche Parameter noch danach oder davor kommen, der prüft nur "f".

    Und, vergesse ich immer....

    Dieses "dann mach was" verursacht so einen Fehler. Entweder innerhalb der Klammern mit php weitermachen, also mit echo "dann mach was"; oder PHP beenden und wieder öffnen.

    PHP
    if(isset($_GET['f'] ) AND $_GET['f'] == 2)
    {
        echo "hier ist PHP aktiv. Textausgaben nur mit echo";
    }
    PHP
    if(isset($_GET['f'] ) AND $_GET['f'] == 2)
    {
        ?>
    
        Hier ist PHP nicht mehr aktiv, normale Texteingaben funktionieren.
    
        <?php
    }

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Na, wenn es 20 ist, dann einfach die 2 ersetzen.

    $_GET['f'] == 2 bedeutet ja nur, 'wenn Parameter "f" gleich 2 ist'. Da kann jede andere Ziffer dort stehen.


    $_GET['f'] == 2 greift jedenfalls nur bei 2, daher auch das == davor. Kannst auch sagen größer 2 (> 2) oder kleiner (< 2).

    Kannste auch kombinieren mit mehreren anderen (id 2, 20 und 40)
    if(isset($_GET['f'] ) AND ( $_GET['f'] == 2 OR $_GET['f'] == 20 OR $_GET['f'] == 40 ))

    Oder Bereich, etwa "zwischen 5 und 15" oder Angaben wie "alles außer 3"

    Ist im Grunde nur Mathematik. Damals mit X und Y und genau das X ist hier das $_GET['f']

    Gibt also

    == gleich
    >= größergleich
    <= kleinergleich
    < kleiner
    > größer
    != ungleich

    Und dann die Verbindungen mit AND bzw. OR. So lässt sich eigentlich alles Abbilden, was logische Zusammenhänge hat.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • danke, ich möchte nämlich bei ID 2 was anderes schreiben, als bei ID 20
    So ist es jetzt klar und mal schauen, ob es funktioniert.
    Ich melde mich dann, wenn ich es probiert habe

  • Ok, dann sind das zwei Blöcke

    PHP
    if(isset($_GET['f']) AND $_GET['f'] == 2)
    {
        echo "hier der eine Text";
    }
    if(isset($_GET['f']) AND $_GET['f'] == 20)
    {
        echo "hier der andere Text";
    }

    Ist so vom Stil her nicht ganz ok, aber funktioniert und ist die einfachste Variante.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Habs doch gleich mal probiert.
    Die Abfrage an sich funktioniert, wird also nur in dem Forum mit der jeweiligen ID angezeigt, aber irgendwie habe ich noch nicht die richtige Stelle gefunden, wo ich den Code einbinden muss

  • Aho, so einfach wie gedacht geht das nicht. Das ist ja nur der Core. Darin enthalten sind die Datenverarbeitungen, aber keine Datenausgaben. Wenn Du da Daten ausgibst, dann erzeugt das entweder einen Fehler oder die stehen wohl ganz oben links auf der Seite. In der Datei kannst Du nicht positionieren, nur Daten erfassen und verarbeiten, nicht anzeigen.

    Dafür ist unten der Bereich "
    // Send vars to template "

    Also hier werden dann die verarbeiten Daten an Variablen für das Template übergeben. Im Template werden die Variablen dann platziert, da wo sie hin sollen.

    Vielleicht kann man da was trixen, aber dazu muss ich die Seite kenne und die Position, wo der Text hin soll.

    Wobei das aber eigentlich die falsche Stelle ist, das müsste eigentlich alles direkt ins Template. Sind ja keine Datenbearbeitungen, sondern nur Textergänzungen. Und dort ist dann nicht PHP gefragt, sondern wohl Smarty ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Ok, habe ich. Das wird heute auch nichts, keine Sorge ;) Nur, was meinst Du mit unter Einleitung? Hier gibt es "Einleitung und News" und "Einleitung Wichtige Themen zur Forenorganisation". Eine h1 finde ich dort gar nicht. Mach am besten ein Bild davon und ein Kreuz drauf, wo es hin soll :)

    Aber wie gesagt, die Vermutung geht nun noch viel mehr in die Richtung. Das ist eher der Bereich vom Template, nicht von der viewforum.php. Denn Texte, die in der hinterlegt werden, müssen ja an das Template übergeben werden.

    Mom, oder meinst Du auf der Unterseite /viewforum.php?f=2 ?? Dort gibt es eine H2 Überschrift "Einleitung". Was mir da aber so einfällt. Kannst Du da nicht einfach dem Forum über das Backend eine Beschreibung hinterlegen. Diese Position wäre ja genau die, die phpbb als default hatte früher.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Ist auch nicht so eilig, das es heute sein muss.
    Du warst wahrscheinlich auf viewforum.php?f=1 , denn unter viewforum.php?f=2 steht oben links das Wort Einleitung unter der Forennavigation.
    Ich mache aber morgen ein Bild davon :)
    Dann noch einen schönen Abend und danke

  • So, zwei Möglichkeiten.

    1. die viewforum.php ändern, Variablen deklarieren und die viewforum_body.html ändern
    oder
    2. es direkt in der viewforum_body.html versuchen

    Mein Ansatz ist nun erst mal Punkt 2.

    Allerdings beachte bitte, phpbb ist nur "Smarty-ähnlich" und mein letztes echtes Smarty war vor einigen Jahren ;)

    Also mal folgendes versuchen. Ist vielleicht die falsche Position, aber das lässt sich dann ja ändern. Wichtig ist ja primär erst mal, dass es geht.

    Also, öffne die Datei /styles/subsilver2/template/viewforum_body.html

    Suche dann die Textstelle

    HTML
    <h2><a class="titles" href="{U_VIEW_FORUM}">{FORUM_NAME}</a></h2>


    Das ist die H2-Überschrift (H1 gibt es nicht)

    Füge nach der Zeile folgendes ein:

    HTML
    <!-- IF FORUM_ID eq 2 -->
    hier der Testtext von FORUM-ID ist 2
    <!-- ENDIF -->
    <!-- IF FORUM_ID eq 20 -->
    hier der Testtext von FORUM-ID ist 20
    <!-- ENDIF -->

    Speichere ab und lade die Datei hoch. Passieren kann hier erst mal eigentlich nichts (99% sicher). Im schlimmsten Fall zeigt er den Code unter der Überschrift an.

    Erklärung zu dem Code oben. In phpbb ist die Template-Syntax immer so, dass Bedingungen in Kommentaren <!-- --> eingebunden werden. Das ist nicht Smarty-typisch.

    Die Bedingung ist ähnlich PHP.

    "IF FORUM_ID eq 2"
    IF: Wenn
    FORUM_ID ist eine Template-Variable, die in der viewforum.php definiert wird.
    eq: equal, also nichts anderes als ==
    Und die Ziffer eben die ForenID

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Guten Morgen,

    das funktioniert bei den Foren sehr gut. Danke schön.
    Ist auch an der richtigen Stelle der Text.
    Da habe ich nun wieder viel zu tun, die entsprechenden Forenbeschreibungen zu erstellen :)

  • Jep, gerade gesehen :) Hinweis: In den Bereichen zwischen dem if und endif, also da wo jetzt der Testtext steht, kannst Du machen was Du willst. Das ist eben der Vorteil vom Template selbst. Dort ist kein PHP. Das ist alles reines HTML. Da kann also einfach Text rein, DIVs, Bilder, Formatierungen, Abstände etc. Alles was in HTML auch normal geht. Muss nur jeweils zwischen die beiden Kommentare if und endif.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(