HauptmenĂŒ

Werkzeuge

Kategorien

Archiv

Einhell

WordPress und Sessions und „Zustand der Website“

Erstellt in PHP, Wordpress am 10. September 2020 vom Daschmi

Wer mit Sessions unter WordPress arbeiten muss und bisher die Session einfach im init Hook mit session_start() geöffnet hat erhĂ€lt seit WordPress 5.5. folgende Meldung im Check „Zustand der Website“

Gelöst habe ich das Problem bei mir, indem ich die Session im init Hook einmal öffne und wieder schließe. SpĂ€ter öffne ich sie im send_headers Hook wieder und lasse sie offen damit ich nach dem Senden des Headers noch damit arbeiten kann.

function st_init() {

    if (!session_id()) { 
        
        // Ich öffne die Sesion kurz, damit ich den $_SESSION Array verwenden kann
        // Schließe sie aber dann wieder

        session_start(); 
        session_write_close();

    }

}

function st_send_headers() {

    // Hier öffne ich die Session wieder, damit ich mit dem $_SESSION Array wieder arbeiten kann

    $ses = $_SESSION;
    session_start();
    $_SESSION = $ses;

}

add_action('init', 'st_init', 1);
add_action('send_headers', 'st_send_headers');

Unspezifische Fehler mit ContactForm7 und dem PHPMailer anzeigen

Erstellt in Allgemein am 14. August 2020 vom Daschmi

Wenn man in einem ContactForm7 Formular die Fehlermeldeung

„Beim Versuch, Ihre Mitteilung zu versenden, ist ein Fehler aufgetreten. Bitte versuche es spĂ€ter noch einmal.“

erhÀlt ist das recht unspezifisch. Mit folgender Action kann man den Fehler weiter eingrenzen.

function my_wpcf7_ajax_json_echo($items, $result) {

	if ($result['status'] === 'mail_failed') {

		global $phpmailer;

		$items['errorInfo'] = $phpmailer->ErrorInfo;

	}

	return $items;

}

add_action('wpcf7_ajax_json_echo', 'my_wpcf7_ajax_json_echo', 10, 2);

In der JavaScript Konsole sieht man dann den Fehler z.B. so

Hier hat ĂŒbrigens ein Update auf WordPress 5.5. geholfen.

Mit php einen Array in x Teile teilen

Erstellt in Allgemein am 30. Juni 2020 vom Daschmi

Mit array_chunk kann man einen Array teilen und dabei die GrĂ¶ĂŸe der Teile angeben. Bei kleineren Arrays kann man die benötigte GrĂ¶ĂŸe der Teile mit floor ermitteln. Hat man aber einen Array mit vielen Elementen so kann man folgende Funktion benutzen.

function part(array $ar, int $pices) {

    $size = sizeof($ar);

    $chunk_size = floor($size / $pices);
    $pr = $size % $pices;

    $r = []; $k = 0;

    for ($i = 0; $i < $pices; $i ++) {

        $j = ($i < $pr)?$chunk_size + 1:$chunk_size;
        $r[$i] = array_slice($ar, $k, $j);

        $k += intval($j);

    }

    return $r;

}

var_dump(part([1,2,3,4,5,6,7,8], 2);

Mit TYPO3 und VHS ĂŒberprĂŒfen ob eine Seite unter einer anderen Seite liegt

Erstellt in Allgemein am 12. Mai 2020 vom Daschmi

Mit folgendem Fluid Tempalate Code kann man mittels VHS ĂŒberprĂŒfen ob eine Seite unter einer anderen Seite liegt.

<f:variable name="rootline" value="{v:page.rootline() -> v:iterator.extract(key: 'uid')}" />
<f:variable name="in_rootline" value="{v:condition.iterator.contains(needle:'3', haystack: rootline, then:'1', else:'0')}" />

Mittels

<f:debug>{rootline}</code>
<f:debug>{in_rootline}</code>

Kann man dies in <f:if> etc. verwenden. in_rootline wird 1 wenn die Seite enthalten ist und 0 wenn die Seite nicht enthalten ist.

Section Frame Wrap nach TYPO3 DCE Update weg

Erstellt in Allgemein am 7. April 2020 vom Daschmi

Nach einem Update von TYPO3 und der DCE Extension war bei mir der umschließende Container weg. Die Default.html aus dem Layout von FluidStyledContent wurde gar nicht verwendet.

Der Grund war diese neue Option, die nun standardmĂ€ĂŸig auf an steht.

Ich habe von TYPO3 9.5.4 auf 9.5.15 und die DCE Extension von 1.6.0 auf 2.3.1 aktualisiert.

Gleichschenkliges Dreieck auf Gerade um Punkt (Pfeil)

Erstellt in Allgemein am 25. MĂ€rz 2020 vom Daschmi

Mit folgender Funktion kann man ein gleichschenkliges Dreieck mit BC = hc auf ein Canvas zeichnen. Dei Position des Dreieckes ist durch die zwei Punkte A und D bestimmt, die die Strecke von A nach D definieren.

Die Funktion kann rechts getestet werden. Der Javascript Code folgt hier:

let canvas = document.getElementById('canvas');
        
function arrow(Ex, Ey, Tx, Ty) {

    let ctx = canvas.getContext('2d'); 

    let ET = Math.sqrt(Math.pow(Tx - Ex, 2) + Math.pow(Ey - Ty, 2));
    let EL = Math.sqrt(Math.pow(ET / 2, 2) + Math.pow(ET, 2));
    let Alpha = Math.acos(ET / EL);
    let Alpha2 = Math.asin((Ey - Ty) / ET);

    let x_L = EL * Math.cos(Alpha + Alpha2);
    let y_L = EL * Math.sin(Alpha + Alpha2);

    let x_R = EL * Math.cos(Alpha - Alpha2);
    let y_R = EL * Math.sin(Alpha - Alpha2);

    let Rx = Ex + ((Tx > Ex)?1:-1) * x_R;
    let Ry = Ey + y_R;

    let Lx = Ex + ((Tx > Ex)?1:-1) * x_L;
    let Ly = Ey - y_L; 

    ctx.clearRect(0, 0, 300, 300);

    ctx.beginPath();
    ctx.moveTo(Ex, Ey);
    ctx.lineTo(Rx, Ry);
    ctx.lineTo(Lx, Ly);
    ctx.lineTo(Ex, Ey);
    ctx.stroke(); 

}

canvas.addEventListener('mousemove', function(e) { 
    
    arrow(150, 150, e.offsetX, e.offsetY);

}); 

DateigrĂ¶ĂŸen mit Typescript/Javascript formatieren

Erstellt in Allgemein am 19. MĂ€rz 2020 vom Daschmi

Mit folgender Funktion lassen sich DateigrĂ¶ĂŸen, die als Bytes ĂŒbergeben werden formatieren. Kann leicht als Vue Filter verwendet werden.

export function fs(size: number): string {
 
    let mod = 1024;
    let units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
    let i = 0;
    
    for (i = 0; size > mod; i ++) {

        size = size / mod;        
    
    }
    
    return round(size, 2) + ' ' + units[i];
    
}

Neues Script zur datenschutzkonformen Verwendung von Cookies

Erstellt in Allgemein am 15. Februar 2020 vom Daschmi

Auf diversen Homepages die ich umgesetzt habe, hab ich ein eigenes kleines Script verwendet, welches die datenschutzkonforme Verwendung von Cookies durch ein Opt-In / Opt-Out Script ermöglicht.

Im Gegensatz zu den Lösungen von Borlabs etc. ist diese nicht auf bestimmte CMS Systeme begrenzt und lÀsst dich leicht in jedes CMS integrieren.

Das Script und eine kurze Installationsanleitung gibt es hier.
Eine Demo auf einer statischen Seite kann hier angeschaut werden.

Cookie Opt-In Script

StĂŒckpreis: 15,00 EUR

TYPO3 Cron bei All-Inkl anlegen fĂŒr Version 9 / Getestet mit TYPO3 9.5.9

Erstellt in TYPO3 am 17. Dezember 2019 vom Daschmi

Beii All-Inkl kann man nur Cron Jobs einrichten, die eine URL aufrufen. Der TYPO3 Cron wird aber ĂŒber ein CLI Script gestartet. Daher muss man den CLI Aufruf ĂŒber einen Webzugriff konfigurieren.

Folgendes PHP Script (Im Root unter) habe ich verwendet

 <?php

   exec(" /usr/bin/php73 {PFAD ZUM TYPO3 DocumentRoot}/typo3/sysext/core/bin/typo3 scheduler:run", $arOut);

   echo "<pre>";
   print_r($ arOut );
   echo "</pre>";


 

Anschließend muss man bei All-Inkl noch den Job konfigurieren

Sollte man direct_mail verwenen, so muss der Planer noch im TYPO3 konfiguriert werden, aber das hat nichts mit All-Inkl zu tun.

PHP Version fĂŒr PHP CLI bei All-Inkl