PHP: Array zu Object Array (Std) konvertieren

Du hast ein Array und brauchst es aber als Object? Oder du willst die Vorzüge vom Std Object nutzen? Mit dieser kleinen Funktion hast du in windeseile dein Array in ein schönes Object umgewandelt.

Die Funktion ruft sich rekursiv auf, somit können auch mehrdimensionale Arrays ohne Probleme in ein Object konvertiert werden.

function arrayToObject($arr) {
        $object = new stdClass();
        foreach ($arr as $key => $val) {
            if (is_array($val)) {
                $val = arrayToObject($val);
            }
            $object->$key = $val;
        }
        return $object;
    }

Weiterlesen

WordPress: Anzahl an Revisionen begrenzen / Revisionen deaktivieren

Die Versionierung von Beiträgen ist ein geniales Feauture und erleichtert einem den Alltag. Jedoch produziert sie auch mächtig Datenmüll in der Datenbank.

Bei jedem Speichern kopiert WordPress den aktuellen Stand des Beitrags und legt diesen in der Datenbank ab. Hat man einen Post immer mal wieder editiert / erweitert, dann hat man recht bald 10 oder mehr Datenbankeinträge zu diesem Post.

Um das Verhalten der Revisionen zu ändern geht in die wp-config.php und fügt folgendes hinzu:

Revisionen auf 5 Stück pro Post begrenzen:

define('WP_POST_REVISIONS', 5);

Revisionen deaktivieren

define('WP_POST_REVISIONS', false);

Weiterlesen

PHP: String auf bestimmte Anzahl an Zeichen auffüllen

Für manche Darstellungen ist es unerlässlich einen String auf eine bestimmte Anzahl an Zeichen aufzufüllen. Mit PHP ist das kinderleicht zu realisieren, denn es gibt die wunderschöne Funktion str_pad. Sie erweitert einen String auf eine Bestimmte Anzahl an Zeichen durch die Verwendung eines anderen String.

 
Beispiel:
ABC__________
abcdefjg_____

 

str_pad('ABC', 13, '_');
str_pad('abcdefjg', 13, '_');

 
 

Durch den PAD_Type kann man noch die Richtung des Auffüllens bestimmen. Standart ist STR_PAD_RIGHT, also der Auffüllende String wird nach Rechts angewendet (sprich dahinter angehangen).
 
STR_PAD_RIGHT --> Auffüllung hinter dem String (Standard)
STR_PAD_LEFT --> Auffüllung vor dem String
STR_PAD_BOTH --> Gleichmäßig nach links und nach rechts aufgefüllt

 
Beispiel:
__________ABC
_____abcdefjg

 

str_pad('ABC', 13, '_', STR_PAD_LEFT);
str_pad('abcdefjg', 13, '_', STR_PAD_LEFT);

Weiterlesen

CSS: Website Zentrieren bzw DIV mittig ausrichten

Möchte man eine Website bzw ein Div mittig im überliegenden Div platzieren, so geht die recht einfach.

Wichtig ist, dass man dem mittig zu platzierenden Element ein margin: 0 auto gibt. Wobei der zweite Wert von Bedeutung ist, denn es setzt das Margin für links und rechts auf Auto.

Desweiteren muss das Element als Block dargestellt werden. Möchte man ein IMG oder ein Span zentrieren so muss das Style display: block noch festgelegt werden.

 

HTML Code  einer zentrieren Website:

<body>
  <div id="wrapper">
  </div>
</body>

CSS für den Wrapper:

#wrapper{
     width: 1200px;
     margin: 0 auto;
}

Weiterlesen

Piwik Besucherzahlen auf der Pebble mit „Cards“

Da es im Pebble Store leider keine Watchface gibt, die einem die Besucherzahlen von Piwik auf der Uhr darstellt heißt es selber bauen. Es gibt verschiedene Apps für die Pebble die Inhalte vom eigenen Server anzeigen können. Optisch gefällt mir Cards for Pebble am Besten, daher mal das Tutorial an diesem Beispiel.

Piwik auf der Pebble
Erste Zeile: Abkürzung der Website, Uhrzeit letzter Aktualisierung
Zweite Zeile: Besucher Heute (Impressionen Heute)
Dritte Zeile: Besucher Gestern (Impressionen Gestern)

 

Die Umsetzung ist recht einfach, man erstellt eine PHP Datei auf seinem Server die die Piwik Daten verarbeitet und einen JSON für Cards ausgibt. Mein Script ist recht Simpel gehalten und sieht folgendermaßen aus:

 

<?php
$site_id = 5;
$api_key = 'dbjkbjioajioajjbdkljbklj';
$piwik_url = 'http://piwik.schnipsellager.de/'; // ohne index.php! , ohne Slash am Ende

$file = file_get_contents($piwik_url.'/index.php?module=API&method=VisitsSummary.get&idSite='.$site_id.'&period=day&date=today&format=JSON&token_auth='.$api_key.'');

$today = json_decode($file);

$file = file_get_contents($piwik_url.'/index.php?module=API&method=VisitsSummary.get&idSite='.$site_id.'&period=day&date=yesterday&format=JSON&token_auth='.$api_key.'');

$yesterday = json_decode($file);

$ret = array();
$ret['content'] = "SL            ".date('H:i')."\n";
$ret['content'].= "H:     ".fill($today->nb_visits).$today->nb_actions."\n";
$ret['content'].= "G:     ".fill($yesterday->nb_visits).$yesterday->nb_actions."";
$ret['refresh_frequency'] = 30;

// Array in JSON Wandeln und ausgeben
echo json_encode($ret);

function fill($var) {
    $len = 9;
    $newlen = $len = $len - strlen($var);
    return str_pad($var, $newlen); 
}

 

Das Script holt sich von euer Piwik Installation die Informationen zu den Besuchern von Heute und Gestern. Dann wird der JSON in ein Array geparst und wir setzen und ein Return Array zusammen. Der erstellte JSON besteht lediglich aus „content“ und „refresh_frequency“. Content beinhaltet alles was auf der Pebble später angezeigt wird, refresh_frequency bestimmt die Aktualisierungsrate in Minuten.

Die Formatierung ist einfach gehalten: Durch Leerzeichen kann man sich die Zeilen auf dem kleinen Display in die richtige Position rücken. Mit STR_PAD werden die Besucher des aktuellen Tages auf Mind. 5 Zeichen aufgefüllt.

 

 

SiteID ? API Key?

Die SiteID findet ihr einfach in der Adresszeile wenn ihr die Berichte einer Website anschaut: index.php?module=CoreHome&action=index&idSite=5

Für den API Key klickt oben auf Admin (oder euren Username) und anschließend Links auf API. Jetzt seht ihr einen Eintrag mit Token Auth, da kopiert ihr euch alles fett makierte.

piwikapi7

 

Wie richte ich Cards ein?

Screenshot_2015-08-30-16-40-08Cards for Pebble ist schnell eingerichtet. Kurz im Pebble Store installieren und in der anschließenden Einstellungsmaske unten auf Custom klicken. Ihr müsst nun nur die URL ändern und ab sofort habt ihr die Besucherzahlen eurer Website immer am Handgelenk.

 

Weiterlesen

Unterschied zwischen $(document).ready() und $(window).load()

Mit Jquery hat man die Möglichkeit Aktionen erst auszuführen, nachdem der DOM (Document Object Model) vollständig geladen ist. Ab diesem Zeitpunkt weiß der Browser welche DIVs und Elemente vorhanden sind. Zusätzliche Inhalte wie Grafiken etc sind jedoch noch nicht vorhanden, daher kann z.B. auch eine Höhe von einem Div unter Umständen noch nicht exakt ausgelesen werden.

$(document).ready(function(){
 // mein code
});

 

Was macht dann $(window).load()?

Mit $(window).load() hat man die Möglichkeit seine Funktionen erst dann zu starten wenn das Dokument mit allen weiteren Inhalten geladen wurde. Eignet sich beispielsweise wenn man die Höhe eines DIVS auslesen muss, nachdem dort dynamischer Inhalt eingefügt wurde.

$(window).load(function(){
  // mein Code
});

Weiterlesen

PHP: Facebook Likes / Fans einer Seite auslesen

Wollt ihr die Anzahl von Facebook Fans automatisiert auslesen, so besteht die Möglichkeit das einfach über die Facbeook Api zu lösen.

<?php 
$fb_siteid = '101023253399';
$json = file_get_contents('http://api.facebook.com/method/fql.query?format=json&query=select+fan_count+from+page+where+page_id='.$fb_siteid.''); 
$response = json_decode($json); 
echo 'Facebook Fans: '. $response[0]->fan_count;
?>

 
Für die Abfrage braucht ihr die Site ID. Diese bekommt ihr recht einfach raus. Klickt einfach auf das Profilbild und schaut euch die URL in der Adresszeile genau an. Irgendwo steht eine lange Zahlenfolge die durch Punkte seprariert ist. Der Letzte Block vor dem Slash ist die SiteID.

Hier mal ein Screenshot am Beispiel von GoogleWatchBlog.de:

gwb-facebookid

Weiterlesen

PHP: Copyright mit automatischer Jahreszahl

Immerwieder schön ist es im Footer zu lesen: © by Firma 1997 bis 2012. 

Liest sich so, als wenn die Firma 2012 eingestellt wurde, ist jedoch meistens einfach die letzte Aktualisierung der Website gewesen.

Um diesen Fauxpas zu vermeiden sollte man hier einfach mit Date das aktuelle Jahr generieren, dann kann man auch nie wieder vergessen alljährlich die Jahreszahl zu editieren.

&copy by schnipsellager.de 1954 bis <?php echo date('Y'); ?>

Weiterlesen

WordPress: Kategorie aus Feed ausschließen

Wenn du im Feed bestimmte Kategorien nicht haben möchtest, so kannst du dir entweder unzählige Plugins installieren oder einfach einen Schnipsel in deine Functions.php einfügen.

Die Vorgehensweise ist eigentlich recht einfach, es wird ein Filter für die allgemeine Query pre_get_posts Funktion gesetzt. Dort wird geprüft ob gerade ein Feed ausgegeben wird. Ist dem so, dann wird die Kategorie mit der ID 5 ausgeschlossen.


function sl_exclude_from_feed($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); 
    }
return $query;
}

add_filter('pre_get_posts','sl_exclude_from_feed');

Das ganze funktioniert auch wunderbar wenn man aus der Suche eine Kategorie ausschließen möchte.

Weiterlesen

CSS: Link beim Mouseover animiert unterstreichen

Wem das normale Underline zu langweilig ist für seine Links, der kann das Ganze auch etwas verspielter machen. Z.b das Unterstreichen von links nach rechts zu animieren.

Wichtig ist, dass das a-Element ein Text-decoration: none bekommt um eine automatische Unterstreichung zu vermeiden. Dann sollte man dem Element ein Position: relative verpassen, da wir unsere Linie absolut unter dem Element platzieren.

 

DEMO: Hover Me

 

a {
  color: #333333;
  text-decoration: none;
  position: relative;
}

Jetzt erstellen wir mit einem a:after unsere Linie die zum derzeitigen Punkt noch eine Breite von 0% hat. Sie wird beim Hover auf 100 Prozent gesetzt und durch eine Transition wird das animiert.

 

a:after {
  content: ''; /* content ist leer... */
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0%;
  border-bottom: 2px solid #333333;
  transition: 0.6s;
}

a:hover:after {
  width: 100%;
}

 

Weiterlesen