<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>impres-sign &#124; with lightness impressive - Ihre Web Spezialisten &#187; Blog</title>
	<atom:link href="http://www.impres-sign.com/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.impres-sign.com</link>
	<description></description>
	<lastBuildDate>Fri, 14 Oct 2011 12:46:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Trackback/Pingback</title>
		<link>http://www.impres-sign.com/blog/wordpress/trackbackpingback/</link>
		<comments>http://www.impres-sign.com/blog/wordpress/trackbackpingback/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 09:00:41 +0000</pubDate>
		<dc:creator>Marc Juchli</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[backlink]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Pingback]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[Trackback]]></category>
		<category><![CDATA[Tutorial]]></category>
		<guid isPermaLink="false">http://www.impres-sign.com/blog/wordpress/trackbackpingback/</guid>
		<description><![CDATA[Das ganze Web wird immer grösser. Dementsprechend wird es auch immer schwiriger den Überblick über den Informationsfluss zu bewahren und sich Beziehnugen zu anderen Vertretern und Gesellen der Branche aufzubauen. &#160; Auch impres-sign empfindet es als äusserst wichtig sich in der Blogger-Welt zu etablieren und sich einen Namen zu machen. Daher möchte ich hier die Möglichkeit ergreiffen eine kurze Erklärung [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.impres-sign.com/blog/wordpress/trackbackpingback/attachment/radar-sonar-screen-11900331/" rel="attachment wp-att-1530"><img class="size-full wp-image-1530 alignleft" title="Radar-Sonar-Screen-1190033[1]" src="http://www.impres-sign.com/wp-content/uploads/2011/10/Radar-Sonar-Screen-11900331.jpg" alt="" width="290" height="290" /></a>Das ganze Web wird immer grösser. Dementsprechend wird es auch immer schwiriger den Überblick über den Informationsfluss zu bewahren und sich Beziehnugen zu anderen Vertretern und Gesellen der Branche aufzubauen.</p>
<p>&nbsp;</p>
<p>Auch impres-sign empfindet es als äusserst wichtig sich in der Blogger-Welt zu etablieren und sich einen Namen zu machen. Daher möchte ich hier die Möglichkeit ergreiffen eine kurze Erklärung abzuliefern und nochmals auf die Relevanz von Trackback&#8217;s und Pingback&#8217;s hinzuweisen .</p>
<p>&nbsp;</p>
<h1>Um was geht es?</h1>
<p>Schreibt ein Blogger einen Beitrag, wie den welchen du gerade am lesen bist, und sich dabei auf einen Beitrag eines anderen Blogs bezieht oder die selbe Thematik anspricht, so kann man die beiden Beiträge verlinken.</p>
<p>&nbsp;</p>
<h1>Erklärung und Anwendung</h1>
<p>Wird im Beitrag mittels einem Link auf den verwandten Beitrag verwiesen, so erfolgt bei den aktuelleren Blogsystemen ein automatischer <strong>Pingback</strong> (sofern der Blog besitzer diese nicht ausgschaltet hat).</p>
<p>Anderenfalls bietet sich die Möglichkeit mittels einem <strong>Trackback</strong> eine manuelle Verweisung zu tätigen. (Bei WordPress beispielsweise muss dies unter &#8220;Artikel&#8221; -&gt; &#8220;Artikel Erstellen&#8221; -&gt; &#8220;Optionen Einblenden&#8221; manuell eingeschaltet werden.)</p>
<p>&nbsp;</p>
<h1>Und dann?</h1>
<p>Hat man einige Pingback&#8217;s/Trackback&#8217;s generiert, so werden mehr Leute aufmerksam auf die eigene Seite. Dies führt zu grösserem Traffic, mehr Backlinks und hoffentlich auch zu der einen oder anderen Blogger-Freundschaft.</p>
<p>Wer nun noch mehr über Pingback/Trackback erfahren möchte, vorallem auch im Zusammenhang mit WordPress, so empfehle ich dieses sehr gelungene <strong><a title="WordPress Trackback Tutorial " href="http://www.optiniche.com/blog/117/wordpress-trackback-tutorial/" target="_blank">Tutorial</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/wordpress/trackbackpingback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamische Subnavigation in ilch</title>
		<link>http://www.impres-sign.com/blog/web/dynamische-subnavigation-in-ilch/</link>
		<comments>http://www.impres-sign.com/blog/web/dynamische-subnavigation-in-ilch/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 12:45:03 +0000</pubDate>
		<dc:creator>Michel Käser</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[ilch]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dropdown]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[subnavigation]]></category>
		<guid isPermaLink="false">http://www.impres-sign.com/blog/web/dynamische-subnavigation-in-ilch/</guid>
		<description><![CDATA[Gestern bin ich auf ilch.de, der Webseite meines früheren favorisierten Content Management Systems (CMS) auf einen spannenden Topic gestossen. Ein Community Mitglied wollte wissen, ob es möglich sei, in ilch dynamische Subnavigationen zu realisieren. Im Gegensatz zu WordPress, in welchem eine solche Funktion bereits von Haus auf integriert ist, muss beim ilch CMS selbst Hand [...]]]></description>
			<content:encoded><![CDATA[<p><a><img class="alignleft size-full wp-image-1438" title="dynamic-subnavigation-ilch" src="http://www.impres-sign.com/wp-content/uploads/2011/09/dynamic-subnavigation-ilch.png" alt="" width="290" height="290" /></a>Gestern bin ich auf <a title="ilch.de - Zuhause des ilchClan Content Management System" href="http://www.ilch.de" target="_blank">ilch.de</a>, der Webseite meines früheren favorisierten Content Management Systems (CMS) auf einen <a title="Zum ursprünglichen Topic im ilch.de Forum" href="http://www.ilch.de/forum-showposts-45993-p1.html" target="_blank">spannenden Topic</a> gestossen. Ein Community Mitglied wollte wissen, ob es möglich sei, in ilch dynamische Subnavigationen zu realisieren. Im Gegensatz zu WordPress, in welchem eine solche Funktion bereits von Haus auf integriert ist, muss beim ilch CMS selbst Hand angelegt und gebastelt werden.</p>
<p>Ich habe mich deshalb daran gemacht, eine möglichst einfache und flexible Lösung zu finden, welche sich gut in das CMS integriert und selbst für &#8220;Neulinge&#8221; einfach anzuwenden ist. Ziemlich schnell ist mir dabei einmal mehr jQuery in den Sinn gekommen. Das JavaScript Framework umfasst eine grosse Anzahl an super Funktionen, wobei uns für diese Baustelle <a title="DIe .parent() Funktion auf jQuery" href="http://api.jquery.com/parent/" target="_blank">parent()</a> sehr entgegenkommt.</p>
<p>Aber von Anfang. ilch bietet die Möglichkeit, im Backend dynamische Menüs und Navigationen zu erstellen, welche nach einem festgelegten Muster generiert werden. Um mehrstufige Navigationen zu erstellen bietet sich die Möglichkeit, einzelne Links eine Ebene einzurücken, wodurch sie &#8220;Tochterelement&#8221; des vorhergehenden Menüpunkts werden. Dropdown Navigationen können daher ohne viel Aufwand realisiert werden.</p>
<p>Für den spezifischen Fall des Community Mitglieds sollten die eingerückten Menüpunkte jedoch nur sichtbar sein, wenn die &#8220;Elternseite&#8221; aufgerufen ist. In einem Beispiel könnte die Navigation wie folgt aussehen:</p>
<ul>
<li> Home</li>
<li>News</li>
<ul>
<li>Lesen</li>
<li>Eintragen</li>
</ul>
<li>Forum</li>
<li>Kontakt</li>
</ul>
<p>Würde man die Seite besuchen, bekäme man lediglich die Punkte: Home, News, Forum &amp; Kontakt zu sehen, also die Elemente 1-ster Stufe. Alle &#8220;Tochterelemente&#8221; (Lesen, Eintragen) würden erst sichtbar, wenn die Seite News aktiv ist.</p>
<h3>Wo ist das Problem?</h3>
<p>Würde man das Design statisch anfertigen, also ohne die Möglichkeit die Navigationen im Backend des CMS zu verwalten, gäbe es kein Problem. Das Kunststück liegt aber darin, der Navigation dieses Verhalten aufzudrücken, auch wenn es dynamisch generiert wurde, weil:</p>
<ul>
<li>die Navigation &#8220;wissen&#8221; muss, wo sich der Besucher zur Zeit befindet.</li>
<li>die Subnavigation nur angezeigt werden soll, wenn ein Kriterium (eine bestimmte Seite aktiv) erfüllt wird.</li>
</ul>
<p>Zuerst muss deshalb erreicht werden, dass ilch dem Menüpunkt der momentan aktiven Seite eine Klasse übermittelt, welche den aktiven Zustand signalisiert. Mairu, Coder bei ilch, hat dazu vor längerer Zeit im Forum eine <a title="Zur abgeänderten design.php im ilch Forum" href="http://www.ilch.de/forum-showposts-31396-p1.html#215552" target="_blank">design.php</a> veröffentlicht, welche Besagtes tut.</p>
<pre>&lt;?php
// Copyright by Manuel
// Support www.ilch.de
defined ('main') or die ('no direct access');
if (!isset($ILCH_HEADER_ADDITIONS)) {
$ILCH_HEADER_ADDITIONS = '';
}
if (!isset($ILCH_BODYEND_ADDITIONS)) {
$ILCH_BODYEND_ADDITIONS = '';
}
class design extends tpl {
var $html;
var $design;
var $vars;
var $was;
var $file;
function design ($title, $hmenu, $was = 1, $file = null)
{
global $allgAr;
if (!is_null($file)) {
echo '&lt;div style="display: block; background-color: #FFFFFF; border: 2px solid #ff0000;"&gt;!!Man konnte in einer PHP Datei eine spezielle Index angeben. Damit das Design fuer diese Datei anders aussieht. Diese Funktion wurde ersetzt. Weitere Informationen im Forum auf ilch.de ... Thema: &lt;a href="http://www.ilch.de/forum-showposts-13758-p1.html#108812"&gt;http://www.ilch.de/forum-showposts-13758-p1.html#108812&lt;/a&gt;&lt;/div&gt;';
}
$this-&gt;vars = array();
$this-&gt;file = $file; # setzte das file standart 0 weil durch was definiert
$this-&gt;was = $was; # 0 = smalindex, 1 = normal index , 2 = admin
$this-&gt;design = $this-&gt;get_design();
$link = $this-&gt;htmlfile();
$tpl = new tpl ($link, 2);
if ($tpl-&gt;list_exists ('boxleft')) {
$tpl-&gt;set ('boxleft' , $this-&gt;get_boxes ('l', $tpl));
}
if ($tpl-&gt;list_exists ('boxright')) {
$tpl-&gt;set ('boxright' , $this-&gt;get_boxes ('r', $tpl));
}
// ab 0.6 =  ... 5 menu listen moeglich
for($i = 1;$i &lt;= 5;$i++) {
if ($tpl-&gt;list_exists ('menunr' . $i)) {
$tpl-&gt;set ('menunr' . $i , $this-&gt;get_boxes ($i, $tpl));
}
}
$ar = array
('TITLE' =&gt; $this-&gt;escape_explode($title),
'HMENU' =&gt; $this-&gt;escape_explode($hmenu),
'SITENAME' =&gt; $this-&gt;escape_explode($allgAr['title']),
'hmenuende' =&gt; '',
'vmenuende' =&gt; '',
'hmenubegi' =&gt; '',
'vmenubegi' =&gt; '',
'hmenupoint' =&gt; '',
'vmenupoint' =&gt; '',
'DESIGN' =&gt; $this-&gt;design
);
$tpl-&gt;set_ar($ar);
$this-&gt;html = $tpl-&gt;get(0);
$this-&gt;html .= '{EXPLODE}';
$this-&gt;html .= $tpl-&gt;get(1);
unset ($tpl);
$zsave0 = array();
preg_match_all ("/\{_boxes_([^\{\}]+)\}/" , $this-&gt;html , $zsave0);
$this-&gt;replace_boxes($zsave0[1]);
unset ($zsave0);
$this-&gt;vars_replace();
unset ($this-&gt;vars);
$this-&gt;html = explode('{EXPLODE}', $this-&gt;html);
}
function addheader($text)
{
if (isset($this-&gt;html[0])) {
$this-&gt;html[0] = str_replace('&lt;/head&gt;',$text."\n&lt;/head&gt;" , $this-&gt;html[0] );
return true;
} else {
return false;
}
}
function header ()
{
global $ILCH_HEADER_ADDITIONS;
$this-&gt;addheader($ILCH_HEADER_ADDITIONS);
echo $this-&gt;html[0];
unset ($this-&gt;html[0]);
}
function addtobodyend($text)
{
if (isset($this-&gt;html[1])) {
$this-&gt;html[1] = str_replace('&lt;/body&gt;',$text."\n&lt;/body&gt;" , $this-&gt;html[1] );
return true;
} else {
return false;
}
}
function footer ($exit = 0)
{
global $ILCH_BODYEND_ADDITIONS;
$this-&gt;addtobodyend($ILCH_BODYEND_ADDITIONS);
echo $this-&gt;html[1];
unset ($this-&gt;html[1]);
if ($exit == 1) {
exit();
}
}
function escape_explode ($s)
{
$s = str_replace('{EXPLODE}', '&amp;#123;EXPLODE&amp;#125;', $s);
return ($s);
}
function htmlfile_ini ()
{
global $menu;
$ma = $menu-&gt;get_string_ar();
$ia = array();
if (!file_exists('include/designs/' . $this-&gt;design . '/design.ini')) {
return (false);
}
$ia = parse_ini_file ('include/designs/' . $this-&gt;design . '/design.ini');
arsort($ma);
krsort ($ia);
foreach ($ia as $k =&gt; $v) {
$k = preg_replace("/[^a-zA-Z0-9-*]/", "", $k);
$k = str_replace('*', '[^-]+', $k);
foreach ($ma as $k1 =&gt; $v1) {
if (preg_match("/" . $k . "/", $k1) AND file_exists('include/designs/' . $this-&gt;design . '/' . $v)) {
return ($v);
}
}
}
return (false);
}
function htmlfile ()
{
$ini = $this-&gt;htmlfile_ini ();
/*
if ( !is_null ($this-&gt;file) AND file_exists ('include/designs/'.$this-&gt;design.'/templates/'.$this-&gt;file)) {
$f = 'designs/'.$this-&gt;design.'/templates/'.$this-&gt;file;
} elseif ( !is_null ($this-&gt;file) AND file_exists ('include/templates/'.$this-&gt;file)) {
$f = 'templates/'.$this-&gt;file;
*/
if ($this-&gt;was == 1 AND $ini !== false) {
$f = 'designs/' . $this-&gt;design . '/' . $ini;
} elseif ($this-&gt;was == 0 AND file_exists ('include/templates/' . $this-&gt;design . '/templates/small_index.htm')) {
$f = 'templates/' . $this-&gt;design . '/templates/small_index.htm';
} elseif ($this-&gt;was == 0) {
$f = 'templates/small_index.htm';
} elseif ($this-&gt;was == 1) {
$f = 'designs/' . $this-&gt;design . '/index.htm';
} elseif ($this-&gt;was == 2) {
$f = 'admin/templates/index.htm';
}
return ($f);
}
function replace_boxes ($zsave0)
{
foreach ($zsave0 as $v) {
$dat = strtolower($v);
$buffer = $this-&gt;get_boxcontent ($dat);
if ($buffer !== false) {
$this-&gt;vars['_boxes_' . $v] = $buffer;
}
}
if (!is_array($this-&gt;vars)) {
$this-&gt;vars = array();
}
}
function vars_replace()
{
foreach ($this-&gt;vars as $k =&gt; $v) {
$this-&gt;html = str_replace('{' . $k . '}', $v, $this-&gt;html);
}
}
// ####
function get_boxes ($wo , $tpl)
{
global $lang, $allgAr, $menu;
if (is_numeric($wo)) {
$datei = 'menunr' . $wo;
} elseif ($wo == 'l') {
$datei = 'boxleft';
$wo = 1;
} elseif ($wo == 'r') {
$datei = 'boxright';
$wo = 2;
}
$retur = '';
$ex_ebene = 0;
$ex_was = 1;
$firstmep = false;
$hovmenup = '';
$abf = "SELECT * FROM `prefix_menu` WHERE wo = " . $wo . " AND ( recht &gt;= " . $_SESSION['authright'] . " OR recht = 0 ) ORDER by pos";
$erg = db_query($abf);
while ($r = db_fetch_assoc($erg)) {
$menuar[$r['pos']] = $r;
$menupaths[$r['path']] = $r['pos'];
}
//Aktiven Punkt herausfinden
foreach(array_reverse($menu-&gt;get_string_ar()) as $path){
$path = str_replace('self-','',$path);
if (isset($menupaths[$path])) {
$act_pos = $menupaths[$path];
break;
}
}
foreach ($menuar as $pos =&gt; $row) {
$subhauptx = $row['was'];
$whileMenP = ($subhauptx &gt;= 7 ? true : false);
if (($row['was'] &gt;= 7 AND $ex_was == 1) OR ($ex_ebene &lt; ($row['ebene']-1)) OR ($ex_was &lt;= 4 AND $row['ebene'] &lt;&gt; 0) OR ($row['was'] &gt;= 7 AND !$tpl-&gt;list_exists($hovmenup))) {
continue;
}
// nur wenn ein menu in die variable $menuzw geschrieben wurde
// wird in diese if abfrage gesprungen
if (($whileMenP === false) AND !empty($menuzw)) {
$menuzw .= $this-&gt;get_boxes_get_menu_close ($ex_ebene, 0, $menuzw, $wmpE, $wmpTE, $wmpTEE);
$retur .= $tpl-&gt;list_get($datei, array (htmlentities($boxname), $menuzw . $menuzwE));
$menuzw = '';
}
if ($row['was'] == 1) {
// die box wird direkt in die to return variable geschrieben
$buffer = $this-&gt;get_boxcontent($row['path']);
$retur .= $tpl-&gt;list_get($datei, array ($row['name'] , $buffer));
} elseif ($row['was'] &gt;= 2 AND $row['was'] &lt;= 4) {
// der name des menues wird gesetzt
// und die variable wird gesetzt.
$boxname = $row['name'];
$menuzw = '';
$menuzwE = '';
$ex_ebene = 0; # ex ebene
$hovmenu = '';
if ($row['was'] == 2 AND $tpl-&gt;list_exists('hmenupoint')) {
$hovmenu = 'hmenu';
} elseif ($row['was'] == 3 AND $tpl-&gt;list_exists('vmenupoint')) {
$hovmenu = 'vmenu';
}
$firstmep = true;
if (!empty($hovmenu)) {
$menuzw .= $tpl-&gt;list_get($hovmenu . 'begi', array());
$menuzwE .= $tpl-&gt;list_get($hovmenu . 'ende', array());
}
$hovmenup = $hovmenu . 'point';
} elseif ($whileMenP) {
// menupunkt wird generiert
$ebene = $row['ebene'];
$menuTarget = ($subhauptx == 8 ? '_blank' : '_self');
list ($wmpA, $wmpE, $wmpTE, $wmpTEE) = explode ('|', $tpl-&gt;list_get ($hovmenup, array ($menuTarget, ($subhauptx == 8 ? '' : 'index.php?') . $row['path'], $row['name'], ($row['pos'] == $act_pos ? 'active' : 'inactive'))));
if (!empty($menuzw) AND $firstmep === false) {
$menuzw .= $this-&gt;get_boxes_get_menu_close ($ex_ebene, $ebene, $menuzw, $wmpE, $wmpTE, $wmpTEE);
}
$menuzw .= $wmpA;
$firstmep = false;
}
$ex_was = $row['was'];
$ex_ebene = $row['ebene'];
}
if (!empty($menuzw)) {
$menuzw .= $this-&gt;get_boxes_get_menu_close ($ex_ebene, 0, $menuzw, $wmpE, $wmpTE, $wmpTEE);
$retur .= $tpl-&gt;list_get($datei, array (htmlentities($boxname), $menuzw . $menuzwE));
}
return ($retur);
}
function get_boxes_get_menu_close ($ex_ebene, $ebene, $menuzw, $wmpE, $wmpTE, $wmpTEE)
{
$menu1 = '';
if ($ex_ebene == $ebene AND !empty($menuzw)) {
$menu1 .= $wmpE . "\n";
} elseif ($ex_ebene &gt; $ebene) {
$menu1 .= $wmpE . "\n";
for($i = 0;$i &lt; ($ex_ebene - $ebene); $i++) {
$menu1 .= $wmpTEE . "\n";
}
} elseif ($ex_ebene &lt; $ebene) {
$menu1 .= $wmpTE . "\n";
}
return ($menu1);
}
function get_boxcontent ($box)
{
global $lang, $allgAr, $menu,$ILCH_HEADER_ADDITIONS,$ILCH_BODYEND_ADDITIONS;
if (file_exists('include/boxes/' . $box)) {
$pfad = 'include/boxes/' . $box;
} elseif (file_exists ('include/contents/selfbp/selfb/' . str_replace('self_', '', $box))) {
$pfad = 'include/contents/selfbp/selfb/' . str_replace('self_', '', $box);
} elseif (file_exists('include/boxes/' . $box . '.php')) {
$pfad = 'include/boxes/' . $box . '.php';
} elseif (file_exists('include/boxes/' . $box . '.htm')) {
$pfad = 'include/boxes/' . $box . '.htm';
} elseif (file_exists ('include/contents/selfbp/selfb/' . str_replace('self_', '', $box) . '.php')) {
$pfad = 'include/contents/selfbp/selfb/' . str_replace('self_', '', $box) . '.php';
} elseif (file_exists ('include/contents/selfbp/selfb/' . str_replace('self_', '', $box) . '.htm')) {
$pfad = 'include/contents/selfbp/selfb/' . str_replace('self_', '', $box) . '.htm';
} else {
return (false);
}
ob_start();
require_once($pfad);
$buffer = $this-&gt;escape_explode(ob_get_contents());
ob_end_clean();
return($buffer);
}
}
?&gt;</pre>
<p>Zuerst muss jetzt die design.php im Ordner &#8220;include/includes/class&#8221; mit einer design.php mit Inhalt des obrigen Codes ersetzt werden.</p>
<p>Der Wert der Funktion wird in %4 gespeichert und kann als Variabel im Design verwendet werden. Dazu erweitern wir die  index.htm des Designs, bzw. den Code darin, welcher für die dynamischen Menus zuständig ist. Dieser könnte editiert wie folgt aussehen:</p>
<pre>{_list_vmenupoint@&lt;li class="%4"&gt;&lt;a target="%1" href="%2"&gt;%3&lt;/a&gt;&lt;/li&gt;|}</pre>
<p>Ist der Besucher nach dieser Änderung auf unserer Webseite auf der Seite News, wird dem Navigationspunkt die Klasse &#8220;active&#8221; hinzugefügt.</p>
<h3> CSS Eigenschaften</h3>
<p>Der erste Schritt ist damit abgeschlossen. Von nun an haben wir die Möglichkeit, die Eigenschaften von aktiven/inaktiven Menüpunkten zu unterscheiden. Der CSS Code hängt davon ab, wie die Subnavigation aussehen soll. Wichtig und in den meisten Fällen richtig, sind folgende Elemente:</p>
<pre>ul li ul {display: none} /* Die Subnavigation wird standardmässig nicht angezeigt */
ul li.active ul {display: block} /* Bei aktivem Menüpunkt wird die Subnavigation des Punktes sichtbar */</pre>
<p>Das ganze funktioniert natürlich nur, wenn das Gerüst, welches durch die dynamische Navigation erzeugt wird, so ist:</p>
<pre>&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<h3>jQuery parent()</h3>
<p>Zum Schluss kommt das Problem, welches am meisten Zeit in Anspruch genommen hat. ilch vergibt nun zwar die Klasse &#8220;active&#8221; an den momentanen Menüpunkt, ist dieser aber in der Subnavigation hilft uns das nicht weiter, da wir das vorhergehende &lt;ul&gt; nicht mit CSS ansprechen können.</p>
<pre>&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
<p>Wir binden also jQuery in den &lt;head&gt; Bereich unseres Designs ein:</p>
<pre>&lt;script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
<p>als auch die jQuery parent() Funktion, kurz vor dem &lt;/body&gt; Tag.</p>
<pre>$('li.active').parent().addClass('active-parent');</pre>
<p>Wie wir sehen, fügt diese Funktion dem vorhergehenden &lt;ul&gt; des aktiven li (li.active) die Klasse &#8220;active-parent&#8221; hinzu. Dieses können wir erneut via CSS ansprechen:</p>
<pre>ul li ul.active-parent {display: block} /* Falls ein Unterelement aktiv ist, die Subnavigation aktiv stellen */</pre>
<h3>Ende</h3>
<p>Fertig ist das Werk. Damit ihr euch das alles besser vorstellen könnt, habe ich euch die nötigen Dateien in der richtigen Hirarchie zum Download zusammengestellt.</p>
<p>&nbsp;</p>
<p><a class="button rectangle grey" title="Die dazugehörigen Dateien runterladen" href="http://www.impres-sign.com/wp-content/uploads/2011/09/dynamic_subnavigation_in_ilch.zip">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/web/dynamische-subnavigation-in-ilch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Featured Posts Plugin erweitert</title>
		<link>http://www.impres-sign.com/blog/wordpress/featured-post-plugin-fur-wordpress/</link>
		<comments>http://www.impres-sign.com/blog/wordpress/featured-post-plugin-fur-wordpress/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 19:17:52 +0000</pubDate>
		<dc:creator>Marc Juchli</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[featured_posts_YIW]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[Top Featured]]></category>
		<guid isPermaLink="false">http://www.impres-sign.com/?p=1253</guid>
		<description><![CDATA[Für das Projekt schwingenonline.ch hat impres sign nach einer Lösung gesucht um Artikel sowohl als Featured, sprich hervorgehoben, wie auch Top Featured zu markieren. Die Top Featured markierten Artikel sollen von den Featured Artikel differenziert werden können. Featured Post Plugin with Thumbnail Das bewährte Plugin Featured Post with thumbnail, welches in der WordPress Plugin Library [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.impres-sign.com/wp-content/uploads/2011/08/wordpress-featured_1.png"><img class="alignleft size-full wp-image-1325" title="wordpress-featured_1" src="http://www.impres-sign.com/wp-content/uploads/2011/08/wordpress-featured_1.png" alt="" width="290" height="290" /></a>Für das Projekt <a title="schwingenonline.ch - Alles zum Schweizer Traditionssport" href="http://www.schwingenonline.ch/" target="_blank">schwingenonline.ch</a> hat impres sign nach einer Lösung gesucht um Artikel sowohl als <strong>Featured</strong>, sprich hervorgehoben, wie auch <strong>Top Featured</strong> zu markieren. Die Top Featured markierten Artikel sollen von den Featured Artikel differenziert werden können.</p>
<p><strong>Featured Post Plugin with Thumbnail</strong></p>
<p>Das bewährte Plugin <a title="A really simple way of putting featured posts on your website." href="http://wordpress.org/extend/plugins/featured-post-with-thumbnail/" target="_blank">Featured Post with thumbnail</a>, welches in der WordPress Plugin Library erhältlich ist, ist auchgesprochen gut, lässt jedoch dich Möglichkeit aus, einen Top Featured Artikel zu erfassen bzw. zu markieren.</p>
<p><strong>Version 1.5 by impres sign</strong></p>
<p>impres sign hat deshalb die Version 1.4, welche übrigens unter <a title="WordPress Plugin Featured Posts with thumbnails: highlighting your best articles" href="http://www.yourinspirationweb.com/en/wordpress-plugin-featured-posts-with-thumbnails-highlighting-your-best-articles/" target="_blank">yourinspirationweb</a> sehr schön beschrieben wird, erweitert und eine Version 1.5 erstellt, welche unter anderem die Funktionalität eines Top Featured Artikels bietet.</p>
<p>Wollen wir uns mal die Neuheiten in diesem Plugin genauer ansehen, welche wir für uns als sehr hilfreich empfinden und diese nun euch zur Verfügung stellen möchten.</p>
<p><strong>Anwendung in WordPress</strong></p>
<p>Ist das Plugin einmal installiert, so ist die Bedienung ein Kinderspiel. Das möchte ich euch mit folgendem Screenshot veranschaulichen:</p>
<p><a href="http://www.impres-sign.com/blog/wordpress/featured-post-plugin-fur-wordpress/attachment/bildschirmfoto-2011-08-18-um-12-05-41-2/" rel="attachment wp-att-1350"><img class="alignnone size-full wp-image-1350" title="Featured Post Plugin WordPress Backend" src="http://www.impres-sign.com/wp-content/uploads/2011/08/Bildschirmfoto-2011-08-18-um-12.05.411.png" alt="" width="522" height="331" /></a></p>
<p>Ganz einfach beim entsprechendem Artikel auswählen ob der Beitrag Top Featured, Featured oder einfach ein herkömmlicher Artikel sein soll. Thats it!</p>
<p>&nbsp;</p>
<p><strong>Verwendung in deinem Theme</strong></p>
<p>Im WordPress Theme kann man auf einfach Art und Weise mittels Platzhalter die Featured- oder Top-Featured Artikel ausgeben lassen. Das möchte ich euch nun genäuer erläutern. Auf die Parameter allerdings möchte ich im nächsten Abschnitt dieses Artikels eingehen.</p>
<p>Will man die <strong>Featured Posts </strong>ausgeben, so musss die Funktion <strong>featured_posts_YIW()</strong> aufgerufen werden. Wie schon gesagt, das kann an jeder gewünschten Stelle des Themes eingesetzt werden.</p>
<pre>&lt;?php
/*
* Getting started with featured-post-with-thumbnail plugin.
*/
$args = array(
'title'          =&gt; 'Featured Posts',
'numberposts'  =&gt; 5,
'orderby'      =&gt; 'DESC',
'widththumb'   =&gt; 73,
'heightthumb'  =&gt; 73,
'beforetitle'  =&gt; '&lt;h3&gt;',
'aftertitle'   =&gt; '&lt;/h3&gt;',
'offset'       =&gt; 1,
'category'       =&gt; 3
);
featured_posts_YIW( $args );
?&gt;</pre>
<p>&nbsp;</p>
<p>Die Ausgabe der <strong>Top Featured Posts</strong> ist im Grunde genau das selbe Prinzip wie oben, jedoch muss hier die Funktion <strong>topfeatured_posts_YIW()</strong> aufgerufen werden.</p>
<pre>&lt;?php
/*
* Getting started with my modified featured-post-with-thumbnail plugin.
*/
$args = array(
'title'          =&gt; 'Featured Posts',
'numberposts'  =&gt; 5,
'orderby'      =&gt; 'DESC',
'widththumb'   =&gt; 73,
'heightthumb'  =&gt; 73,
'beforetitle'  =&gt; '&lt;h3&gt;',
'aftertitle'   =&gt; '&lt;/h3&gt;',
'offset'         =&gt; 0
);
topfeatured_posts_YIW( $args );
?&gt;</pre>
<p>&nbsp;</p>
<p><strong>Parameter</strong></p>
<p>Kommen wir noch zu den Parametern. Wie ihr in den beiden Code Beispielen entnehmen könnt, so gebe ich jeweils dem Array <strong>$args</strong> diverse Parameter mit. Auf die einzelnen Bedeutungen und Notwendigkeiten der Parametern, welche in der Version 1.4 bereits vorhanden waren, möchte ich nicht mehr eingehen. Diese könnt ihr ebenfalls unter <a title="WordPress Plugin Featured Posts with thumbnails: highlighting your best articles" href="http://www.yourinspirationweb.com/en/wordpress-plugin-featured-posts-with-thumbnails-highlighting-your-best-articles/" target="_blank">yourinspirationweb</a> nachlesen.</p>
<p>Jedoch stelle ich euch hier die 2 von mir miteingebauten und durchaus hilfreichen Paramter vor:</p>
<p>** <strong>offset</strong> **</p>
<p>(integer)<br />
Der <a title="get_posts offset" href="http://codex.wordpress.org/Template_Tags/get_posts" target="_blank">offset</a> dient dazu, Posts zu überspringen. Gebe ich also im 1. Code Beispiel &#8216;offset&#8217; =&gt; 1, so wird der erste Post übersprungen. Lässt man den Paramter aus, so wird dient der Default int. 0.</p>
<p>** <strong>category</strong> **</p>
<p>(integer)<br />
Mit dem Paramter <a title="get_posts - category" href="http://codex.wordpress.org/Template_Tags/get_posts" target="_blank">category</a> kann man die Kategorie angeben, von welcher die Posts abgeholt werden sollen. Dies erfolgt übrigens <strong>rekursiv</strong>! Gebe ich also im 1. Code Beispiel &#8216;category&#8217; =&gt; 3, so werden alle Posts von der Kategorie mit ID 3 und deren Unterkategorien ausgegeben. Wird der Parameter ausgelassen, so dient der default str. &#8216; &#8216;, was bedeutet, dass von allen Kategorien Posts ausgelesen werden.</p>
<p>&nbsp;</p>
<p><strong>Release Notes</strong></p>
<p><strong></strong>Als Zusammenfassung nochmals meine Änderungen.</p>
<ul>
<li>Add: Function &#8220;topfeatured_posts_YIW()&#8221;</li>
<li>Add: Parameter &#8220;offset&#8221;</li>
<li>Add: Parameter  &#8220;category&#8221;</li>
</ul>
<p>&nbsp;</p>
<p><strong>Download</strong></p>
<p>Alle Änderungen im Code von <strong>Featured Posts with thumbnails Version 1.5</strong> könnt ihr unter meinem <a title="mjnet repository" href="https://github.com/mjnet/featured-post-with-thumbnail_incl_top_featured" target="_blank">GitHub Repository</a> begutachten und herunterladen.</p>
<p>Hier das ZIP zum</p>
<p><a class="button rectangle grey" title="Die zuhehörigen Dateien runterladen" href="http://www.impres-sign.com/wp-content/uploads/2011/08/featured-post-with-thumbnail_incl_top_featured.zip">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/wordpress/featured-post-plugin-fur-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 10 Mac Programme für Webdesigner/Web Developer</title>
		<link>http://www.impres-sign.com/blog/mac/top-10-mac-programme-fur-webdesignerweb-developer/</link>
		<comments>http://www.impres-sign.com/blog/mac/top-10-mac-programme-fur-webdesignerweb-developer/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:16:59 +0000</pubDate>
		<dc:creator>Michel Käser</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Diverses]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[programme]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[webdesign]]></category>
		<guid isPermaLink="false">http://www.impres-sign.com/blog/mac/top-10-mac-programme-fur-webdesignerweb-developer/</guid>
		<description><![CDATA[Die Auswahl an Programmen ist riesig. Leicht verliert man dabei den Überblick und es gelingt einem nur schwer, die richtigen Koryphäen darunter zu finden. Vor allem für Neueinsteiger in der &#8220;Apple-Familie&#8221; kann die Suche nach guten Programmen eine ziemliche Zeit in Anspruch nehmen &#8211; wissen sie doch nicht wo sie mit der Suche beginnen sollen. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.impres-sign.com/wp-content/uploads/2011/08/top-mac-apps_1.png"><img class="alignleft size-full wp-image-1270" title="top-mac-apps_1" src="http://www.impres-sign.com/wp-content/uploads/2011/08/top-mac-apps_1.png" alt="" width="290" height="290" /></a>Die Auswahl an Programmen ist riesig. Leicht verliert man dabei den Überblick und es gelingt einem nur schwer, die richtigen Koryphäen darunter zu finden. Vor allem für Neueinsteiger in der &#8220;Apple-Familie&#8221; kann die Suche nach guten Programmen eine ziemliche Zeit in Anspruch nehmen &#8211; wissen sie doch nicht wo sie mit der Suche beginnen sollen.</p>
<p>Aus diesem Grund möchte ich euch hier meine persönliche Top 10 jener Apps vorstellen, welche für Webdesigner/Web Developer unerlässlich sind oder es zumindest wert sind, ein paar wenige Worte darüber zu verlieren. Da die grosse Mehrheit kostenpflichtig ist, sind jeweils noch kostenlose Alternativen vermerkt (wo bekannt).</p>
<p>Und ja, ich bereits mich schon einmal auf Kommentare à la: &#8220;Wie konntest du nur Programm XY vergessen?&#8221;. Kein Problem &#8211; ich nehme diese gerne zur Kenntniss, vielleicht ist dort sogar das eine oder andere Meisterwerk dabei, von dem ich bisher nichts wusste.</p>
<h3><a title="Zur deutschen Adobe Dreamweaver Produktseite" href="http://www.adobe.com/de/products/dreamweaver.html" target="_blank">Adobe Dreamweaver</a></h3>
<p><img class="alignnone size-full wp-image-1288" title="adobe-dreamweaver_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/adobe-dreamweaver_logo.png" alt="" width="650" height="180" /></p>
<p>Die Produkte von Adobe sollten vermutlich jedem bekannt sein, auch von Windows her. War Adobe Dreamweaver auf meinem Windows Rechner für mich das absolute muss, könnte ich heute gut ohne damit leben. Das Programm macht zwar auch auf einem OSX Rechner einiges her und kommt in üblicher Manier, kann für mich aber nicht mit Coda mithalten. Dennoch, Adobe Dreamweaver ist und bleibt ein durchaus mächtiges Produkt für alle Webdesigner &amp; Web Developer.</p>
<p>Kostenlose Alternativen: <a title="Die Produktseite des Aptana Studio öffnen" href="http://www.aptana.org/products/studio3" target="_blank">Aptana Studio</a>, <a title="Eclipse im Web besuchen" href="http://www.eclipse.org/" target="_blank">Eclipse</a> &amp; <a title="Kleiner aber feiner Editor" href="http://kodapp.com/" target="_blank">Kod</a></p>
<h3><a title="Zur deutschen Adobe Photoshop Produktseite" href="http://www.adobe.com/de/products/photoshopextended.html" target="_blank">Adobe Photoshop</a></h3>
<p><img class="alignnone size-full wp-image-1289" title="adobe-photoshop_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/adobe-photoshop_logo.png" alt="" width="650" height="180" /></p>
<p>Auch das zweite Programm kommt aus dem Hause Adobe und ist das Mass aller Dinge überhaupt. Adobe Photoshop, als das wohl mächtigste Bildbearbeitungsprogramm (und mehr) macht auf dem Mac sogar eine noch bessere Falle, als die Windows Variante. Es fügt sich hervorragend in die OSX Umgebung ein und verblüfft mit, in Windows, fehlenden Funktionen. Ganz günstig ist dieser Spass allerdings nicht &#8211; wer aber einmal auf den Geschmack kommen durfte, wird sich nicht wieder so schnell davon trennen wollen.</p>
<p>Kostenlose Alternativen: <a title="Inkscape. Draw Freely im Web" href="http://inkscape.org/" target="_blank">Inkscape</a>, <a title="GIMP - The GNU Image Manipulation Program" href="http://www.gimp.org/" target="_blank">GIMP</a> &amp; <a title="Die Seashore Sourceforge Webseite besuchen" href="http://seashore.sourceforge.net/The_Seashore_Project/About.html" target="_blank">Seashore</a></p>
<h3><a title="Panic's Coda - one-window web development" href="http://www.panic.com/coda/" target="_blank">Coda</a></h3>
<p><img class="alignnone size-full wp-image-1290" title="code_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/code_logo.png" alt="" width="650" height="180" /></p>
<p>Code, von Panic, ist ein schlanker Code Editor für den Mac, und hat sich ziemlich schnell in meine persönliche Top 10 geschlichen. Im Gegensatz zu Adobe&#8217;s Dreamweaver bleiben bei den beiden Sprachen HTML und CSS einige Punkte liegen, die aber durch die Optik als auch den eigebauten FTP und SSH Clienten wieder gut gemacht werden. Für Einsteiger sicherlich die schlechtere Wahl, für Fortgeschrittene bis hin zum Profi ein absolutes Muss.</p>
<p>Kostenlose Alternativen: siehe Adobe Dreamweaver</p>
<h3><a title="CodeBox - Code snippet manager for Mac OS X" href="http://www.shpakovski.com/codebox/">CodeBox</a></h3>
<p><img class="alignnone size-full wp-image-1291" title="codebox_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/codebox_logo.png" alt="" width="650" height="180" /></p>
<p>Viel Code, viel Arbeit = viele Snippets. Genau hier setzt CodeBox an und bietet in einem tollen Interface die Möglichkeit, seinen eigenen Code in Gruppen zu organisieren. Dieser kann auch gleich mit dem eingebauten Editor bearbeitet werden, wobei die Syntax in mehreren Themes angezeigt werden kann. Das besondere Highlight ist für mich die mitgelieferte Searchbox, welche in der Taskbar Platz nimmt. Hier können alle Snippets durchsucht und gleich in die Zwischenablage kopiert werden &#8211; unglaublich!</p>
<p>Kostenlose Alternativen: <a title="Zur snippely Google Projektseite" href="http://code.google.com/p/snippely/" target="_blank">snippely</a> &amp; <a title="jCodeCollector auf Alessandro Cocco's Privatseite" href="http://www.alessandrococco.com/" target="_blank">jCodeCollector</a></p>
<h3><a title="Dropbox - Mach dir das Leben einfacher." href="https://www.dropbox.com/" target="_blank">Dropbox</a></h3>
<p><img class="alignnone size-full wp-image-1292" title="dropbox_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/dropbox_logo.png" alt="" width="650" height="180" /></p>
<p>Synchronisierung so leicht gemacht wie nie zuvor. Mit Dropbox können Dateien einfach auf alle möglichen Geräte synchronisiert werden, darunter Windows, Mac &amp; Linux Rechner, als auch Androids, iPhones, iPads &amp; Blackberrys. Die 2GB kostenlosen Speicher, welche man zu Beginn erhält können durch Referring erweitert werden und bieten genügend Platz, die wichtigsten Dateien immer auf Abruf dabei zu haben. Geht es um Synchronisierung, gibt es halt nur eines.</p>
<p>Kostenlose Alternativen: <a title="AeroFS - File sync without servers" href="http://www.aerofs.com/" target="_blank">AeroFS</a>, <a title="SparkleShare - Sharing work made easy" href="http://sparkleshare.org/" target="_blank">SparkleShare</a> &amp; <a title="File Sync &amp; Online Backup - Access and File Sharing from Any Device - SugarSync" href="https://www.sugarsync.com/" target="_blank">SugarSync</a></p>
<h3><a title="ImageOptim – a PNG/JPEG/GIF optimizer for Mac OS X" href="http://imageoptim.pornel.net/" target="_blank">ImageOptim</a></h3>
<p><img class="alignnone size-full wp-image-1293" title="imageoptim_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/imageoptim_logo.png" alt="" width="650" height="180" /></p>
<p>Längst sind die Zeiten guter Meta Tags vorbei. Heute muss schon tiefer in die Trickkiste gegriffen werden, um auf Google vorne landen zu können. Ein wichtiger Aspekt ist die Ladegeschwindigkeit der Seite, welche mit wenig Aufwand massiv verbessert werden kann. ImageOptim schrumpft Bilddateien aller Formate auf die kleinst mögliche Grösse &amp; trägt dazu bei. Das tolle dabei &#8211; die Bilder verlieren kaum bis gar nicht an Qualität. dafür umso mehr an Grösse.</p>
<p>Kostenlose Alternativen: <a title="Advanced PNG Optimizer" href="http://optipng.sourceforge.net/" target="_blank">OptiPNG</a> &amp; <a title="PNG Optimizer for Mac OSX - Simple as drag-and-drop" href="http://cloud33.com/squeezer/" target="_blank">Squeezer</a></p>
<h3><a title="MAMP: Mac, Apache, MySQL, PHP" href="http://www.mamp.info/de/index.html" target="_blank">MAMP</a></h3>
<p><img class="alignnone size-full wp-image-1294" title="mamp_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/mamp_logo.png" alt="" width="650" height="180" /></p>
<p>Eine lokale Testumgebung ist ein absolutes Muss. MAMP ist ein einfach zu installierender und verwaltender Apache, MySQL und PHP Server für deinen Mac. Datenbanken können via phpMyAdmin verwaltet werden, Apache mit wenigen Klicks konfiguriert. Dem Programm fehlt es im Gegensatz zu anderen Alternativen zwar massiv an Einstellungsmöglichkeiten, wer jedoch schnell einen funktionierenden Server haben will, der ist damit bestens bedient.</p>
<p>Kostenlose Alternativen: <a title="apache friends - apache, mysql, php und perl installation leicht gemacht" href="http://www.apachefriends.org/de/index.html" target="_blank">XAMPP</a>, <a title="A high performance web server in a one-click installer" href="http://getmnpp.org/" target="_blank">MNPP</a> &amp; <a title="Zend Server Community Edition" href="http://www.zend.com/de/products/server-ce/index" target="_blank">Zend Server CE</a></p>
<h3><a title="pixelmator - Image editing for the rest of us" href="http://www.pixelmator.com/" target="_blank">Pixelmator</a></h3>
<p><img class="alignnone size-full wp-image-1295" title="pixelmator_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/pixelmator_logo.png" alt="" width="650" height="180" /></p>
<p>Es muss nicht immer Adobe Photoshop sein. Mit Pixelmator bietet sich eine kostengünstige Alternative zum teuren Marktführer. Das Programm schliesst sich sogar noch besser in die OSX Umgebung ein und punktet mit seiner Leichtigkeit. Selber greife ich noch immer lieber auf Photoshop zurück, benutze aber Pixelmator mit Vorliebe für weniger aufwändige Arbeiten und schnelle Änderungen. Klarer Pluspunkt: der günstige Preis.</p>
<p>Kostenlose Alternativen: siehe Adobe Photoshop</p>
<h3><a title="Smaller - Batch minify HTML, CSS and JavaScript on Mac OS X" href="http://smallerapp.com/" target="_blank">Smaller</a></h3>
<p><img class="alignnone size-full wp-image-1296" title="smaller_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/smaller_logo.png" alt="" width="650" height="180" /></p>
<p>Ein weiteres sehr kleines, aber feines Tool. Mit Smaller können CSS, als auch JS Dateien per Drag-and-Drop minimiert werden. Raus kommen minimierte Dateien, welche deutlich weniger Speicherplatz benötigen und dadurch (siehe ImageOptim) auch SEO wirksam sind. Hinter dem Programm steckt der <a title="YUI Compressor by Yahoo" href="http://developer.yahoo.com/yui/compressor/" target="_blank">YUI Compressor</a> von Yahoo &#8211; führende Technik, effizient verpackt.</p>
<p>Kostenlose Alternativen: zur Zeit keine bekannt</p>
<h3><a title="Panic - Transmit - The ultimate Mac OS X FTP + SFTP + S3 app" href="http://www.panic.com/transmit/" target="_blank">Transmit</a></h3>
<p><img class="alignnone size-full wp-image-1297" title="transmit_logo" src="http://www.impres-sign.com/wp-content/uploads/2011/08/transmit_logo.png" alt="" width="650" height="180" /></p>
<p>Zum Schluss darf natürlich ein FTP Client nicht fehlen. Mit Transmit, wie Coda aus dem Hause Panic, macht das Arbeiten via FTP/SFTP noch mehr Spass. Nebst den üblichen FTP Funktionen kann damit unter anderem auf WebDav und iDisk zugegriffen werden. In Kombination mit Coda für mich das absolute Highlight, der Import aller Konten in Coda. Ob das Tool sein Geld wert ist, will ich an dieser Stelle nicht beantworten und kann es auch nicht, auf jeden Fall lohnt es sich, einen Blick darauf zu werfen.</p>
<p>Kostenlose Alternativen: <a title="Cyberduck – FTP, SFTP, WebDAV, Cloud Files, Google Docs &amp;amp; Amazon S3 Browser for Mac &amp; Windows." href="http://cyberduck.ch/" target="_blank">Cyberduck</a> &amp; <a title="FileZilla - The free FTP solution" href="http://filezilla-project.org/" target="_blank">FileZilla</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/mac/top-10-mac-programme-fur-webdesignerweb-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-Browser Compability mit jQuery/CSS</title>
		<link>http://www.impres-sign.com/blog/web/cross-browser-compability-mit-jquerycss/</link>
		<comments>http://www.impres-sign.com/blog/web/cross-browser-compability-mit-jquerycss/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 22:52:56 +0000</pubDate>
		<dc:creator>Michel Käser</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[cbc]]></category>
		<category><![CDATA[compability]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">http://www.impres-sign.com/?p=1060</guid>
		<description><![CDATA[Welcher Webdesigner kennt dieses Problem nicht? Bei der Umsetzung des Designs mittels HTML/CSS scheint alles super geklappt zu haben&#8230;, bis die Webseite im Internet Explorer aufgerufen wird &#8211; dann kommt das b&#246;se Erwachen. Die Seite wird, wider Erwartung, falsch dargestellt (das kann auch ein anderer Browser sein, was aber meist nicht der Fall ist). Unerfahrene [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.impres-sign.com/wp-content/uploads/2011/08/cross-browser_compability_jquery-css.png"><img alt="" class="alignleft size-full wp-image-1177" height="290" src="http://www.impres-sign.com/wp-content/uploads/2011/08/cross-browser_compability_jquery-css.png" title="cross-browser_compability_jquery-css" width="290" /></a>Welcher Webdesigner kennt dieses Problem nicht? Bei der Umsetzung des Designs mittels HTML/CSS scheint alles super geklappt zu haben&#8230;, bis die Webseite im Internet Explorer aufgerufen wird &#8211; dann kommt das b&ouml;se Erwachen. Die Seite wird, wider Erwartung, falsch dargestellt (das kann auch ein anderer Browser sein, was aber meist nicht der Fall ist). Unerfahrene Webdesigner fangen an dieser Stelle an, an sich zu zweifeln, erfahrene, sich einmal mehr &uuml;ber Microsoft aufzuregen.</p>
<p>Hat der Unerfahrene erst einmal herausgefunden, weshalb dies so ist, kommt es zum Kampf mit Conditional Comments, zahlreichen Hacks und sich selbst. Auf m&uuml;hsame Art und Weise wird der Code so lange abge&auml;ndert, bis das Resultat in allen g&auml;ngigen Browsern, mehr oder weniger, identisch ist. Der unsch&ouml;ne Nebeneffekt, dass der Quellcode dabei misshandelt, ja nahezu missbraucht wird, ist nicht nur ein optisches Manko. Aber Achtung, die Lage ist nicht hoffnungslos. Zum Gl&uuml;ck haben clevere Menschen uns nicht nur mit HTML/CSS beschenkt, sondern auch mit Javascript (JS). So gibt es elegante M&ouml;glichkeiten, mit relativ wenig Code vollst&auml;ndige Cross-Browser Compability zu schaffen.</p>
<p>jQuery ist wohl die bekannteste und ausgereifteste Javascript Library &#8211; und kommt uns bei diesem Problem entgegen. Stellt euch vor, ihr k&ouml;nntet jeden Browser, und davon jede Version, spezifisch ansprechen. Ihr m&uuml;sst euch das noch nicht einmal vorstellen, denn ihr k&ouml;nnt! Dazu braucht es nicht mehr als exakt zwei Zeilen in eurem HTML Code.</p>
<p>Auf <a href="http://www.tvidesign.co.uk/blog/CSS-Browser-detection-using-jQuery-instead-of-hacks.aspx" rel="nofollow" target="_blank" title="CSS Browser detection using jQuery instead of hacks auf tvdesign.co.uknstead-of-hacks">tvidesign.co.uk</a> bin ich auf ein n&uuml;tzliches jQuery Plugin gestossen, welches dem body jeweils den Namen, als auch die Version des Browsers mit welchem die Seite aufgerufen wird, als Klasse &uuml;bergibt. Ist ein Besucher mit dem Internet Explorer 8 auf der Webseite, wird daraus:</p>
<p>
<pre>&lt;body class="browserIE browserIE8"&gt;</pre>
</p>
<p>Die Installation des Plugins ist dabei ein Kinderspiel.</p>
<p>
<pre>&lt;script src="js/jquery-1.6.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="js/browserDetect-min.js" type="text/javascript"&gt;&lt;/script&gt;</pre>
</p>
<p>Jetzt ist es ein Einfaches, via CSS den IE als auch die Version, direkt anzusprechen. Der CSS Code k&ouml;nnte wie folgt aussehen:</p>
<p>
<pre>/* Alle Browser */
.red {color: red}
/* Alle IEs */
.browserIE .red {color: blue}
/* Nur IE8 */
.browserIE8 .red {color: lime}</pre>
</p>
<p>Dieses Beispiel kann durch die verschiedenen Browser &amp; Versionen selbstverst&auml;ndlich beliebig erweitert bzw. angepasst werden. Damit sind Conditional Comments Vergangenheit.</p>
<p>Pers&ouml;nlich finde ich es ein wenig unsch&ouml;n, dass das Plugin gleich zwei Klassen hinzuf&uuml;gt und &quot;browser&quot; vor die Klassen schiebt, weshalb ich es an meine Bed&uuml;rfnisse angepasst habe. So wird in meiner Version jeweils nur der zweite Wert angegeben, also direkt Browser+Version, ohne &quot;browser&quot; (bzw. ie7). Das abge&auml;nderte Plugin sieht dann wie folgt aus:</p>
<p>
<pre>$(document).ready(function(){
	var userAgent = navigator.userAgent.toLowerCase();
	$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
	// Is this a version of IE?
	if($.browser.msie){
		// Add the version number
		$('body').addClass('ie' + $.browser.version.substring(0,1));
	}
	// Is this a version of Chrome?
	if($.browser.chrome){
		//Add the version number
		userAgent = userAgent.substring(userAgent.indexOf('chrome/') +7);
		userAgent = userAgent.substring(0,1);
		$('body').addClass('chrome' + userAgent);
		// If it is chrome then jQuery thinks it's safari so we have to tell it it isn't
		$.browser.safari = false;
	}
	// Is this a version of Safari?
	if($.browser.safari){
		// Add the version number
		userAgent = userAgent.substring(userAgent.indexOf('version/') +8);
		userAgent = userAgent.substring(0,1);
		$('body').addClass('safari' + userAgent);
	}
	// Is this a version of Mozilla?
	if($.browser.mozilla){
		//Is it Firefox?
		if(navigator.userAgent.toLowerCase().indexOf('firefox') != -1){
			// Add the version number
			userAgent = userAgent.substring(userAgent.indexOf('firefox/') +8);
			userAgent = userAgent.substring(0,1);
			$('body').addClass('firefox' + userAgent);
		}
		// If not then it must be another Mozilla
		else{
			$('body').addClass('mozilla');
		}
	}
	// Is this a version of Opera?
	if($.browser.opera){
		$('body').addClass('opera');
	}
});</pre>
</p>
<p>Etwas, was mich jeweils beim Umsetzen von Designs extrem st&ouml;rt, sind ausserdem unsortierte Listen. Navigation sollte man vorzugsweise damit umsetzen, was Sinn macht. H&auml;ufig werden dabei die ersten, als auch die letzten Elemente einer Liste anders dargestellt, als die Mittleren (bzw. runde Ecken). Realisiert wird das in CSS via:</p>
<pre>li:first-child {}
li:last-child {}</pre>
</p>
<p>Gott sein Dank gibt es den Internet Explorer. Auch hier interpretiert er falsch und ignoriert die zwei Pseudo Klassen (IE8=&lt;). Anstelle dem ersten und dem letzten li eine feste ID zu geben, kann diese ebenfalls via jQuery gesetzt werden. Die Funktion dazu lautet:</p>
<p>
<pre>jQuery(document).ready(function($) {("li:first-child").addClass("first");$("li:last-child").addClass("last")});</pre>
</p>
<p>Unsortierte Listen werden dadurch wie folgt ausgegeben:</p>
<p>
<pre>&lt;ul&gt;
	  &lt;li class="first"&gt;&lt;a&gt;Link&lt;/a&gt;&lt;/li&gt;
	  &lt;li&gt;&lt;a&gt;Link&lt;/a&gt;&lt;/li&gt;
	  &lt;li&gt;&lt;a&gt;Link&lt;/a&gt;&lt;/li&gt;
	  &lt;li class="last"&gt;&lt;a&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</pre>
</p>
<p>Mittels CSS ist es nun ein Einfaches, diese zu stylen.</p>
<p>Das war sie, die einfache Cross-Browser Compability, realisiert mit jQuery und CSS. Nat&uuml;rlich gibt es nach wie vor Eigenschaften, welche nicht Browser &uuml;bergreifend umgesetzt werden k&ouml;nnen, die Anzahl hat sich jedoch deutlich verringert. Damit ihr alle Dateien direkt zur Verf&uuml;gung habt, k&ouml;nnt ihr sie hier runterladen:</p>
<p>&nbsp;</p>
<p><a class="button rectangle grey" href="http://www.impres-sign.com/wp-content/uploads/2011/08/cross-browser_compability_jquery-css.zip" title="Die zuheh&ouml;rigen Dateien runterladen">Download</a></p>
<p>&nbsp;</p>
<p>Ich hoffe, ich konnte damit einigen helfen &amp; w&uuml;rde mich &uuml;ber Feedbacks freuen. Gerne d&uuml;rft ihr auch eigene Probleme schildern, welche ich gerne f&uuml;r euch zu l&ouml;sen versuche.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/web/cross-browser-compability-mit-jquerycss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 geniale Grundsätze</title>
		<link>http://www.impres-sign.com/blog/kolumne/7-geniale-grundsaetze/</link>
		<comments>http://www.impres-sign.com/blog/kolumne/7-geniale-grundsaetze/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 11:39:22 +0000</pubDate>
		<dc:creator>Michel Käser</dc:creator>
				<category><![CDATA[Kolumne]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[depression]]></category>
		<category><![CDATA[dschungel]]></category>
		<category><![CDATA[grundsätze]]></category>
		<category><![CDATA[hoffnung]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[youtube]]></category>
		<guid isPermaLink="false">http://localhost/brankic1979.com/theme/UniverseWP/2011/02/laudantium/</guid>
		<description><![CDATA[Was würden wir Menschen bloss ohne das World Wide Web (WWW) den ganzen lieben langen Tag durch machen? Stellen Sie sich vor, alle Sozialen Netzwerke à la Facebook &#38; Twitter würden nicht länger existieren, wir hätten kein gigantisches Superhirn wie Google zur Seite und müssten Zeitung lesen, um den Lauf der Zeit nicht zu verpassen. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.impres-sign.com/wp-content/uploads/2011/08/7-geniale-grundsaetze.png"><img class="size-full wp-image-1016 alignleft" title="7-geniale-grundsaetze" src="http://www.impres-sign.com/wp-content/uploads/2011/08/7-geniale-grundsaetze.png" alt="" width="290" height="290" /></a>Was würden wir Menschen bloss ohne das World Wide Web (WWW) den ganzen lieben langen Tag durch machen? Stellen Sie sich vor, alle Sozialen Netzwerke à la Facebook &amp; Twitter würden nicht länger existieren, wir hätten kein gigantisches Superhirn wie Google zur Seite und müssten Zeitung lesen, um den Lauf der Zeit nicht zu verpassen.</p>
<p>Alleine diese Vorstellung mag einer grossen Anzahl Leute sauer aufstossen. Wo sonst sollten sie Ihre asozialen, nicht selten peinlichen Bilder veröffentlichen und jedes mal einen Ego-Boost bekommen, wenn der &#8220;Gefällt mir&#8221; Button gedrückt wird? Wo sonst sollten notorische Faulenzer kurz vor einer wichtigen Prüfung den gesamten Lernstoff in Form einer 2-seitigen Zusammenfassung finden können und schliesslich eine gute Arbeit schreiben? Für diese Menschen wäre das Szenario &#8220;Without WWW&#8221; die pure Hölle.</p>
<p>Stimmt schon, meine Grundeinstellung gegenüber dem WWW mag, weit her geholt, depressiv sein. Was heisst mag, eigentlich ist sie wirklich eine abstrakte Form einer Depression, weist sie doch einige typische Sympthome davon auf. Versteht mich nicht falsch, ich gehöre vermutlich selbst zu der Spezies &#8220;WWW-Freaks&#8221;, mögen manche mich so ansehen. Dennoch sehe ich nicht nur das Schwarze, vermehrt eher das Grau, sondern stolpere auch immer wieder über weisse Lichtblicke in diesem ganzen Chaos-Dschungel.</p>
<blockquote>
<h4>Mit einfachsten Mitteln, ganz real &#8211; und dennoch unschlagbar.</h4>
</blockquote>
<p>So bin ich neulich auf der Plattform Youtube auf ein Video aufmerksam geworden, welches genau einen solchen weissen Punkt im endlosen Schwarz darstellt. Genau, obschon Youtube der Königsklasse der Selbstverleumdung eine Möglichkeit bietet, sich zu blamieren, stösst man ab und an auch dort über sinnvolle Videos. Die Rede ist von: &#8220;HFI Animate: 7 principles that make your website more engaging with Dr. Susan Weinschenk&#8221; von Dr. Susan Weinschenk.</p>
<p><code><iframe title='YouTube video player' width='650' height='300' src='http://www.youtube.com/embed/3J85SUZFXNM' frameborder='0' allowfullscreen></iframe></code></p>
<p>Ich bin überzeugt, dass ich das eigentlich nicht mehr schreiben müsste &#8211; wie unglaublich dieses Video &amp; die Botschaften sind. Bestimmt sind Sie längst gleicher Meinung. Dennoch, ich muss. Dr. Susan Weinschenk führt mit Ihrer angenehmen Stimme durch einen Streifen witziger und gleichzeitig grandioser Zeichnungen, welche 7 elementare Gründsätze zum Design einer Webseite umfassen. Es ist simpel gehalten, dennoch beeindruckend.</p>
<p>Warum mache ich darauf aufmerksam? Diese Überlegung ist nicht schwierig. Zwischen all jenen unnützen, schlechten Videos, Bildern und Texten im WWW sticht ein solches hervor &#8211; und lässt negativ Grundeingestellte doch noch die Hoffnung, dass im World Wide Web nicht alles verloren ist (wenn auch viel). Nun denn, klicken Sie jetzt einen Social Share Button unter diesem Text und lassen Sie all Ihre Freunde wissen, was Sie gerade lesen. Ich bin mir ganz sicher, es interessiert sie brennend, warten diese doch den ganzen Tag nur auf solcher Mitteilungen, um ihr Umfeld virtuell zu stalken &#8211; the choice is yours!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.impres-sign.com/blog/kolumne/7-geniale-grundsaetze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

