dienste:wp_tkev

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dienste:wp_tkev [02.01.2021 14:47] – Cache aktiviert und Cache-Plugin ergänzt bernddienste:wp_tkev [28.12.2021 21:24] (aktuell) – [Tabelle] mape2k
Zeile 3: Zeile 3:
 Mit der Umstellung auf [[dienste:bytecluster0002]] haben wir auf der Domain [[https://technikkultur-erfurt.de|technikkultur-erfurt.de]] ein neues Wordpress aufgesetzt. Die alten Wordpress-Installationen werden als statischer Inhalt auf einer Archiv-URL abgelegt, damit sie auch ohne aktive Wordpress-Installation einsehbar sind. Mit der Umstellung auf [[dienste:bytecluster0002]] haben wir auf der Domain [[https://technikkultur-erfurt.de|technikkultur-erfurt.de]] ein neues Wordpress aufgesetzt. Die alten Wordpress-Installationen werden als statischer Inhalt auf einer Archiv-URL abgelegt, damit sie auch ohne aktive Wordpress-Installation einsehbar sind.
 Die Serverkonfiguration ist in [[dienste:bytecluster0002:wordpress]] dokumentiert, nachfolgend werden nur die innerhalb von Wordpress erfolgten Anpassungen/Plugins etc. aufgeführt. Die Serverkonfiguration ist in [[dienste:bytecluster0002:wordpress]] dokumentiert, nachfolgend werden nur die innerhalb von Wordpress erfolgten Anpassungen/Plugins etc. aufgeführt.
 +
 +===== Wordpress User Enumeration =====
 +
 +In WordPress gibt es mehrere Stellen, an denen der Benutzername eines Kontos ausgelesen werden kann. Möchte man dies verhindern, müssen in der **functions.php** mehrere Filter ergänzt werden. Eine Anleitung dazu findet man auf [[https://blog.kulturbanause.de/2018/03/wordpress-user-enumeration-verhindern/|kultuberbanause.de]].
 +
 +**Im aktiven Weblog sind die Änderungen noch nicht eingebaut.**
  
  
Zeile 13: Zeile 19:
 <code php>define( 'WP_CACHE', true );</code> <code php>define( 'WP_CACHE', true );</code>
  
 +
 +===== functions.php =====
 +
 +==== erlaubte Dateitypen für Medien-Upload anpassen ====
 +
 +WordPress erlaubt im Standard nur eine begrenzte Auswahl an Dateitypen, welche in die Mediathek hochgeladen werden dürfen (siehe [[https://codex.wordpress.org/Uploading_Files]]). Die Liste der erlaubten Dateitypen kann über die functions.php angepasst werden ([[https://wp-guru.net/erlaubte-dateitypen-fuer-den-upload-in-die-mediengallerie-hinzufuegen/|Beispiel]]). Damit der nachfolgende Code Update-sicher bleibt, wird er als Snippet im Plugin "Code Snippets" angelegt.
 +
 +<code php>function dateitypen_bearbeiten($mime_types){
 +   $mime_types['zip'] = 'application/zip'; //.zip hinzufügen
 +   // unset($mime_types['pdf']); //.pdf entfernen
 +   return $mime_types;
 +}
 +add_filter('upload_mimes', 'dateitypen_bearbeiten', 1, 1);</code>
  
 ===== Template ===== ===== Template =====
  
-Das endgültige Template steht noch nicht fest.+==== User CSS ====
  
 +Verwendet wird aktuell das Template "Modern" mit folgenden CSS-Anpassungen...
 +
 +<code css>#stc-unsubscribe-checkbox,#stc-all-categories,#stc_categories {width:1em;}
 +
 +#stc-subscribe-btn,#stc-unsubscribe-btn {border: 2px solid #D8D8D8;color:#6A6C6E}
 +
 +.posts .entry {padding-left:1em;padding-right:1em}
 +
 +.sidebar .widget {padding: 1em;}
 +
 +.intro-title {
 +    font-size: 3rem;
 +    padding: 4% 0;
 +}
 +
 +.sidebar .widget input, .footer-widgets .widget input, .sidebar .widget select, .footer-widgets .widget select, .sidebar .widget textarea, .footer-widgets .widget textarea {
 +    -width: 100%;    
 +}
 +
 +.entry-content-container, .comments-area-inner, .site-info-inner, .footer-widgets {
 +    padding-bottom: 2rem;
 +}
 +
 +.attachment .entry-media, .entry-content-container, .comments-area-inner, .site-info-inner, .footer-widgets {
 +    padding-top: 2rem;
 +}
 +
 +.posts .entry-media {
 +    margin-left: -1em;
 +   margin-right: -1em;
 +    margin-bottom: 2.6244em;
 +}</code>
 +
 +==== Vorschaubilder ====
 +
 +Damit die Vorschaubilder zum Template passen, müssen unter Einstellungen/Medien die Größen der Bilder angepasst werden, die im Standard recht klein und quadratisch sind. Die Anpassungen entspricht den empfohlenen Bildgrößen, welche ebenfalls auf der Seite aufgeführt sind.
 +
 +  * Vorschaubilder: 420 x 0
 +  * Mittelgroß: 744 x 0
 +  * Groß: 1200 x 0
  
 ===== verwendete Plugins ===== ===== verwendete Plugins =====
  
-^ Plugin        ^ Zweck                       ^  +^ Plugin                                                                                               ^ Zweck                                                                                                                                                                          
-| [[https://de.wordpress.org/plugins/advanced-custom-fields/|Advanced Custom Fields]]   | Erlaubt die Definition zusätzlicher Felder, auch abhängig von einzelnen Beiträgen. Wird für das Template "Modern" empfohlen. | +| [[https://de.wordpress.org/plugins/advanced-custom-fields/|Advanced Custom Fields]]                  | Erlaubt die Definition zusätzlicher Felder, auch abhängig von einzelnen Beiträgen. Wird für das Template "Modern" empfohlen.                                                   
-| [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]] | Anti-Spam-Plugin als Alternative zu Akismet | +| [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]]                                      | Anti-Spam-Plugin als Alternative zu Akismet                                                                                                                                    
-| [[https://de.wordpress.org/plugins/cache-enabler/|Cache Enabler]] | Cache verwalten und bei Bedarf löschen | +| [[https://de.wordpress.org/plugins/cache-enabler/|Cache Enabler]]                                    | Cache verwalten und bei Bedarf löschen                                                                                                                                         
-| [[https://de.wordpress.org/plugins/classic-editor/|Classic Editor]] | Implementierung des alten Editors ohne WYSIWYG. | +| [[https://de.wordpress.org/plugins/classic-editor/|Classic Editor]]                                  | Implementierung des alten Editors ohne WYSIWYG.                                                                                                                                | 
-| [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]] | Kontaktformular | +| [[https://de.wordpress.org/plugins/code-snippets/|Code Snippets]]                                    | erlaubt das einfügen von Codeblöcken in die functions.php ohne das man die Datei des Themes anpassen muss                                                                      
-| [[https://de.wordpress.org/plugins/contextual-related-posts/|Contextual Related Posts]] | zeigt ähnliche Beiträge unter einem Artikel an | +| [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]]                                  | Kontaktformular                                                                                                                                                                
-| [[https://de.wordpress.org/plugins/email-subscribers/|Email Subscribers & Newsletters]] | versendet E-Mail-Benachrichtigungen bei neuen Beiträgen an Abonennten, hat Double-Opt-In. Derzeit in der Seitenleiste, kann aber auch als eigene Seite genutzt werden. | +| [[https://de.wordpress.org/plugins/contextual-related-posts/|Contextual Related Posts]]              | zeigt ähnliche Beiträge unter einem Artikel an                                                                                                                                 | 
-| [[https://de.wordpress.org/plugins/enhanced-media-library/|Enhanced Media Library]] | Zusätzliche Funktionen für die Media-Bibliothek (z. B. Alben) | +| [[https://de.wordpress.org/plugins/disable-remove-google-fonts/|Disable and Remove Google Fonts]]    | Deaktiviert die Einbindung von Google Fonts in ein Theme ohne das am Code etwas angepasst werden muss. Funktion hängt vom Theme ab, mit "Modern" scheint es zu passen.         
-| [[https://de.wordpress.org/plugins/enhanced-text-widget/|Enhanced Text Widget]] | Wird für den Raumstatus in der Seitenleiste benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt. | +| [[https://de.wordpress.org/plugins/email-subscribers/|Email Subscribers & Newsletters]]              | versendet E-Mail-Benachrichtigungen bei neuen Beiträgen an Abonennten, hat Double-Opt-In. Derzeit in der Seitenleiste, kann aber auch als eigene Seite genutzt werden.         
-| [[https://de.wordpress.org/plugins/responsive-lightbox/|Responsive Lightbox & Gallery]] | Lightbox für Bilder, damit diese in einem Hover aufgehen | +| [[https://de.wordpress.org/plugins/enhanced-media-library/|Enhanced Media Library]]                  | Zusätzliche Funktionen für die Media-Bibliothek (z. B. Alben)                                                                                                                  
-| [[https://de.wordpress.org/plugins/simple-yearly-archive/|Simple Yearly Archive]] | Übersichtsseite aller veröffentlichten Beiträge | +| [[https://de.wordpress.org/plugins/enhanced-text-widget/|Enhanced Text Widget]]                      | Wird für den Raumstatus in der Seitenleiste benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt.                                                                     | 
-| [[https://de.wordpress.org/plugins/subscribe-to-comments-reloaded/|Subscribe To Comments Reloaded]] | Besucher erhalten auf Wunsch eine E-Mail-Benachrichtigung bei neuen Kommentaren zu einem Artikel, Double-Opt-In ist aktiviert | +| [[https://de.wordpress.org/plugins/ics-calendar/|ICS Calendar]]                                      | Stellt auf einer Seite einen Kalender mit Terminen dar. Schön an diesem Plugin ist die Möglichkeit, mehrere ICS in einem Kalender darstellen zu lassen.                        | 
-| [[https://de.wordpress.org/plugins/two-factor/|Two-Factor]] | 2-Faktor-Authentifizierung für Login | +| [[https://de.wordpress.org/plugins/limit-login-attempts-reloaded/|Limit Login Attempts Reloaded]]    | Blockiert eine IP für x Minuten bei zu vielen falschen Logins.                                                                                                                 | 
-| [[https://de.wordpress.org/plugins/wp-githuber-md/|WP Githuber MD]] | Umfangreicher MarkDown-Editor mit Syntax-Highlighting und HTML-Preview innerhalb des Editors | +| [[https://de.wordpress.org/plugins/regenerate-thumbnails/|Regenerate Thumbnails]]                    | Erstellt neue Vorschaubilder, wenn man z. B. in den Media-Einstellungen die Auflösungen geändert hat. Kann normalerweise deaktiviert bleiben, wird nicht regelmäßig benötigt.  
-| [[https://de.wordpress.org/plugins/xml-sitemap-feed/|XML Sitemap & Google News]] | erzeugt XML-Sitemaps für bessere/schnellere Indexierung durch Suchmaschinen |+| [[https://de.wordpress.org/plugins/responsive-lightbox/|Responsive Lightbox & Gallery]]              | Lightbox für Bilder, damit diese in einem Hover aufgehen                                                                                                                       
 +| [[https://de.wordpress.org/plugins/simple-yearly-archive/|Simple Yearly Archive]]                    | Übersichtsseite aller veröffentlichten Beiträge                                                                                                                                | 
 +| [[https://de.wordpress.org/plugins/starbox/|Starbox]]                                                | erzeugt einen Autoren-Block unter jedem Artikel                                                                                                                                
 +| [[https://de.wordpress.org/plugins/subscribe-to-comments-reloaded/|Subscribe To Comments Reloaded]]  | Besucher erhalten auf Wunsch eine E-Mail-Benachrichtigung bei neuen Kommentaren zu einem Artikel, Double-Opt-In ist aktiviert                                                  
 +| [[https://de.wordpress.org/plugins/two-factor/|Two-Factor]]                                          | 2-Faktor-Authentifizierung für Login                                                                                                                                           
 +| [[https://de.wordpress.org/plugins/wp-githuber-md/|WP Githuber MD]]                                  | Umfangreicher MarkDown-Editor mit Syntax-Highlighting und HTML-Preview innerhalb des Editors                                                                                   | 
 +| [[https://de.wordpress.org/plugins/wp-mail-smtp/|WP Mail SMTP]]                                      | Wordpress SMTP-Unterstützung                                                                                                                                                   
 +| [[https://de.wordpress.org/plugins/xml-sitemap-feed/|XML Sitemap & Google News]]                     | erzeugt XML-Sitemaps für bessere/schnellere Indexierung durch Suchmaschinen                                                                                                    |
  
 ===== Plugin-Konfiguration ===== ===== Plugin-Konfiguration =====
  
-===== Kontaktformular =====+==== ICS Calendar ==== 
 + 
 +Die meisten Funktionen bzw. die Ausgabe des Plugins lassen sich über Parameter im ShortCode der Seite steuern. Nachfolgend beispielhaft die Einbindung mit unseren beiden öffentlichen NextCloud-Kalendern von Bytespeicher und Makerspace. 
 + 
 +  [ics_calendar url="https://cloud.technikkultur-erfurt.de/remote.php/dav/public-calendars/62H5QIYTZJMRSB17?export https://cloud.technikkultur-erfurt.de/remote.php/dav/public-calendars/FW4LI1Y6AID0ZVC1?export" view="month" tz="Europe/Berlin" eventdesc="true" location="true" organizer="true" attach="true" title="false" pastdays="90" monthnav="both" color="#3399ff #ff6600" feedlabel="Bytespeicher|Makerspace" legendposition="below" legendstyle="inline"
 + 
 +**Wichtig:** Falls der Kalender nicht dargestellt wird, muss die PHP-Konfiguration geprüft werden! 
 + 
 +> Why isn’t my calendar loading? 
 +>  
 +> This may be due to your server’s configuration. This plugin requires either the PHP cURL extensions, or the allow_url_fopen PHP setting to be turned on. Check your PHP configuration or your server administrator if you think this may be the issue. 
 + 
 +==== Two Factor ==== 
 + 
 +Damit sich bei aktivierter 2FA Apps über die XMLRPC-API einloggen können, muss folgender Code in die functions.php gefügt werden: 
 + 
 +  add_filter( 'two_factor_user_api_login_enable', function( $enable ) { 
 +    // Allow API login when using an application password even with 2fa enabled. 
 +    if ( did_action( 'application_password_did_authenticate' ) ) { 
 +        return true; 
 +    } 
 +   
 +    return $enable; 
 +  } ); 
 + 
 +Um das Theme nicht anpassen zu müssen, wird der Code als Snippet im Plugin "Code Snippets" verwendet. 
 + 
 +==== Kontaktformular ====
  
 Das Kontaktformular wird von "Contact Form 7" bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Empfänger-E-Mail ist der Vereinsvorstand angegeben. Das Kontaktformular wird von "Contact Form 7" bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Empfänger-E-Mail ist der Vereinsvorstand angegeben.
  
-===== Übersichtsseite aller Artikel =====+=== Vorlage für Formular === 
 + 
 +Das Kontaktformular entspricht im Wesentlichen der Standardeinstellung, es wurde jedoch ein Frage-Feld ergänzt, welches vor dem Absenden beantwortet werden muss, um den ein oder anderen Spam-Bot abzuhalten. Groß-/Kleinschreibung ist für die Antworten nicht relevant. 
 + 
 +<code><label>Dein Name 
 +    [text* your-name] </label> 
 + 
 +<label>Deine E-Mail-Adresse 
 +    [email* your-email] </label> 
 + 
 +<label>Betreff 
 +    [text* your-subject] </label> 
 + 
 +<label>Deine Nachricht (optional) 
 +    [textarea your-message] </label> 
 + 
 +[quiz quiz-515 "In welcher Stadt befindet sich unser Verein?|xxx" "Wie heißt die Bundeshauptstadt von Deutschland?|Berlin" "Was fördert unser Verein?|xxx"
 + 
 +[submit "Senden"]</code> 
 + 
 +=== Honeypot gegen Spam === 
 + 
 +Sollte die Sicherheitsfrage zur Abwehr von Spammern nicht ausreichen, kann ggf. noch zusätzlich/alternativ das Plugin [[https://de.wordpress.org/plugins/contact-form-7-honeypot/|Contact Form 7 Honeypot]] getestet werden. Aktuell ist es nicht installiert. 
 + 
 +==== Übersichtsseite aller Artikel ====
  
 Das Archiv wird von "Simple Yearly Archive" bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Datumsformat ist "d.m." eingestellt. Das Archiv wird von "Simple Yearly Archive" bereitgestellt. Die Einstellungen sind überwiegend auf Standard belassen, als Datumsformat ist "d.m." eingestellt.
  
-===== Cache Enabler ====+==== Cache Enabler ====
  
   *  Zwischengespeicherte Seiten mit gzip vorkomprimieren. **aktiviert**    *  Zwischengespeicherte Seiten mit gzip vorkomprimieren. **aktiviert** 
Zeile 54: Zeile 171:
 Alle anderen Einstellungen sind deaktiviert bzw. leer. Alle anderen Einstellungen sind deaktiviert bzw. leer.
  
-===== Subscribe to Comments Reloaded =====+==== Subscribe to Comments Reloaded ====
  
   * StCR Checkbox... **Ja**   * StCR Checkbox... **Ja**
Zeile 77: Zeile 194:
   * Eindeutiger StCR Schlüssel //automatisch erzeugt//   * Eindeutiger StCR Schlüssel //automatisch erzeugt//
  
-===== XML-Sitemap =====+==== XML-Sitemap ====
  
 Die Sitemap wird vom Plugin "XML Sitemap & Google News" erzeugt. In den Einstellungen unter "Post Types" ist "Split by" auf "keine" eingestellt, Rest ist Standard. Die Sitemap wird vom Plugin "XML Sitemap & Google News" erzeugt. In den Einstellungen unter "Post Types" ist "Split by" auf "keine" eingestellt, Rest ist Standard.
Zeile 83: Zeile 200:
 In den Wordpress-Einstellungen für "Schreiben" ist zu prüfen, dass die Ping-Services für Google und Bing/Yahoo aktiviert sind, damit beim Veröffentlichen von Beiträgen die geänderte Sitemap an die Suchmaschinen gemeldet wird für die Indexierung. In den Wordpress-Einstellungen für "Schreiben" ist zu prüfen, dass die Ping-Services für Google und Bing/Yahoo aktiviert sind, damit beim Veröffentlichen von Beiträgen die geänderte Sitemap an die Suchmaschinen gemeldet wird für die Indexierung.
  
-===== Raumstatus =====+==== Raumstatus ====
  
 Für die Darstellung des Raumstatus in der Seitenleiste wird das Plugin "Advanced Text Widget" benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt. Für die Darstellung des Raumstatus in der Seitenleiste wird das Plugin "Advanced Text Widget" benötigt, da Wordpress standardmäßig keinen PHP-Code ausführt.
  
-Der Code für den Status sieht wie folgt aus:+Der Code für den Status sieht wie folgt aus
 +Die Größe der Logos lässt sich durch Änderung der Variable $cssMaxWidth anpassen.
  
 <code php> <code php>
 <?php <?php
  
-$ctx stream_context_create(array(  +// Spaces 
-    'http' => array(  +$spaces [ 
-        'timeout' => 1  +    'Bytespeicher' => 'http://status.bytespeicher.org', 
-        )  +    'Makerspace' => 'http://status.makerspace-erfurt.de', 
-    )  +];
-);  +
-$obj = json_decode(file_get_contents('http://status.bytespeicher.org/status.json', false, $ctx));+
  
-if (isset($obj->state->open) && $obj->state->open === true{ +// Max width of icon (small 100, large 200
-    $$obj->state->icon->open; +$cssMaxWidth 100;
-    $text = "Der Bytespeicher ist offen!"; +
-} else { +
-    $f = $obj->state->icon->closed; +
-    $text = "Der Bytespeicher ist geschlossen!"; +
-}+
  
-$str_replace('http://status.bytespeicher.org/', 'https://bytespeicher.org/status/', $f);+// JSON path for URI 
 +$statusJsonPath = '/status-minimal.json';
  
-echo "<p style='text-align:center;'><a target='_blank' href='http://status.bytespeicher.org/'><img src='$f' title='$textalt='Raumstatus des Bytespeicherstyle='width:100%;max-width:200px;' /></a>"; +// Create stream context with low timeout 
-echo '<br />'.$text."</p>"+$context stream_context_create([ 
 +    'http' => [ 
 +        'method' => "GET", 
 +        'timeout=
 +    ] 
 +]);
  
 +// Check every space
 +// No output on errors
 +foreach ($spaces as $spaceName => $statusUrl) {
 +    // Get minimal status from spacestatus webpage
 +    $jsonContent = file_get_contents($statusUrl . $statusJsonPath, false, $context);
 +    if ($jsonContent === false) {
 +        // Status could not be received, skip it
 +        continue;
 +    }
  
-$ctx = stream_context_create(array(  +    // Decode JSON with max depth of 2 
-    'https' => array +    $jsonContent json_decode($jsonContent, false, 2); 
-        'timeout' => 1  +    if (is_null($jsonContent) || !isset($jsonContent->open) || !isset($jsonContent->icon)) 
-        )  +        // JSON could not be decoded or entries missing 
-    )  +        continue; 
-);  +    }
-$obj = json_decode(file_get_contents('https://status.makerspace-erfurt.de/status.json', false, $ctx));+
  
-if (isset($obj->state->open) && $obj->state->open === true) { +    // Output spaces 
-    $f = $obj->icon->open+    $text = 'Der ' . $spaceName . ' ist ' . ($jsonContent->open === true ? 'offen' : 'geschlossen'. '!'; 
-    $text = "Der Makerspace ist offen!"; +    echo '<a href=\''$statusUrl . '\'>'
-} else { +    echo '<img src=\'' . $jsonContent->icon . '\' title=\''$text . '\' alt=\'Raumstatus des ' . $spaceName . '\' style=\'width:100%;max-width:'$cssMaxWidth . 'px;\' />'
-    $= $obj->icon->closed+    echo '</a>';
-    $text = "Der Makerspace ist geschlossen!";+
 } }
- 
-$f = str_replace('https://status.makerspace-erfurt.de/', 'https://status.makerspace-erfurt.de/', $f); 
- 
-echo "<p style='text-align:center;'><a target='_blank' href='https://status.makerspace-erfurt.de/'><img src='$f' title='$text' alt='Raumstatus' width='100px' style='width:100%;max-width:200px;' /></a><br />"; 
-echo $text."</p>";  
- 
-?></code> 
- 
-Alternativ-Code ohne Textausgabe und mit kleineren Icons: 
- 
-<code php> 
-<?php 
- 
-$ctx = stream_context_create(array(  
-    'http' => array(  
-        'timeout' => 1  
-        )  
-    )  
-);  
-$obj = json_decode(file_get_contents('http://status.bytespeicher.org/status.json', false, $ctx)); 
- 
-if (isset($obj->state->open) && $obj->state->open === true) { 
-    $f = $obj->state->icon->open; 
-    $text = "Der Bytespeicher ist offen!"; 
-} else { 
-    $f = $obj->state->icon->closed; 
-    $text = "Der Bytespeicher ist geschlossen!"; 
-} 
- 
-$f = str_replace('http://status.bytespeicher.org/', 'https://bytespeicher.org/status/', $f); 
- 
-echo "<a target='_blank' href='http://status.bytespeicher.org/'><img src='$f' title='$text' alt='Raumstatus des Bytespeicher' style='width:100%;max-width:100px;' /></a>"; 
- 
-$ctx = stream_context_create(array(  
-    'https' => array(  
-        'timeout' => 1  
-        )  
-    )  
-);  
-$obj = json_decode(file_get_contents('https://status.makerspace-erfurt.de/status.json', false, $ctx)); 
- 
-if (isset($obj->state->open) && $obj->state->open === true) { 
-    $f = $obj->icon->open; 
-    $text = "Der Makerspace ist offen!"; 
-} else { 
-    $f = $obj->icon->closed; 
-    $text = "Der Makerspace ist geschlossen!"; 
-} 
- 
-$f = str_replace('https://status.makerspace-erfurt.de/', 'https://status.makerspace-erfurt.de/', $f); 
- 
-echo "<a target='_blank' href='https://status.makerspace-erfurt.de/'><img src='$f' title='$text' alt='Raumstatus' width='200px' style='width:100%;max-width:100px;' /></a>"; 
  
 ?></code> ?></code>
  • dienste/wp_tkev.1609595248.txt.gz
  • Zuletzt geändert: 02.01.2021 14:47
  • von bernd