Kategorie: wordpress

WordPress CSS3 Animationen in einem vorgegebenen Artikel/Post anzeigen

28. November 2013 - JavaScript, wordpress

Hier ist ein kleines Plugin, mit dem man CSS3 Animationen in einem Post anzeigen kann.

Als Vorbemerkung: es geht hier nicht um das Pro und Contra von CSS3 Animationen und auch nicht darum, auf welchem Browser welche Animation läuft.
sondern nur ganz schlicht darum:
Ihr habt eine euch gefallende CSS3 Animation gefunden (gestohlen, ausgeliehen, …) und möchtet sie in einem eurer Posts der Welt präsentieren.

Das Plugin

css3_plugin.php:

<?php
/*
Plugin Name: css3_plugin
Plugin URI: http://www.it-in-a-box.com/
Description: Fügt CSS3 Animation in single-post ein
Author: Norbert Felgendreher
Version: 1.0
Author URI: http://www.it-in-a-box.com/
*/

if ( !class_exists('Css3_in_post') ) {
class Css3_in_post {

function Css3_in_post() {
add_action('wp_print_styles', array (&$this, 'my_styles_css'));
add_action('wp_print_scripts', array (&$this,'my_scripts_css'));
}

function my_scripts_css() {
if  (!is_single(*** hier kommt die ID eures Posts hinein ***)) return;
wp_register_script('css3_animation_js', WP_PLUGIN_URL.'/css3_plugin/js/css3.js', array('jquery'),false,true);
wp_enqueue_script('css3_animation_js');
}
function my_styles_css() {
if  (!is_single(*** hier kommt die ID eures Posts hinein ***)) return;
wp_register_style('css3_animation_css',WP_PLUGIN_URL.'/css3_plugin/css/css3.css');
wp_enqueue_style('css3_animation_css');
}
} // End Class
$Css3_in_post = new Css3_in_post();
}
?>

Also: Post verfassen, PostID herausfinden, Plugin editieren und installieren.
Das ginge alles noch viel einfacher, klar, aber dies ist schliesslich kein kommerzielles Plugin.

css3.css

ist etwas länglich. Dafür gibt es hier zwei Animationen. Die eine habt ihr schon gesehen, wenn ihr einen zu  HTML5 kompatiblen Browser habt, die andere seht ihr, wenn ihr auf den Blogtitel klickt.
Geht nicht in Chrome (Warum? Ich weiss es nicht! )

@keyframes wheel{
0%{
opacity:0.2;
left:2px;
transform:scale(1) rotate(0deg);
}
100%{
left: 600px;
opacity:1;
transform:scale(2) rotate(2000deg);
}
}
@-webkit-keyframes wheel{
0%{
opacity:0.2;
left:2px;
-webkit-transform:scale(1) rotate(0deg);
}
100%{
left: 800px;
opacity:1;
-webkit-transform:scale(2) rotate(2000deg);
}
}

@keyframes jump{
0%{
transform:translate(0px,0px);
}
25% {
transform:translate(20px,30px);
color: red;
}
50%{
transform:translate(50px,100px);
color: blue;
}
100% {
transform:translate(100px,80px);
color: yellow;
}
}
@-webkit-keyframes jump{
0%{
transform:translate(0px,0px);
}
25% {
transform:translate(20px,30px);
}
50%{
transform:translate(50px,100px);
}
100% {
transform:translate(100px,80px);
}
}
.animate_me0 {

animation: jump 5s ease-in-out 1 normal;
-webkit-animation: jump 5s ease-in-out 1 normal;
animation-play-state: paused;
-webkit-animation-play-state: paused;
}

.animate_me1 {

animation: wheel 5s ease-in-out 1 reverse;
-webkit-animation: wheel 5s ease-in-out 1 reverse;
animation-play-state: running;
-webkit-animation-play-state: running;
//animation-fill-mode: forwards;
//-webkit-animation-fill-mode: forwards;
}

css3.js

ist dafür etwas schlichter

jQuery(document).ready(function() {

jQuery('h1.blogtitle').addClass('animate_me1');
var posttitle=jQuery('h2.posttitle');
posttitle.addClass('animate_me0');

posttitle.click( function() {

posttitle.css("-webkit-animation-play-state", "running");
posttitle.css("animation-play-state", "running");

});
});

Man kann auch die 2. Animation auch nicht durch erneutes Anklicken wiederholen, dafür müsste man mehr Gehirnschmalz in das .js stecken.

Vielleicht kann man aber dadurch auch erkennen, dass CSS3 noch viel weiter reifen muss, bis man es im Schlafe anwenden kann.

Anzeige der Produktkategorien im Jigoshop verbessern Teil 2

5. Februar 2013 - jigoshop, wordpress

In dieser Fortsetzung des ersten Teils wollen wir eine Kategorieübersicht erstellen, in der nur die oberste Ebene sichtbar ist und die anderen Ebenen sichtbar werden, wenn man mit der Maus darüber fährt.

English summary: in this follow-up to part 1 we continue to modify the display of product catagories in jigoshop. The WordPress walker class that creates the hierarchical output of catagories is slightly modified to output only catagories of level one and to hide the rest with display:none. Then a jQuery script is added to show the catagories > level one on mouseover.

Und so soll es aussehen:

Ohne Mouseover

Mit Mouseover

Dazu muss die Zeile

 /*$args['walker']= new NF_Walker_Category;*/ 

im Plugin mit einem Editor (nicht MSWord) aktiviert werden

$args['walker']= new NF_Walker_Category;

Anmerkung: hier ist noch die Option: „Anzahl der Produkte in der Kategorie anzeigen“ (siehe dazu Teil1) aktiv.

Dadurch wird die php-Klasse im Plugin aktiviert, die den WordPress Walker überschreibt. Der Walker ist eine Funktion, die WordPress beim Aufbau von Menüs aufruft.
Das vom Plugin installierte Javascript subcats_visible.js sorgt dann für die Sichtbarkeit, wenn die Maus über einen Menüpunkt fährt

Das Plugin gibt es hier jigoshop_categories_nf

Anzeige der Produktkategorien im Jigoshop verbessern Teil 1

5. Februar 2013 - jigoshop, wordpress

Vor einiger Zeit hatte ich beschrieben, wie ein neues Theme für den Jigoshop erstellt wurde. In diesem Artikel möchte ich euch Vorschläge machen, wie ihr die Produktübersicht in einem Standard-Jigoshop verbessern könnt. Es gibt auch ein Plugin, mit dem man alles austesten kann.

Mit Standard ist gemeint: ihr habt den Jigoshop in einem Standard WordPress Theme (in den Beispielen: Twenty Eleven) installiert oder verwendet ein gekauftes/ kostenloses Jigo-Theme. Meine Beispiele beziehen sich auf den Fall, dass die Produktkategorien (=Übersicht eurer Produkte) mit dem in Jigo enthaltenen Widget Jigoshop:Produktkategorien angezeigt werden, was fast immer der Fall ist.

English Summary: This article suggests some modifications of the display of product catagories in your jigoshop, provided that you use the jigo widget for this purpose. The uploadable plugin modifies the output of wp_list_categories in product-catagories.php

Mit den Einstellungen im Widget kann man z.B. folgende Übersichten (Beispiel: Weinshop, sorry, ich wohne in der Pfalz) erstellen:

hierarchisch;
keine Kategorien ohne Produkte
  nicht hierarchisch;
keine Kategorien ohne Produkte
  hierarchisch;
keine Kategorien ohne Produkte;
Anzahl der Produkte in jeder Kat, anzeigen

Mit dem weiter unten ladbaren Plugin kann man z.B. alle Kategorien anzeigen, auch die, die keine Produkte enthalten

Dazu müsst ihr die auskommentierte Zeile im Plugin in der Datei jigoshop_categories_NF.php mit einem Editor (nicht: MS-Word!) aktivieren.

vorher:

/*$args['hide_empty']=0;*/

nachher:

$args['hide_empty']=0;

Man kann aber auch einige Kategorien einfach ausblenden. Z.B. hier „Lieblich“ und „Trocken“

Dazu muss man die Zeile

/*$args['exclude'] = array(44,43);*/

aktivieren und die passenden Kategorien-IDs einsetzen.

Anm.:  es werden nur Kategorien mit Produkten angezeigt

Eine Übersicht aller Optionen findet ihr hier

Im zweiten Teil werden wir eine Übersicht erzeugen, in der nur die erste Ebene „Traubensaft, Wein“ sichtbar ist und die anderen Ebenen beim Überfahren mit der Maus angezeigt werden.

Das Plugin gibt es hier  jigoshop_categories_nf

WordPress 3.5 neuer media uploader in admin

24. Januar 2013 - wordpress

Ganz frisch hereingekommen ist der neue Media Uploader von WordPress.
Hoffentlich ist damit dann Schluß  mit den Hacks, wenn man Bilder nicht nur über den Editor laden möchte (z.B. auch mit dem hier 🙂 )

 

English summary: WordPress 3.5 comes with the much-anticipated stand-alone media uploader. Thomas Griffin has written a simple plugin  TGM-New-Media-Plugin to show the capabilities of that new tool.

Zur Zeit sieht das ganze aber mal erst nach einem Baukasten aus PHP und Javascript aus.

Beispiele:

http://mikejolley.com/2012/12/using-the-new-wordpress-3-5-media-uploader-in-plugins/

https://github.com/thomasgriffin/New-Media-Image-Uploader

Thomas Griffin hat ein Demoplugin für WordPress 3.5 geschrieben , hier zum Runterladen:   TGM-New-Media-Plugin

Das Plugin erzeugt im admin / Bereich „Seiten“ eine Metabox mit einem Eingabefeld. Über den Button darüber wird der Media Uploader gestartet. Das Plugin macht nichts mit den Daten (und speichert sie auch nicht ab)…

Und so sollte es aussehen im admin:

Experten raten zur Umstellung auf SFTP

12. Dezember 2012 - wordpress

Die Zeiten sind unsicherer geworden, nicht nur für die großen Namen im Internet. Vielbesuchte und wertvolle Webseiten waren immer schon im Visier der Hacker auf der Suche nach verwertbaren Daten. Aber auch kleinere, eher harmlosere Seiten und Blogs können interessant sein, um Malware zu verbreiten.

Wir schützen unsere WordPress Seiten gegen Brute-Force Angriffe auf das Benutzerpasswort und verwenden Nonces, um SQL Injection und Cross-Site Scripting zu verhindern. Experten wie Tobias Fellner von dem Dortmunder Business Intelligence Spezialisten trisolute.de raten nun dringend, auch beim Filetransfer mit FTP umzudenken. „… FTP überträgt das Passwort unverschlüsselt. Man präsentiert den Eingangsschlüssel zu den eigenen Daten damit wie auf dem Silbertablett… .“

Tobias Fellner empfiehlt WinSCP. Aber auch Tim Kosses gutes altes Filezilla in der aktuellen Version 3.6.0.2 kann mithalten.

Was muss man tun, um umzustellen?

Getestet habe ich Strato und 1und1.

Strato:

  • In Filezilla muss im Servermanager auf das SFTP Protokoll umgestellt werden.
  • Als Server trägt man ssh.strato.de ein.
  • Der alte Benutzername und das Passwort müssen nicht verändert werden

1und1:

hier ist es noch einfacher

  • in Filezilla nur auf SFTP umstellen

Mit wenigem Aufwand kann man ein hohes Maß an Sicherheit erreichen.

Wenn es immer so leicht wäre 🙂

Einen Halbjahreskalender mit dem Events Manager erstellen

8. Dezember 2012 - Events Manager, wordpress

Die Zeit vergeht, und ich habe immer noch keinen Halbjahreskalender, der die Termine meines Kunden und  Sonn- und Feiertage  anzeigen kann. Dieses Mal probiere ich den Events Manager aus.

Der Events Manager beschreibt sich so:

Aside from being the most flexible events plugin for styling without modifying code, Events Manager is made with developers in mind, meaning that any aspect of the plugin can be hooked into and modified to suit your needs!

Das stimmt mich hoffungsvoll & positiv…

Für Kalendar stehen zwei verschiedene Ausgabe-Formate zur Verfügung:

  • …/wp-content/plugins/events-manager/templates/templates/calendar-full.php    ( The Full Calendar)
  • …/wp-content/plugins/events-manager/templates/templates/calendar-small.php   (The Small Calendar)

Diese kann man in den eigenen Theme-Ordner kopieren und überschreiben:

../wp-content/themes/my-theme…./plugins/events-manager/templates/calendar-full.php

Das ist ok für reine kosmetische Veränderungen, aber ich brauche ein anderes Format! Leider stellt sich heraus, dass die Leitungen, die die Ausgabeformate mit Daten aus dem Plugin-Kern versorgen, entweder nur eine nicht limitierte Anzahl von Events oder alle Tage eines vorzugebenden Monats mit den eventuell darin liegenden Events  liefern können.

Alle Tage eines Jahres oder eines Vierteljahres mit den darin liegenden Events werden nicht unterstützt, es sei denn, man greift in den Plugin-Kern ein, was ich aber unbedingt vermeiden will.

Marcus Sykes, der den Events Manager betreut und  immer schnell auf Fragen antwortet, schlägt vor, sich alle benötigten Events eines Zeitraums zu holen und dann den Kalendar selbst zu bauen.

Die Events holt man z.B. mit


$events = EM_Events::get(array('scope'=>array('2013-01-01','2013-07-01')));

Da dieses Array riesig ist und nur wenige Daten daraus benötigt werden, erzeuge ich mir ein kleineres Array mit dem Eventdatum als Key:


if($events){
//Go through the events
foreach($events as $event) {
$eventful_days[$event->start_date] = array('name'=>$event->event_name,'content'=>$event->post_content);
}

}

Dann baue ich den Kalender auf, trage bei jedem Tag als Klasse ein, ob es ein Wochentag, Samstag, Sonntag, Feiertag oder Eventtag ist, damit man die Ausgabe später formatieren kann.

Zur  Berechnung der beweglichen Feiertage (die alle am Osterdatum hängen) gibt es HIER noch eine Information

Ansehen kann man sich den Kalender HIER

WordPress is_page() reloaded

29. November 2012 - wordpress

Um Nebenwirkungen gerade auf komplexen Webseiten auszuschliessen sollte man sich daran erinnern, Code und  Styles nur dort einzufügen, wo sie wirklich benötigt werden.

English summary: This is just a reminder for me (and maybe you?) not to flood whole websites with scripts and css. By using the old and familar is_page() we can inject our code and styles only into those pages that definitely need them.

Im Beispiel sollen Styles und Scripts nicht auf den Seiten home, page1 und page2 inkludiert werden

class abc {
....
function abc() {
// if (is_page(....) doesn't work here. At this point, no information about pages is available.

add_action('wp_print_scripts', array ('abc','my_scripts'));
add_action('wp_print_styles', array ('abc', 'my_styles'));
}
function my_scripts() {
{
if  (is_page( array( 'page1','page2','home') )) return;
wp_register_script('script1', scriptname, dependencies,false,true);
wp_enqueue_script('script1');
}

function my_styles() {
if  (is_page( array( 'page1','page2','home') )) return;
wp_register_style('style1',stylename);
wp_enqueue_style('style1');
}
....

Ein Theme mit dem WordPress plugin all-in-one Event Calendar erstellen

16. November 2012 - all-in-one, wordpress

Hier und in einem noch zu schreibenden Artikel geht es um die Auswahl und das Anpassen eines Event Kalenders.

Anm.: (der zweite Artikel ist hier )

English Summary: This articel describes the criteria für the selection of a calendar plugin und the how to modify it.

Wie die Überschrift schon suggeriert, habe ich mich für den all-in-one Event Calendar entschieden. Bei der Unmenge von calendar plugins kann man sich leider nur sehr zeitaufwändig eine Übersicht verschaffen. Angeschaut habe ich mir

Event Espresso Lite
My Calendar
Simple Events Calendar
The Events Calendar
Calendar
All-in-One Event Calendar
Events Manager / Events Made Easy
WP-Events
Events Calendar

Kriterien waren:

  • Bewertung/ Zufriedenheitsgrad
  • Anzahl der Downloads
  • Weiterentwicklungschancen
  • Dokumentation/ Support
  • Softwarestruktur
  • Funktionen (Shortcodes), die ich für das Projekt unbedingt benötige

Bei den ersten vier Kriterien schneidet All-in-one sehr gut ab.

Die Softwarestruktur hat mir sehr gut gefallen, weil unter anderem die Themes über WordPress verwaltet werden. Man kann sie sehr leicht auswechseln ( ab der Version 1.8.3) und ihr Code wird nicht in den Code der Basisfunktionalität hineingemischt. Die von mir benötigten Shortcodes sind zu 90% vorhanden.

Allerdings gibt es nun noch eine Sache zu bedenken:

All-in-one kommt in zwei Geschmacksrichtungen auf den Markt:

als  kostenlose, von den WordPress Plugin Seiten ladbare Version (zur Zeit 1.8.2) und als eine, ebenfalls kostenlose, von den time.ly Seiten ladbare Premium Version (zur Zeit 1.8.3)

Beide unterscheiden sich erheblich bei der Lizenz. Die „WordPress“ Version ist GNU lizensiert, die „time.ly Version ist eine  End User License Agreement – EULA Lizenz

Darin heisst es unter anderem

2. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS.
(a) Maintenance of Copyright Notices.
You must not remove or alter any copyright notices on any and all copies of The All-in-One Event Calendar.
(b) Distribution.
You may not distribute registered copies of The All-in-One Event Calendar to third parties. Evaluation versions available for download from Timely Network Inc.’s websites may be freely distributed.
(c) Prohibition on Reverse Engineering, Decompilation, and Disassembly.
You may not reverse engineer, decompile, or disassemble The All-in-One Event Calendar, except and only to the extent that such activity is expressly permitted by applicable law notwithstanding this limitation.

Kann man unter diesen Umständen überhaupt eine Veränderung vornehmen?

Time.ly hat sich hier  noch einmal etwas entgegenkommender geäußert. Trotzdem werde ich wohl mit der GNU Version beginnen.

Ein Theme mit WordPress/ Jigoshop erstellen – Teil 6

8. November 2012 - jigoshop, wordpress

Nachdem mein Theme im wesentlichen fertig ist, möchte ich hier in lockerer Folge alle Dinge zusammenstellen, die mir im Verlauf mit der Arbeit am Jigoshop aufgefallen sind

Benutzerverwaltung

Jigoshop nutzt die WordPress Benutzerverwaltung, also die users und usermeta Datenbanktabellen von WordPress.

Jeder Käufer, der sich im Shop registriert, wird in diese Tabellen eingetragen und kann sich daher auf der Seite über das WordPress login  anmelden. Auf seinem Level 0 (der Administrator hat den Level 10) darf er allerdings nur seine Profildaten verändern. Für große Shops mit Tausenden von Käufern halte ich diese Vorgehensweise aber für intolerabel.

Übersetzungen

Jigoshop ist leider an (für mich) wesentlichen Stellen bisher (jigosho 1.4.3 Oktober 2012) unübersetzbar. Bei der Übersicht seiner Bestellungen wird einem Käufer als Versandort Germany genannt. Das kann man zwar patchen – jigoshop/classes/jigosho_order.class.php – Zeile 145 einfügen

if ($country==’Germany‘) $country=’Deutschland‘; –

aber ein Patch ist ein Patch und eine Rose ist eine Rose. Die classes lassen sich leider nicht überschreiben wie die templates (siehe dazu Teil 3). Warten wir halt mal auf eine neue Version.

Die Begrüßung, nachdem man sich registriert hat, ist englisch-amerikanisch. Ein Käufer namens Bram Stoker wird mit

„Hallo, Bram. Von Ihrer Benutzerkonto-Übersicht aus können Sie neue Bestellungen sehen, den Versand und die Rechnungsadresse verwalten sowie Ihr Passwort ändern.“
empfangen.

Für Bram ist das ok, aber für Otto Müller vielleicht nicht…

Bestellungen

Die Bestellungen landen in serialisierter Form in der postmeta Tabelle des Themes und können von einem externen Auswertungsprogramm nicht ohne weiteres analysiert werden.

Beispiel:

a:1:{i:0;a:9:{s:2:“id“;s:3:“122″;s:12:“variation_id“;s:0:““;s:9:“variation“;a:0:{}s:13:“customization“;s:0:““;s:4:“name“;s:37:“2011 &#8211; Riesling &#8211; Trocken“;s:3:“qty“;s:1:“1″;s:4:“cost“;s:5:“10.84″;s:12:“cost_inc_tax“;s:2:“-1″;s:7:“taxrate“;s:7:“19.0000″;}}

Ein Theme mit WordPress/ Jigoshop erstellen – Teil 5

5. November 2012 - jigoshop, wordpress

5. Featured Products / der Bestseller

Ein featured product ist ein normales Jigoshop Product, bei dem im Backend ein zusätzliches Kennzeichen gesetzt wurde

Die Darstellung im Frontend ist dieses Mal sehr einfach. Im Template Weinshop muss nur an geeigneter Stelle der folgende jigoshop-shortcode eingefügt werden


<?php echo do_shortcode( '[featured_products per_page="1" columns="1"]' ) ?>

Dadurch wird unsere modifizierte loop-shop.php aufgerufen, die das Produkt über die vorhandene Funktion nf_product_display(…) darstellt.

6. Styling der weiteren Seiten des Jigoshops

Die restlichen Seiten des Shops werden relativ unverändert übernommen. Das Styling dieser Seiten steht in der Datei plugins/jigoshop/assets/css/frontend.css im Jigoshop.

Wenn es z.B. durch veränderte Seitendimensionen nicht ganz passt und verrutscht, kann man das jigo-css über die obligatorische  style.css im WordPress Theme überschreiben.

Z.B. habe ich im Warenkorb das standardmässige Produktbild-Thumbnail mit display: none verschwinden lassen und die Gesamtbreite der Shopseiten verändert.

7. https

Zu diesem Thema werde ich mich später mal wieder melden, wenn ich damit beim Launch meines Projekts mehr Erfahrung gesammelt habe