Verfasste Forenbeiträge

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)
  • Thread-Ersteller trackersb

    (@trackersb)

    Es geht hierbei um 3 Daten, wo 2 schon abgelaufen sind. Allein dafür ein Shortcode zu schreiben für 3 Termine ist der Aufwand nicht wert, meiner Meinung nach.

    Ist ansich richtig, aber es sind deswegen drei da, da ich schon mal drei Termine gleichzeitig anzeigen wollte, und die Shortcodes schlicht nicht entfernt habe, um sie nicht nochmal schreiben zu müssen. Ich verwende die quasi wieder. Da wäre mir der „Aufwand“ die zu löschen und bei Bedarf wieder neu einzufügen zu hoch.
    Wenn ich mehr wesentlich mehr Termine gleichzeitig anzeigen wollen würde, dann müsste ich da sowieso eine andere Strategie fahren. Das ist aber soweit absolut ausreichend.

    • Diese Antwort wurde geändert vor 2 Jahre, 9 Monaten von trackersb.
    Thread-Ersteller trackersb

    (@trackersb)

    Es wird sich vermutlich darauf hinauslaufen, dass ich die Tabelle als Ganzes erzeugen muss.
    Bei genauerer Betrachtung wirst du feststellen, dass, wenn keine Termine eingebunden werden, dann $instance == 1 zuschlägt und in die Tabelle „Aktuell sind keine Termine vorhanden.“ schreibt. Das ist also kein Problem.
    Wenn ich stattdessen die Tabelle komplett weglassen würde, dann müsste ich auch das Heading „Termine und Veranstaltungen“ weglassen, da in der section sonst nichts mehr wäre. Das finde ich aber nicht gut, da ich versuche, möglichst viel als HTML und weniger über PHP einzubinden.
    Aber ja. Es schaut danach aus, als müsste ich die Tabelle als Ganzes erzeugen, auch wenn das mit den mehreren Shortcodes recht gut funktioniert hat.

    Thread-Ersteller trackersb

    (@trackersb)

    Shortcodes sind Teil des Plugins php_everywhere.
    Der php-Code, der durch die Shortcodes aufgerufen wird, ist der Folgende:

    <?php
    $showInstanceTwo = time() <= strtotime("14 December 2018");
    $showInstanceThree = time() <= strtotime("21 November 2018");
    $showInstanceFour = time() <= strtotime("8 December 2018");
    
    if($instance == "1" && ! $showInstanceTwo && ! $showInstanceThree && !$showInstanceFour){
    echo '<tr><td>Aktuell sind keine Termine vorhanden.</td><td></td><td></td><td></td></tr>';
    }
    
    if($instance == "2" && $showInstanceTwo){
    echo '<tr>';
    echo '    <td>Swinging Christmas</td>';
    echo '    <td>14.12.18</td>';
    echo '    <td>Rathaussaal Freilassing</td>';
    echo '    <td><a href="https://binged.it/2EgpZPJ" target="_blank">Münchener Straße&nbsp;15, 83395&nbsp;Freilassing</a></td>';
    echo '</tr>';
    }
    
    if($instance == "3" && $showInstanceThree){
    echo '<tr>';
    echo '    <td>Vorrunde</td>';
    echo '    <td>21.11.18</td>';
    echo '    <td>Grundschule</td>';
    echo '    <td><a href="https://goo.gl/maps/pVAj4U98QCP2" target=_blank>Heiligbrunnerstraße&nbsp;3, 83435&nbsp;Bad Reichenhall</a></td>';
    echo '</tr>';
    }
    
    if($instance == "4" && $showInstanceFour){
    echo '<tr>';
    echo '    <td>Weihnachtskonzert</td>';
    echo '    <td>8.12.18, 17:00</td>';
    echo '    <td>Marienkirche Salzburghofen</td>';
    echo '    <td><a href="https://goo.gl/maps/uvBqaWazFK92" target=_blank>Pfarrweg&nbsp;2, 83395&nbsp;Freilassing</a></td>';
    echo '</tr>';
    }
    
    ?>

    Der Zweck dieses Codes ist, dass ich Zeilen in die Tabelle einfügen kann, die selbstständig wieder verschwinden.
    Jeder Shortcode ruft den obigen Quelltext auf und übergibt als Parameter $instance, sodass ich weiß, welcher Shortcode gerade einen Aufruf macht.
    Wenn also eine Instanz diesen Code aufruft (Z.B. Instanz 2), dann wird das heutige Datum mit dem dem entsprechenden Instanz-Datum (Z.B. $instanceTwo) verglichen. Wenn dieser Vergleich „true“ liefert, dann wird die entsprechende Zeile in der Tabelle erzeugt, sonst kommt einfach „“ (empty string) zurück, d.h. es kommt keine Zeile hinzu.
    Instance1 ist ein Sonderfall. Instance1 liefert genau dann eine Zeile, wenn keine andere Instanz etwas liefert, sodass in der Tabelle angezeigt wird „Aktuell sind keine Termine vorhanden.“.
    Notiz:
    Dass die Nummerierung der Instanzen nicht der Reihenfolge der Instanz-Dati entspricht, liegt daran, dass ich Instanzen vergangener Termine nicht stets entferne.

    • Diese Antwort wurde geändert vor 2 Jahre, 9 Monaten von trackersb.
    Thread-Ersteller trackersb

    (@trackersb)

    In der Tat wird der Shortcode dann nicht mehr nach außen verschoben.
    Aber ich denke dennoch, dass ich fragen müsste: Wieso wird innerhalb der td-Tags akzeptiert?
    Diese php-Aufrufe generieren entweder eine Zeile samt td-Tags, sodass eben eine valide Zeile entsteht, oder nichts, sodass die Zeile nicht sichtbar ist.
    Wie könnte ich das dann geschickt machen, wenn ich gezwungen bin, die Shortcodes in fest eingebundene td-Tags eizuschließen?

    Thread-Ersteller trackersb

    (@trackersb)

    Mein aktueller Workaround sieht so aus, dass ich die Seite in der Datenbank direkt bearbeite…
    Das ist keine dauerhafte Lösung.

    Thread-Ersteller trackersb

    (@trackersb)

    Genauer gesagt will ich (wie auch im Snippet zu erkennen) die Shortcodes innerhalb des tbody-Tags haben.
    Die Tags NACH der Tabelle einzufügen geht; VOR auch. Nur eben nicht innerhalb eines Tags…
    Diese Shortcodes müssen aber da rein, da diese entsprechend dem Namen php-Code aufrufen, der den Inhalt der Tabelle generiert.

    Thread-Ersteller trackersb

    (@trackersb)

    Zumindest nicht, dass mir das bewusst klar wäre.
    Würde die Verwendung des Block-Editors mir bzgl. dieses Problems helfen?

Ansicht von 7 Antworten - 1 bis 7 (von insgesamt 7)