Preiswerte Webseiten für kleine Betriebe und Privatleute

Manch einer wünscht sich einfach nur eine kleine, schlichte Webseite, um seinen Handwerksbetrieb oder auch sich selbst als Freiberufler (oder Privatperson) im Netz vorzustellen und auf diese Art erreichbar zu sein. Hierfür reicht oftmals bereits etwas, das gerne als „bessere Visitenkarte im Netz“ bezeichnet wird oder eine kleinere Präsenz, die nur einige wenige Inhalte bieten soll.

Dafür möchte man nicht viel Geld ausgeben. Noch interessanter wird es, wenn die Inhalte selbst aktualisiert werden sollen, da einem die Kosten für eine Pflege durch Dritte zu hoch sind.

Imagcon bietet ab sofort genau das: einfache Webseiten zum selber pflegen, die mit einem Content-Management-System realisiert sind, aber dennoch auch auf simpelsten Hosting-Paketen ohne beispielsweise mySQL-Datenbanken laufen. Wird dabei auf vorhandene Templates zurück gegriffen und kein oder nur minimales Individualdesign gewünscht (beispielsweise nur das Einfügen eines Firmenlogos, aber keine Anpassungen am Template), dann sind solche Seiten bei uns für Gewerbetreibende oder Freiberufler ab 200 Euro zzgl. Ust möglich (Preis für Privatpersonen: EUR 238 inkl. MWSt)! Das ist ein flexibles Angebot, wenn Sie umfangreichere Dienstleistungen wie beispielsweise ein eigenes Webseitendesign wünschen, dann geht selbstverständlich auch das!

Das verwendete Content Management-System zur Pflege der Seite ist dabei einfach zu bedienen – wer in der Lage ist eine Email zu verfassen, kann auch das CMS beherrschen!

Interessiert? Dann fragen Sie uns!

Entwickler: PHP 5.3.7 soll nicht benutzt werden

Am 18. August ist die PHP-Version 5.3.7 erschienen. Wie sich jetzt heraus stellte hat diese einen schweren Bug in Sachen Verschlüsselung. Durch einen Fehler in der Funktion crypt() im Zusammenhang mit MD5 wird als Ergebnis einer Hash-Operation nicht etwa wie erwartet das Salt und der Hash-Wert zurück gegeben, sondern nur das Salt. Zusammen mit DES und Blowfish funktioniert das Ganze allerdings.

Problematisch kann das beispielsweise bei Anmeldungen an Webanwendungen werden, die mit der fehlerhaften Funktion nicht mehr durchführbar sind.

Die Entwickler raten dazu, auf die Version 5.3.8 zu warten, die in Kürze erscheinen soll.

WordPress: „Forgot The Category“ für Custom Post Types

Ich erweitere gerade ein relativ umfangreiches Blog um einen Custom Post Type, um neben News auch Artikel darstellen und beide Beitragsvarianten unabhängig voneinander layouten zu können. Zudem wollte ich für die Artikel nicht die Standardkategorien nutzen, sondern neue Taxonomien.

Die Einrichtung des entsprechenden Custom Post Type war mit dem Plugin „Custom Post Type UI“ ein Kinderspiel (die Erstellung des Themes unter Einbindung der CPTs ist es nicht, aber dazu ein andermal).

Beim Test stieß ich dann allerdings auf ein unerwartetes Problem: ich habe das Plugin „Forgot The Category“ installiert, das mich darauf hinweist, eine Kategorie anzugeben, was ich schonmal vergessen hatte und das ist ärgerlich, wenn man es nicht merkt. Mit den bereits vorhandenen Beiträgen klappt das ohne Probleme, nur bei der selbst eingerichteten Taxonomie für den CPT zickte das Plugin und bemängelte nicht gewählte Kategorien.

Ein schneller Blick ins Plugin und via Firebug in den Quellcode der Kategorie-Box im WP-Backend zeigte mir schnell, wo das Problem lag, aber auch wie die Lösung auszusehen hatte:

Der Quelltext des Plugins (Auszug):

class DC_ForgotTheCategory {
  function AddToEditPage() {
    
  }
}

add_action("edit_form_advanced", array("DC_ForgotTheCategory", "AddToEditPage"));

In Zeile fünf entdeckt man den jQuery-Selektor

ul#categorychecklist

das Element mit der ID #categorychecklist gibt es allerdings in der Liste der Custom Taxonomy nicht. Der Quelltext zeigte mir aber dass dasselbe UL-Element auch eine Klasse namens

.categorychecklist

besaß und die war auch in der Liste der selbsterstellen Taxonomie vorhanden. Der Rest war einfach, Zeile fünf musste nur in

if ( jQuery("ul.categorychecklist input:checkbox:checked").length < 1 ) {

geändert werden (Raute gegen Punkt austauschen), und schon wurden korrekt mit einem Haken versehene Taxonomie-Begriffe nicht mehr bemängelt.

Quicktipp: WordPress 3.1 – Adminbar deaktivieren

Persönlich halte ich die neue Adminbar, die WordPress seit der Version 3.1 bietet, ja für ein sehr nützliches neues Feature, andere scheinen aber nicht so glücklich damit zu sein.

Man kann sie aber relativ einfach deaktivieren – entweder in der functions.php:

if (!is_admin() && !current_user_can('add_users')){
	wp_deregister_script( 'admin-bar' );
	wp_deregister_style( 'admin-bar' );
	remove_action('wp_footer','wp_admin_bar_render',1000);
}

Oder in der header.php, hier gehört der Code vor <?php wp_head() ?>

if (!current_user_can('add_users')){
        wp_deregister_script( 'admin-bar' );
        wp_deregister_style( 'admin-bar' );
        remove_action('wp_footer','wp_admin_bar_render',1000);
}

Eigentlich wäre es sinnvoll, wenn das via Option im Backend geschehen könnte, ich würde mal vermuten wollen, dass das aufgrund der geübten Kritik an diesem neuen Feature bald implementiert werden wird

WordPress-Snippet: Links in Kommentaren nicht klickbar

Wer mit WordPress arbeitet, der weiß, dass in Kommentaren eingefügte Links automatisch so umgewandelt werden, dass man sie anklicken und dadurch auf die zugehörige Webseite kommen kann. Man weiß dann aber ganz sicher auch, dass schlaue Zeitgenossen versuchen, einem Spam-Links unterzujubeln.

Man kann das automatisierte Umwandeln durch einen einfachen Eintrag in der functions.php unterbinden:

remove_filter('comment_text', 'make_clickable', 9);

Gleich nach dem Speichern wird man feststellen, dass die Links als reiner Text noch vorhanden sind, sie aber nicht mehr automatisch „verlinkt“ werden.

WordPress: Dashboard-Widgets verstecken

Der eine WordPress-Admin freut sich, wenn er im Dashboard (deutsch holprig übersetzt als „Tellerrand“, wobei Armaturenbrett auch nicht besser wäre…) möglichst viele Widgets mit Informationen vorfindet, der andere wünscht sich eine deutlich übersichtlichere Oberfläche.

Letzterem kann geholfen werden. Folgender Code muss in die functions.php:

function remove_dashboard_widgets() {
  global $wp_meta_boxes;
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_drafts']);
  unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
  unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
}
if (!current_user_can('manage_options')) {
  add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );
}

Will man ein paar der Widgets behalten kommentiert man sie im obigen Code einfach aus oder löscht die entsprechende Zeile.

PHP-Template Engine in einer Zeile

Auf der Suche nach brauchbaren Template-Engines für PHP, die ohne zu großen Overhead auskommen und eine brauchbare Performance bieten können, bin ich über ein sehr smartes Stück Code gestolpert, das mit Sicherheit für viele, insbesondere für kleine Anwendungen mehr als ausreicht. Die Template „Engine“ besteht aus einer Zeile:

print preg_replace("/\{([^\{]{1,100}?)\}/e","$$1",file_get_contents("template.tpl"));

Die Datei template.tpl sieht wie folgt aus:

{header}

{text}

Im PHP-Script setzt man jetzt die Variablen analog zu den Template-Platzhaltern:

$title="Example page";
$header="My Examples";
$text="See the placeholders replaced?";

Ich gebe zu: Man kann sich darüber streiten, ob man einer Template-Engine (und nichts anderes ist PHP ja im Prinzip) noch eine weitere Template-Engine überstülpen muss… Grundsätzlich ist es aber mindestens aus Gründen der Übersichtlichkeit sinnvoll, Logik und Darstellung zu trennen. Da kann der Einzeiler insbesondere bei kleinen Projekten sehr hilfreich sein, ohne dass man gleich den Dinosaurier Smarty oder ähnliche Vertreter nutzen muss.