WooCommerce & Fastbill API

Für alle die FastBill und WooCommerce mit WordPress nutzen wollen, hier ein Plugin welchen den Export nach FastBill übernimmt (auch mit einem Cronjob möglich).

Viel Spaß mit dem Plugin und ich freue mich auf eure Kommentare!

Download:

“WooCommerce & Fastbill API” weiterlesen

RealURL valueDefault language

Hallo zusammen,
damit in TYPO3 kein doppelter Content entsteht, sollte man die default-Language in der URL direkt mit darstellen, ansonsten wird domain.ltd/home und domain.ltd/de/home als doppelter Content gezählt. Um das zu vermeiden, kann man ein wenig an der Config von RealURL arbeiten.

RealURL-Teil-Auszug — NICHT komplette Konfiguration!

<?php
$GLOBALS&#91;'TYPO3_CONF_VARS'&#93;&#91;'EXTCONF'&#93;&#91;'realurl'&#93; = array (
    '_DEFAULT' => array (
        'preVars' => array (
            '0' => array (
                'GETvar' => 'no_cache',
                'valueMap' => array (
                    'nc' => '1',
                ),
                'noMatch' => 'bypass'
            ),
            '1' => array (
                'GETvar' => 'L',
                'valueMap' => array (
                    'de' => '0',
                    'en' => '1',
                    'fr' => '2',
                ),
                'valueDefault' => 'de', // default language 
                //'noMatch' => 'bypass',
            ),
            '2' => array (
                'GETvar' => 'lang',
                'valueMap' => array (
                    'de' => 'de',
                    'en' => 'en',
                    'fr' => 'fr',
                ),
                'noMatch' => 'bypass',
            ),
        ),
    ),
);
?>

Dann würde ich noch auf dem Root-Pfad im Seitenbaum ein Shortcut auf eine Unterseite machen. Somit entsteht direkt eine URL mit Sprach-Segemet (http://domain.ltd/de/SEITENNAME). Und alle anderen Semantischen-Links haben das Sprachsegment mit im Pfad.

Viel Spaß damit

wt_directory für TYPO3 6.2.x

Update: 2016/01/01

Hallo zusammen,
hier noch ein kleines Updat ezu dem Thema. Es wurde weiter entwickelt…
Git:

Alte Version:

Hallo in die Runde,
im Zuge eines Update bei einem Kunden, habe ich das sehr alte Plugin von wt_directory und wt_doormann auf die neue TYPO3 6.2.x Version angepasst. Ich garantiere nichts aber bei mir läuft es nun wieder und man kann auch wie in den alten Versionen alle Punkte hädnisch anpassen im Backend.

Gestet: TYPO3 6.2.9 – 11.01.2015

Bugfix#1: Danke Frank für die Anpassungen für die Kategorie-Auswahl.
Bugfix#1 – Info:
Habe noch was zum “Mehr-Link” herausgefunden, mit dem man von der Listenansicht auf die Detailansicht eines Adresseintrags wechselt:
Hierbei wird derzeit dieser Fehler ausgegeben “#1401732564: Invalid file identifier given. It must be of type string and not empty. “NULL” given.” Ein Bug im Source von TYPO3 6.2.x, an dem anscheinend aktuell gearbeitet wird (siehe https://forge.typo3.org/issues/62184).
Beim wt_directory ist davon die Funktion zum Einbinden von Bildern betroffen (imageLinkWrap), welche man durch folgenden Eintrag im TS-Setup deaktivieren kann (getestet mit TYPO3 6.2.9):
plugin.tx_wtdirectory_pi1.detail.field.image.split.1.10.imageLinkWrap.enable = 0

Viel Spaß,
Marc

Meta tags, extended (metatags) probleme, Seite bleibt weiß!

Wer mit dem Update auf Typo3 4.7.x eine weiße Seite durch mit folgenden Fehler bekommt:

<?php
 Fatal error: Call to undefined method tslib_content_PhpScript::stdWrap() in /html/typo3/typo3conf/ext/metatags/meta.php on line 45
?>

Muss sich nur kurz Zeit nehmen und nicht direkt in Panik geraten 😉

Download

Lösung:

<?php
 // function: $this->stdWrap();
 // replace with new function since 4.7: $this->cObj->stdWrap();

// Line: 45 & 46
// directory: /typo3conf/ext/metatags/meta.php 
// Old:
$localDescription = trim($this->stdWrap($local['description'],$local['description.']));
$localKeywords = trim($this->stdWrap($local['keywords'],$local['keywords.']));

// New:
$localDescription = trim($this->cObj->stdWrap($local['description'],$local['description.']));
$localKeywords = trim($this->cObj->stdWrap($local['keywords'],$local['keywords.']));
?>

Viel Spaß 😉

TwitterAPI mit PHP abrufen

Hallo zusammen,
wer braucht es nicht… ein Tweet auf seiner eigen Seite oder etwas individueller… aber ohne ein Plugin aus WordPress sondern auf seinem eigenen System.
Mit diesem kleinen Beispiel kann man sich schnell und einfach die Tweets auf seine Webseite holen. Das einzige was gebraucht wird, ist PHP 😉 Ach so noch ein kleiner Hinweis… der Cache wurde eingebaut, weil Twitter bei 1000 aufrufen an die API zu einer TwitterPerson dicht macht und man dann ein Tag keine weiteren Daten bekommen kann. Mit der Datei wird es aktuell nur 1x Stunde angefragt 😉

<?php
/**
 * Created by JetBrains PhpStorm.
 * User: marcfinnern
 * Date: 24.08.12
 * Time: 10:47
 */
class twitter {

    function twitter_api($screenname, $maxItems="3", $cacheTime="60"){
        $url = "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=$screenname&count=$maxItems";

        // Caching
        $cachedatei = "cache/twitter_".$screenname.".txt";
        $cacheTime = time()-($cacheTime*60);

        if (file_exists($cachedatei)){
            if (filemtime($cachedatei)<$cacheTime){
                $daten = file_get_contents($url);
                file_put_contents($cachedatei, $daten);
            }
            else {
                $daten = file_get_contents($cachedatei);
            }
        }
        else {
            $daten = file_get_contents($url);
            file_put_contents($cachedatei, $daten);
        }
        // Caching - End


        $result = json_decode($daten);
        $count = 0;
        echo '<ul id="twitter_api">'."\n";
        foreach($result as $tweet) {
            if($count < $maxItems){

                if($count == 0){
                    $class = "first";
                } else if ($count == ($maxItems-1)) {
                    $class = "last";
                } else {
                    $class = "middle";
                }

                $date = date("d M",strtotime($tweet->created_at));
                $search = array(
                    $tweet->entities->urls[0]->url,
                    "@".$tweet->entities->user_mentions[0]->screen_name,
                    "#".$tweet->entities->hashtags[0]->text

                );
                $replace = array(
                    '<a href="'.$tweet->entities->urls[0]->url.'" target="_blank">'.$tweet->entities->urls[0]->expanded_url.'</a>',
                    '<a href="https://twitter.com/'.$tweet->entities->user_mentions[0]->screen_name.'" target="_blank">@'.$tweet->entities->user_mentions[0]->screen_name.'</a>',
                    '<a href="https://twitter.com/search/'.$tweet->entities->hashtags[0]->text.'" target="_blank">#'.$tweet->entities->hashtags[0]->text.'</a>'
                );


                echo '  <li class="'.$class.'">'."\n";
                echo '      <span class="title"><strong>'.$date." | ".$tweet->user->name.'</strong> <a href="https://twitter.com/'.$tweet->user->screen_name.'" target="_blank">@'.$tweet->user->screen_name.'</a></span>'."\n";
                echo '      <span class="desc">'.str_replace($search,$replace,$tweet->text).'</span>'."\n";
                echo '  </li>'."\n";
            }
            $count++;
        }
        echo "</ul>"."\n";
    }
}

Im weiteren sind dann die Sachen für den Quellcode so zu schreiben.
Hinweiß: Man muss dem Cache-Ordner die Rechte 777 oder 0777 geben, damit die Daten abgelegt werden können.

<?php
/*
* Einladen der Twitter-Class
* Und verfügbar machen in einer Variable
* Defaults: $screenname, $maxItems="3", $cacheTime="60"
*/

require("class/twitter.php");
$tw = new twitter();

# Wiedergabe des tweets (3x + 1 Stunde Cachezeit):
$tw->twitter_api("klickfabrik");

# Wiedergabe von 10 Tweets, 30 Minuten Cachezeit
$tw->twitter_api("klickfabrik","10","30");
?>

Wenn man das ganze auch in WordPress nutzen will, muss man zusätzlich noch folgendes machen, damit es auch in einem z.B. PHP-Widget verfügbar ist:

<?php
/*
* Daten werden unter der function.php im WordPresstheme abgelegt und wie folgt aktiviert
*/
#Zeile 11-70 einfügen (also nur die function)
function twitter_api($screenname, $maxItems="3", $cacheTime="60"){
..
.
}

#diese Zeile unter der function anhängen, damit WordPress damit arbeiten kann.
add_action('twitter_api', 'twitter_api');


/* 
* Caching anpassung für WordPress
* Wird dann im Theme-Ordner abgelegt und gespeichert
* Bitte das alte Caching ersetzen 😉
*/
$wordpressDir = explode("/themes/",get_bloginfo('template_url'));
$wordpressDir = "wp-content/themes/".$wordpressDir&#91;1&#93;."/";
$cachedatei = $wordpressDir."cache/twitter_".$screenname.".txt";
?>

Viel Spaß damit,
euer Marc