Support » Allgemeine Fragen » CSS Code- Textbaustein überschreiben

  • Gelöst janheppner

    (@janheppner)


    Hallo!

    auf der angegebenen Website wird durch ein Plugin mit einem Shortcode eine Tabelle erzeugt. Diese Tabelle hat die 4te Spalte: „Einsatzart“. Ich kann die Zelle per CSS ansteuern, weiß nun nicht, ob ich sie überschreiben kann.

    Hintergrund: Einsatzart heißt nun Meldebild und ich bekomme es im Plugin nicht umprogrammiert. Nun möchte ich quase das Einsatzart mit Hilfe eines zusätlichen CSS-Codes überschreiben.

    Geht das oder habe ich da ganz falsche Vorstellungen?

    Vielen Dank!!

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 13 Antworten - 1 bis 13 (von insgesamt 13)
  • Moderator Bego Mario Garde

    (@pixolin)

    Das wäre der falsche Weg, selbst wenn das vielleicht über Umwege funktionieren würde.

    HTML gibt den Inhalt der Webseite vor.
    PHP erlaubt die Verbindung mit einer MySQL-Datenbank und die serverseitige Ausführung von Skripten.
    JavaScript ermöglicht die browserseitige Ausführung von Skripten
    CSS regel die Gestaltung der Elemente einer Webseite.

    Über die Gestaltung per CSS kannst du HTML-Elemente ein- bzw. ausblenden, aber nicht den Inhalt ersetzen.
    Per JavaScript könntest du, nachdem das Dokument im Browser geladen ist, den Inhalt austauschen.
    Der richtige Weg wäre aber, das PHP-Skript anzupassen. Gibt der Shortcode über die Parameter vielleicht eine Änderungsmöglichkeit vor?

    Thread-Ersteller janheppner

    (@janheppner)

    Hier ist der Quellcode des Plugins: https://github.com/abrain/einsatzverwaltung
    Leider bin ich nur Laie und bin froh, dass ich mit Worpress klar komme 😉

    bscu

    (@bscu)

    Vermutung:

    In der Datei AbstractFormat.php, Zeile 80, könnte das gesuchte Wort stehen, dass du in Meldebild ändern kannst. Allerdings kommt das Wort Einsatzart auch noch in anderen PHP-Dateien vor, daher wird das alleine nicht ausreichen.

    Allerdings ist das kein WordPress-Problem und die Anpassung ist vermutlich nicht mal eben gemacht, wenn alle „Einsatzart“ ersetzt werden sollen, daher bist du hier eigentlich falsch.

    • Diese Antwort wurde geändert vor 1 Monat von bscu.
    Moderator Bego Mario Garde

    (@pixolin)

    Ziemlich verschachteltes Plugin, das übrigens auch im Plugin-Verzeichnis vorliegt: Einsatzverwaltung. Aber schon klar, das hilft dir nicht weiter und bei einem Unfall steht man wohl auch nicht erst rum und stellt anerkennend fest, dass sich irgendwelche Autos hübsch verkeilt hätten?

    Ich sehe das wie @bscu: eine Anpassung des Plugins ist „nicht mal eben gemacht“ und du willst ja bei künftigen Anpassungen des Plugins auch nicht von vorne anfangen. Am sinnvollsten erscheint mir deshalb, die Übersetzung von „Incident Category“ in etwas anderes als „Einsatzart“ zu ändern, also nachträglich die Übersetzung zu überschreiben. Das ist zwar nicht optimal für die Performance der Website (braucht ein paar Millisekunden länger), scheint mir aber der beste Weg zu sein.

    add_filter( 'gettext', 'einsatzverwaltung_filter_gettext', 10, 3 );
    function einsatzverwaltung_filter_gettext( $translated, $original, $domain ) {
    
        if ( $original == 'Incident Category' && $domain == 'einsatzverwaltung') {
            $translated = 'Meldebild';
        }
    
        return $translated;
    }

    Um den Code ohne ein eigenes Child-Theme unterzubringen, kannst du das Plugin Code Snippets installieren und dort als neues Code-Snippet anlegen. Unterhalb des Codes kannst du noch angeben, dass die Änderung nur im Frontend ausgeführt werden soll (roter Pfeil):

    Screenshot Einstellungen
    (zum Vergrößern anklicken)

    Das sieht dann im Ergebnis (sinngemäß – ich verwende ein anderes Theme) so aus:

    Screenshot Einstellungen
    (zum Vergrößern anklicken)

    Moderator Angelika Reisiger

    (@la-geek)

    Die Lösung von @pixolin ist perfekt. Da ich mir in der Zwischenzeit die Mühen gemacht hatte, eine CSS-Lösung zu konstruieren, reich ich diese nach (einfach nur für Anschauungszwecke):

    table.einsatzverwaltung-reportlist tr.einsatz-header th:nth-child(4)::before {
        content: "Meldebild";
        text-indent: 0;
        display: block;
        background: #fff;
        position: absolute;
        padding: 0;
    }
    table.einsatzverwaltung-reportlist th:nth-child(4) {
        text-indent: -99999px !important;
    }
    table.einsatzverwaltung-reportlist tr.einsatz-header {
        background: #fff;
    }

    Aber wie eingangs erwähnt: den Textstring selbst zu übersetzen, ist die beste Lösung.

    Thread-Ersteller janheppner

    (@janheppner)

    WOW! Mega! Vielen vielen Dank. Ihr habt mir sehr geholfen!

    Thread-Ersteller janheppner

    (@janheppner)

    @pixolin. Welchen Ausdruck muss ich denn dann übersetzen, wenn ich aus Einsatzmeldung „Stichwort“ bekommen möchte?

    Moderator Bego Mario Garde

    (@pixolin)

    @la-geek Das war auch mein erster Gedanke, war mir dann aber ehrlich gesagt zu mühsam. Deshalb der Hinweis, dass eine Änderung des CSS (rein semantisch gesehen, vielleicht aber auch aus Bequemlichkeit) „der falsche Weg [wäre], selbst wenn das vielleicht über Umwege funktionieren würde.“ Aber dein Code funktioniert sicherlich tadellos.

    Moderator Bego Mario Garde

    (@pixolin)

    @janheppner Den Begriff „Einsatzmeldung“ kannst du mit der Übersetzungsfunktion gar nicht ändern, weil der Entwickler ausgerechnet an der Stelle die Übersetzungsfunktion nicht richtig verwendet hat:

    In Zeile 36 der Datei Frontend/ReportList/ColumnRepository.php müsste es statt
    $this->addColumn(new Column('title', 'Einsatzmeldung'));
    richtig heißen
    $this->addColumn(new Column('title', __('Incident report', 'einsatzverwaltung')));

    Auch in den nachfolgenden Zeilen stehen übersetzte und unübersetzte Begriffe munter durcheinander. Vielleicht fragst du mal im Supportforum des Plugins nach?

    In diesem Fall kannst du entweder mal die von Angelika genannte CSS-Regel ausprobieren, oder den Begriff mit jQuery austauschen.

    add_action( 'wp_head', 'tausche_wort' );
    function tausche_wort() { ?>
    <script> 
        jQuery(document).ready(function($) {
        var replaced = $("body").html().replace('Einsatzmeldung','Stichwort');
        $("body").html(replaced);
        });
    </script>
    <?php }

    Aufgepasst: dieser Code ersetzt nur das erste Vorkommen des Wortes „Einsatzmeldung“. Wenn du also oberhalb deiner Tabelle das Wort nutzt, wird es in der Tabelle nicht ersetzt.

    An dieser Stelle mal wieder der freundliche Hinweis, dass du WordPress, Themes und Plugins kostenlos zur Verfügung gestellt bekommst und wir bei Problemen zusätzlich kostenlosen Support anbieten, der aber nicht individuelle Anpassungswünsche beinhaltet, weil das sonst rasch den Rahmen sprengt. Für individuelle Änderungen musst du dich entweder selber einlesen oder einen Dienstleister beauftragen. Wir haben hier eine (bzw. mehrere) Ausnahme(n) gemacht.

    Thread-Ersteller janheppner

    (@janheppner)

    Okay, vielen Dank. Ich werde es in der Zukunft berücksichtigen! 🙂

    Moderator Bego Mario Garde

    (@pixolin)

    Prima. Wenn ich das richtig gesehen habe, läuft die Ersetzung jetzt ja auch. Freut mich.

    Thread-Ersteller janheppner

    (@janheppner)

    Ja, der Entwickler hat mir ein kurzes Plugin zur Verfügung gestellt, welches die Namensänderungen durchführt.

    Moderator Bego Mario Garde

    (@pixolin)

    😀 … oder so.

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