TP Ultimate von Joomlaplates: die ersten Spalten einer Tabelle wegen der besseren Übersichtlichkeit einfrieren

  • Joomla Version
    5.4.0
    PHP Version
    PHP 8.2.x
    Hoster
    1blu
    Link (URL) zur Seite mit dem Problem
    https://schiesstermine.de/index.php/termine-2025

    Hallo zusammen,

    ich habe die Tabelle der Einfachheit halber einmal in den öffentlichen Bereich der Webseite verschoben.

    Wegen der besseren Übersichtlichkeit möchte ich gerne (wie bei Excel möglich) die beiden ersten Spalten einfrieren.

    So kann man nach rechts zu den Ergebnissen scrollen und sieht vorne in der Tabelle noch den Austragungsort und das Datum.

    Ich habe von Ryan von JCE Pro netterweise einen Code bekommen, wie man das lösen könnte.

    Es funktioniert schon ganz gut, aber leider werden die Rahmen der Zellen in den ersten beiden Spalten nicht korrekt dargestellt.

    Hat jemand eine Idee?


    Hier der Code von Ryan:

    tableWrapper > table td:nth-child(1) {

    position: sticky;

    left: 0;

    z-index: 100;

    background-color: #fff;

    }


    .tableWrapper > table td:nth-child(2) {

    position: sticky;

    left: 150px;

    z-index: 100;

    background-color: #fff;

    }

  • Eventuell nützlich:

    https://www.dokspeicher.de/120864/

    Dieses Beispiel könnte man auch um eine feste zweite Spalte(Artikel1) erweitern bzw. abändern z.B. in:

    Code
         div.wrapperXY {width:40rem;margin:auto;border:none}
    	  div.TabelleV5-1 {padding-left:22rem;}
    	  div.TabelleV5-2 {position:relative;width:100%; padding:0px;}
    	  div.TabelleV5-3 {overflow-x:scroll;padding:0px;   }
    	  table.TabelleV5-4 {border-collapse:collapse;}
    	  .TabelleV5-4 td, .TabelleV5-4 th {min-width:10rem;border:1px solid #ccc;padding:0em .3rem;vertical-align:top;}
    	  .TabelleV5-4 td.V5columnH, .TabelleV5-4 th.V5columnH {position:absolute;left:-22rem;}
          .TabelleV5-4 td.V5columnH + td, .TabelleV5-4 th.V5columnH + th {position:absolute;left:-11rem;}
          .TabelleV5-4 td.V5columnH, .TabelleV5-4 th {font-weight:bold;}

    Ursprünglicher Beispielcode aus https://www.dokspeicher.de/120864/ ist:

    Spoiler anzeigen
  • Nein, deine vorhandene Tabelle müßte um zwei div-Tags mit den mit entsprechenden CSS-Klassen erweitert umschloßen werden und die in deiner Tabelle bereits vorhandenen Klassen und ID der bereits vorhandenen div-Tags müßten in den obigen CSS-Code eingearbeitet werden.

    Bei dir derzeit vorhanden:

    Code
    ...
    <div class="astroid-article-text" id="awt-61bae20c0d2cf499628496">
    <div class="tableWrapper" style="overflow: auto;">
    <table ...

    Die Zeile4 in dem obigem CSS-Code wäre dann bei dir z.B.:

    div#awt-61bae20c0d2cf499628496 {overflow-x:scroll;padding:0px;}

  • Edit korrektur wegen Fehler in #4:

    Nein, deine vorhandene Tabelle müßte um drei div-Tags ...


    Gib uns mal zuerst den Quelltext deiner vorhandenen Tabelle oder deines kompletten Beitrages mit der Tabelle damit wir die drei zusätzlich erforderlichen div-Tags im Code ergänzen können, oder mach es selbst.

    Nutze dazu im Beitrags-Editor den Button "Quelltext" oder "Editor an/aus".

    Siehe und beachte dazu auch:

    Re:Later
    22. November 2022 um 21:33
  • <div class="tableWrapper" style="overflow: auto;">
    <table style="width: 1627px; height: 5270px; border-style: solid; border-color: #708090; float: left;" rules="all">
    <tbody>
    <tr style="background-color: #00bfff; border: 1px solid #000000;">
    <td style="border: 1px solid #000000;"><strong>Datum</strong></td>
    <td style="border: 1px solid #000000;"><strong>Ort</strong></td>
    <td style="border: 1px solid #000000;"><strong>Tag/Uhrzeit</strong></td>
    <td style="border: 1px solid #000000;"><strong>Meldefrist</strong></td>
    <td style="border: 1px solid #000000;"><strong>CL</strong></td>
    <td style="border: 1px solid #000000;"><strong>W</strong><strong>e</strong><strong>ttkampf</strong></td>
    <td style="border: 1px solid #000000;"><strong>Preisgeld</strong></td>
    <td style="border: 1px solid #000000;"><strong>Pokale</strong></td>
    <td style="border: 1px solid #000000;"><strong>Preisverteilung</strong></td>
    <td style="border: 1px solid #000000;"><span style="color: #ff0000;"><strong>Elektronik</strong></span></td>
    <td style="border: 1px solid #000000;"><strong>Gastro</strong></td>
    <td style="border: 1px solid #000000;"><strong>Ergebnisse</strong></td>
    </tr>
    <tr style="border: 1px solid #000000;">
    <td style="border: 1px solid #000000;"><span style="color: #000000;">29.-31.01.25</span></td>
    <td style="border: 1px solid #000000;"><a href="images/Einladungen/Einladungen_2025/Hausbruch%202025%20Einl.pdf" target="_self"><span style="color: #0000ff;">Hausbruch</span></a></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">Mi-Fr 18:00</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;">S/D</td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">Pokalschießen</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">400,200,100</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">2x Schützen (Mix), 1x Damen (Mix)<br /></span></td>
    <td style="border: 1px solid #000000;">14.02.25, 19:00</td>
    <td style="border: 1px solid #000000;"><span style="color: #ff0000;">M10KK,6LG</span></td>
    <td style="border: 1px solid #000000;">&nbsp;</td>
    <td style="border: 1px solid #000000;"><a href="images/Ergebnisse/Ergebnisse_2025/Hausbruch%202025%20Erg.pdf"><span style="color: #0000ff;">Ergebnisse</span></a></td>
    </tr>
    <tr style="background-color: #98fb98; border: 1px solid #000000;">
    <td style="border: 1px solid #000000;">15.-16.02.25</td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">Buchholz KKS Tell</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">Sa-So</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">22.01.25</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;">(KM) 9.10 LG 30 Schuss Aufl. HH</span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;">&nbsp;</td>
    <td style="border: 1px solid #000000;"><span style="color: #000000;"></span></td>
    <td style="border: 1px solid #000000;"><a href="images/Ergebnisse/Ergebnisse_2025/Ergebnisse%209.10%20LG%20HH_2025.pdf"><span style="color: #0000ff;">Ergebnisse</span></a></td>
    </tr>

  • Sei mir nicht böse, aber deine Tabelle ist ein typisches Beispiel, wie man es nicht machen sollte:

    • Mit <table style="width: 1627px; height: 5270px... verhinderst Du zuverlässig, dass die Tabelle auf einem Smartphone vernünftig dargestellt wird.
    • Dieses HTML könnte man deutlich einfacher schreiben:
      <strong>W</strong><strong>e</strong><strong>ttkampf</strong>
    • Nächstes Beispiel:
      <td style="border: 1px solid #000000;"><span style="color: #000000;">2x Schützen (Mix), 1x Damen (Mix)<br /></span></td>
      Wenn Du ohnehin schon eine style-Deklaration hast und dann den gesamten Zelleninhalt in ein <span> packst, könntest Du die Farbzuweisung auch in den style packen.
    • Und die immergleiche Wiederholung der Styles könnte man viel eleganter lösen, indem man dafür eigene CSS-Klassen in der lokalen CSS-Datei definiert.

    Freundliche Grüße aus Wächtersbach, Rolf Dautrich

  • Habe mir den Rest der Tabelle auf der Website geholt und um drei erforderliche div-Tags erweitert.

    Siehe Tabelle.txt in Dateianhang.

    Diesen Quelltext nun auf der Website in den Beitrag komplett einbauen anstatt der vorhandenen Tabelle.

    Dann noch erforderlicher CSS-Code kommt anschließend...

  • @ Rolf: du hast sicher absolut recht, aber ich habe überhaupt keine Ahnung von CSS Code.

    Deine gut gemeinten Ratschläge kann ich leider mangels nötigem Wissen nicht umsetzen.

    Der Beitrag wurde mit JCE Pro erstellt, der Code dann automatisch generiert.

    Ich bin nur ein Sportleiter eines Vereins und kein Webdesigner oder Programmierer.

    @ Sieger66: ganz lieben Dank für deine Mühe, ich probiere das gleich mal aus.

  • Sieger66: ähemm, sollte ich vorher den von JCEPro Support erhaltenen eingefügten benutzerdefinierten Code im Astroid Plugin wieder rausnehmen?

    Dann wäre die Seite wieder im Originalzustand ohne die beiden fixierten ersten Spalten.

    Das ist der Code:

    .plg_system_webauthn_login_button {

    color: #000;

    svg {

    margin: 4px;

    width: 30px;

    }

    }

    .tableWrapper>table td:nth-child(1) {

    position: sticky;

    left: 0;

    z-index: 100;

    background-color: #fff;

    }

    .tableWrapper>table td:nth-child(2) {

    position: sticky;

    left: 150px;

    z-index: 100;

    background-color: #fff;

    }

  • Kannst mal den kompletten nachfolgenden CSS-Code hinzufügen:

    Code
    div#awt-61bae20c0d2cf499628496 {width:100%;margin:auto;border:none}
    div.TabelleV5-1 {padding-left:20.5rem;}
    div.TabelleV5-2 {position:relative;width:100%; padding:0px;}
    div TabelleV5-3 {overflow-x:scroll;padding:0px;   }
    .TabelleV5-4 table {border-collapse:collapse;padding:0px;}
    .TabelleV5-4 td {min-width:10rem;border:1px solid #ccc;padding:0em .3rem;vertical-align:top;  }
    .TabelleV5-4 tr  td:first-of-type    {position:absolute;left:-21rem; height: 0;   }
    .TabelleV5-4 tr  td:nth-child(2){position:absolute;left:-10.5rem ;height: 0;}
  • Alternativ kannst du stattdessen auch den nachfolgenden CSS-Code hinzufügen:

    Code
    div#awt-61bae20c0d2cf499628496 {width:100%;margin:auto;border:none}
    div.TabelleV5-1 {padding-left:20.5rem;}
    div.TabelleV5-2 {position:relative;width:100%; padding:0px;}
    div TabelleV5-3 {overflow-x:scroll;padding:0px;   }
    .TabelleV5-4 table {border-collapse:collapse;padding:0px;}
    .TabelleV5-4 td {padding:0em .3rem;vertical-align:top;  }
    .TabelleV5-4 tr  td:first-of-type {min-width:10rem;position:absolute;left:-21rem; height: 0; }
    .TabelleV5-4 tr  td:nth-child(2) {min-width:10rem;position:absolute;left:-10.5rem ;height: 0;}

    dieser legt nur für die ersten beiden Spalten die Mindestbreite auf 10rem fest und ist daher wohl besser geeignet.

    Die Mindestbreite könnte man derzeit für die ersten beiden Spalten auch auf 9rem festlegen.

    Alternativ dann z.B. folgenden Code verwenden:

    Code
    div#awt-61bae20c0d2cf499628496 {width:100%;margin:auto;border:none}
    div.TabelleV5-1 {padding-left:18rem;}
    div.TabelleV5-2 {position:relative;width:100%; padding:0px;}
    div TabelleV5-3 {overflow-x:scroll;padding:0px;   }
    .TabelleV5-4 table {border-collapse:collapse;padding:0px;}
    .TabelleV5-4 td {padding:0em .3rem;vertical-align:top;  }
    .TabelleV5-4 tr  td:first-of-type {min-width:9rem;position:absolute;left:-18.5rem; height: 0;   }
    .TabelleV5-4 tr  td:nth-child(2) {min-width:9rem;position:absolute;left:-9.3rem ;height: 0;}
  • Wenn du die ersten beiden Spalten noch schmaler und mit Zeilenumbruch möchtest wäre alternativ z.B. nachfolgender CSS-Code wohl nützlich:

    Code
    div#awt-61bae20c0d2cf499628496 {width:100%;margin:auto;border:none}
    div.TabelleV5-1 {padding-left:14rem;}
    div.TabelleV5-2 {position:relative;width:100%; padding:0px;}
    div TabelleV5-3 {overflow-x:scroll;padding:0px; }
    .TabelleV5-4 table {border-collapse:collapse;  }
    .TabelleV5-4 td {padding:0em .3rem;vertical-align:top; white-space:pre-wrap ; }
    .TabelleV5-4 tr  td:first-of-type {width:7rem;position:absolute;left:-14.5rem ;margin-top:-1px; ;height:0;  }
    .TabelleV5-4 tr  td:nth-child(2) {width:7rem;position:absolute;left:-7.3rem ;margin-top:-1px;height: 0;}
  • Dort z.B. wo du den anderen CSS-Code aus #12 auch eingefügt hast.

    Also wohl im Astroid Plugin.

    Oder alternativ den CSS-Code in eine separate neue Datei auslagern nach folgendem Muster:

    /media/templates/site/your_template_name/css/custom.css

    bei dir wäre das dann z.B. dort:

    /media/templates/site/tp_ultimate/css/custom.css

    siehe z.B. auch:

    docs.astroidframe.work/custom-code/custom-css