Kategorie: Helfer des Alltags

share

Twitter einfach in TYPO3-Template einbinden.

Vorstatz für’s neue Jahr wie üblich „Weniger aufschieben“. Gesagt getan, auf unserer Website hat sich einiges angesammelt gehabt an Kleinigkeiten, die ich immer schon mal angehen wollte. Eines davon war der defekte Twitter-Feed im Footer unserer Seite. Nachdem das einfache einbinden nicht mehr möglich war, haben wir einige Zeit auf den Inhalt verzichtet. Dafür wieder ein PlugIn / Extension bemühen?

Zugegeben, mein erster Versuch ging wieder in diese Richtung. Nachdem ich zwei Extensions (beide noch alpha laut Entwickler) ausprobiert hatte, dachte ich, das muss doch auch einfacher gehen. Schließlich soll einfach von Twitter ein JSON abgefragt und formatiert wieder ausgegeben werden.

Nach kurzer Suche habe ich in der Doku die ContentObjects „USER“ und „USER_INT“ gefunden. USER_INT ist im Gegensatz zu „USER“ ungecacht und daher das gesuchte, schließlich soll der Inhalt von Twitter jedesmal neu geladen werden. Mit beiden lässt sich der Content aus eigenen PHP-Scripten im TypoScript verwenden.

Auf GitHub habe ich dann eine schöne schlanke Klasse gefunden, mit der sich die Twitter-API ansprechen lässt.

Damit habe ich mit dann ein entsprechendes Scriptchen gebaut und in die Seite eingefügt. Hier die kurze Schritt-für-Schritt-Anleitung

1) Twitter API freischalten

Die Twitter-API-Credentials müssen im eigenen Konto aktiviert werden. Diese benötigen wir gleich für den Zugang. Das ganze findet ihr im App-Bereich. Dort legt ihr eine neue App an und erhaltet die entsprechenden Daten.

2) Script erstellen

Erstellt das PHP-Script, dass ihr in eurem Template aufrufen wollt. Einfach als PHP-Datei auf dem Server ablegen, am besten dort, wo ihr auch euer Template liegen habt.

Der Inhalt besteht zum einen aus zwei Funktionen für den Aufruf aus dem TypoScript und am Ende aus der Klasse von GitHub.


<?php
function getTweets()
{
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

$url = 'https://api.twitter.com/1.1/statuses/user_timeline.json';
$getfield = '?screen_name=marmalade_web&count=5';
$requestMethod = 'GET';

$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();

return $response;
}

function getTweetsInHtml($content, $conf)
{
$json = getTweets();
$array = json_decode($json);

$html = '<ul>';
foreach($array as $tweet)
{
$html .= '<li>';
$html .= '<p>' . $tweet->text;
$html .= ' <span class="tweetTime"> ' . date('d.m.Y H:i ',strtotime($tweet->created_at)) . '</span>';
$html .= '</p>';
$html .= '</li>';
}
$html .= '</ul>';

return $html;
}
[HIER KOMMT DIE KLASSE VON GITHUB]

 

3) Ausgabe im TypoScript-Template

Nachdem wir die Datei erstellt und auf unserem Server abgelegt haben, könne wir im TypoScript-Template darauf zugreifen.

includeLibs.time = Pfad/zu/eurem/Script.php
lib.twitter = USER_INT
lib.twitter {
userFunc = getTweetsInHtml
}

 

Das wars auch schon. Ziemlich simpel. Oder? Für unsere Zwecke allemal gut genug. Das ergebnis seht ihr am Ende dieser Seite.

share

Billsafe Zahlungsinformation auf dem OXID eShop Rechnungs-PDF angeben bei Einsatz des PayOne-Moduls

PayOne bietet mittels des fcPayOne-Moduls (von der Berliner OXID Agentur Fatchip) auch die Zahlart Billsafe an. Leider kann das Modul noch nicht die Daten für die Rechnung, die in der OXID Community & Professional Edition bequem im Backend als PDF generiert werden können ausgeben.

Im Wiki von Fatchip finden sich lediglich die Angaben, welche Felder auszulesen sind.

Hier ein Snippet, mit dem die Daten auszulesen und im PDF dargestellt werden.

Grundsätzlich empfiehlt es sich, die oxOrder zu erweitern, in der die PDF-Generierung eingehängt ist. Leider müssen wir die zwei Methoden, die wir verändern wollen aus der Originaldatei kopieren.

Zuerst blenden wir in unserem Modul in der Methode „exportStandart()“ die normalen Rechnungseinstellungen aus:


public function pdfFooter( $oPdf )
{
...
if( $this->oxorder__oxpaymenttype->value != "fcpobillsafe")
{
// hier die Bankangaben
}

Am Ende der Methode „exportStandart()“ fügen wir nun die Billsafe Daten ein:
if( $this->oxorder__oxpaymenttype->value == "fcpobillsafe")
{
$oLang = oxRegistry::getLang();
$sBrutPrice = $oLang->formatCurrency( $this->oxorder__oxtotalbrutsum->value, $this->getCurrency() ).' '.$this->getCurrency()->name;
$oPdf->MultiCell( 170, 10, $this->_getFatchipPayoneBillsafeData( 'clearing_legalnote'), 0, 'J' , 0, 1, 14, $siteH+10 );
$oPdf->SetTextColor(50, 150, 50);
$oPdf->MultiCell( 170, 10, $this->_getFatchipPayoneBillsafeData( 'clearing_instructionnote'), 0, 'J' , 0, 1, 14, $siteH+24 );
$oPdf->SetTextColor();
$oPdf->text( 15, $siteH+38, "Empfänger:" );
$oPdf->text( 55, $siteH+38, $this->_getFatchipPayoneBillsafeData( 'clearing_bankaccountholder' ) );
$oPdf->text( 15, $siteH+43, "Bank:" );
$oPdf->text( 55, $siteH+43, $this->_getFatchipPayoneBillsafeData( 'clearing_bankname' ) );
$oPdf->text( 15, $siteH+48, "IBAN:" );
$oPdf->text( 55, $siteH+48, $this->_getFatchipPayoneBillsafeData( 'clearing_bankiban' ) );
$oPdf->text( 15, $siteH+53, "BIC:" );
$oPdf->text( 55, $siteH+53, $this->_getFatchipPayoneBillsafeData( 'clearing_bankbic' ) );
$oPdf->text( 15, $siteH+58, "Betrag:" );
$oPdf->text( 55, $siteH+58, $sBrutPrice );
$oPdf->text( 15, $siteH+63, "Verwendungszweck:" );
$oPdf->text( 55, $siteH+63, $this->_getFatchipPayoneBillsafeData( 'clearing_reference' ) );
}

Bitte – wie oben bereits erwähnt – nicht die Core-Datei ändern, sondern oxOrder sauber mit einem Modul überladen. Wer nicht weiß wie das geht: Roman Zenner und ich haben ein Buch dazu geschrieben. 😉

share

TOXID: So können Sie Duplicate Content bei der Integration vermeiden

Sie haben erfolgreich TOXID installiert und in Ihren OXID Online-Shop integriert, dann besteht häufig noch das Problem, dass beispielsweise Ihr WordPress Blog einmal unter der URL oxid-online-shop.de/blog und unter seinem Installationspfad erreichbar ist. In der Praxis hat sich gezeigt, dass eine doppelte Indexierung im Google-Index sehr häufig vorkommt.

Nun gibt es unterschiedliche Wege um diesem Indexierungs-Problem vorzubeugen. Ich möchte hier nur einen Weg skizzieren, sicherlich gibt es auch die Möglichkeit dies mit meiner entsprechend konfigurierten robots.txt zu erreichen, aber im Folgenden stelle ich kurz den Weg über eine .htaccess-Datei vor.

Was wollen wir erreichen?
Ziel ist es das CMS nicht mehr von außen unter seinem Installationspfad erreichbar zu machen, aber man möchte natürlich noch seine redaktionelle Inhalte dort pflegen können, zu diesem Zweck benutzen wir eine .htaccess-Datei. Dort richten wir dem Redakteur einen User mit Passwort ein. Crawler oder ähnlichem bleibt aber der Zugang verborgen.
Das CMS, insbesondere schlecht gewartete und mit viele Plugins versehene WordPress-Installationen, sind anfällig für nicht freundlich gesinnte Angriffe von außen. Der Schutz des Verzeichnisses bringt hier einen zusätzlichen Sicherheits-Vorteil.

Umsetzung
Vorraussetzung: TOXID ist installiert und lauffähig, FTP- oder SSH-Zugriff auf den Webserver, Text-Editor
Im Root des CM-System liegt eine .htaccess-Datei, diese öffnet man und fügt den folgenden Code (mit seinen individuellen Ergänzungen für „/path/to/“ und „XXX.XXX.XXX.XXX“) am Anfang hinzu:

AuthType Basic
AuthName „Passwortgeschuetzter Bereich!“
AuthUserFile /path/to/.htpasswd
Require valid-user
Order deny,allow
Deny from all
Allow from XXX.XXX.XXX.XXX
Satisfy any

Nun legt man ebenfalls im Root die Datei .htpasswd an, falls noch nicht vorhanden und fügt seinen Code aus bspw. diesem .htpasswd Generator ein.
Wer den absoluten Pfad zur .htpasswd-Datei nicht kennt, kann sich eine kleine PHP-Datei erstellen, eine Anleitung ist hier zu finden.

In der Zeile „Allow from XXX.XXX.XXX.XXX“ trägt man die IP-Adresse des Shop-Servers ein. Es spielt dabei keine Rolle ob CMS und Online-Shop auf demselben Webserver liegen oder auf unterschiedlichen. Wer die IP-Adresse seines Servers nicht kennt, kann in der Administrationsoberfläche seines Servers (unter DNS-Verwaltung oder ähnlichem) fündig werden.

Hat man die entsprechenden Ersetzungen in der .htaccess-Datei gemacht und auch eine .htpasswd-Datei generiert, ist man auch schon fast fertig.

Zugriff auf Bilder freigeben
Im Ordner WORDPRESS/wp-content/uploads muss man nun noch eine .htaccess-Datei mit folgendem Inhalt anlegen, um den Zugriff auf Bilder, etc. von ausserhalb zu gestatten.

Order Deny,Allow
Allow From All
Satisfy Any

Hinweis
Es empfiehlt sich sehr, das Ganze nicht im Live-System zu testen, da auch nur kleine Syntax-Probleme den kompletten Seitenaufbau verhindern können und das hier geschilderte Vorgehen nur mit WordPress getestet wurde.

share

bequemes Module entfernen für OXID eShop – ocb_cleartmp erweitert

ocb_cleartmp erweitert
Wir haben soeben das Modul aus dem OXID Kochbuch um eine weitere, etwas versteckte Option ergänzt.
Beim Entwickeln ist es immer wieder notwendig, alle Moduleinträge zu löschen. Unter anderem deswegen, weil OXID, sofern es bereits Blöcke für ein Modul kennt, keine weiteren hinzu nimmt, wenn diese über die metadata.php ergänzt werden.

Um es dieses manuelle Löschen zu beschleunigen und da das ocb_cleartmp-Modul auf jeder unserer Entwicklungsshops zum Pflichtumfang gehört, haben wir das Modul um diese Option ergänzt. Sobald man den Entwicklermodus aktiviert, erscheit die zusätzliche Auswahl im Dropdown (siehe Bild).

Edit:
Das Modul steht kostenfrei auf GitHub zur Verfügung unter https://github.com/OXIDCookbook/ocb_cleartmp

share

Fritzbox Adressbuch in Starface übernehmen

Vor einigen Tagen haben wir endlich die Fritzboxen unserer Büros gegen eine Starface-Anlage getauscht. Nach der Grundkonfiguration und den ersten nachträglichen Einstellungen fehlten uns jetzt noch die über die Zeit gesammelten Nummern aus der Fritzbox.

Das Adressbuch der Fritzbox kann als XML exportiert werden. Die Starface-Anlage erwartet die Daten allerdings als CSV-Datei.

Kurzerhand habe ich ein kleines PHP-Script geschrieben, welches die Umwandlung vornimmt und mit dem sich die Daten bei einem Wechsel in die Starface-Anlage importieren lassen.
Dieses steht nach einem Praxistest bei uns auf GitHub zum Download bereit.