<?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>Digital entwickelt. &#187; Tutorial</title>
	<atom:link href="http://blog.digitallifedesign.net/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.digitallifedesign.net</link>
	<description>Digital Lifedesign</description>
	<lastBuildDate>Fri, 27 Jan 2012 11:52:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Drupal Modul für eigene Action</title>
		<link>http://blog.digitallifedesign.net/2011/07/drupal-modul-fur-eigene-action/</link>
		<comments>http://blog.digitallifedesign.net/2011/07/drupal-modul-fur-eigene-action/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 10:03:54 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[Actions]]></category>
		<category><![CDATA[Anfänger]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Drupal7]]></category>
		<category><![CDATA[Modul]]></category>
		<category><![CDATA[Rules]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=616</guid>
		<description><![CDATA[Ein eigenes Modul zur Erstellung eigener Actions ist nicht so schwer.]]></description>
			<content:encoded><![CDATA[<div id="attachment_617" class="wp-caption alignleft" style="width: 310px"><a class="thickbox" href="http://blog.digitallifedesign.net/wp-content/uploads/2011/07/demo_action.png"><img class="size-medium wp-image-617 " title="My Module - Demo Action" src="http://blog.digitallifedesign.net/wp-content/uploads/2011/07/demo_action-300x208.png" alt="Eigene Actions in Drupal 7" width="300" height="208" /></a><p class="wp-caption-text">Eigene Actions in Drupal 7</p></div>
<p>Oft stoßen wir an die Grenzen der Fähigkeiten von Drupal-Modulen, so dass nur noch über das <strong><a href="http://drupal.org/project/rules">Rules</a> Modul</strong> die Probleme gelöst werden können. Doch was wenn die Programmierer anderer Module erst gar nicht die entsprechenden Actions deklariert haben? Dann wird es endlich Zeit, ein <strong>eigenes Modul</strong> zu schreiben.</p>
<p>Hier eine kurze Anleitung für Drupal 7.<br />
<span id="more-616"></span></p>
<div style="clear:both; height: 1px;">&nbsp;</div>
<p>1. Die <strong>Ordnerstruktur</strong>:</p>
<p>- site/all/modules/<br />
&#8211; <strong>mymodule/</strong><br />
&#8212;- <strong>mymodule.info</strong><br />
&#8212;- <strong>mymodule.module</strong></p>
<p>2. Inhalt der Datei <strong>mymodule.info</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">name</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> My Module</span>
<span style="color: #000099;">description</span> <span style="color: #000066; font-weight:bold;">=</span> <span style="color: #933;">&quot;My own Action&quot;</span>
<span style="color: #000099;">package</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> Other</span>
<span style="color: #000099;">core</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 7.x</span>
dependencies<span style="">&#91;</span><span style="">&#93;</span> <span style="color: #000066; font-weight:bold;">=</span> devel</pre></div></div>

<p>3. Inhalt der Datei <strong>mymodule.module</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * @file
 * Demo Module that shows some basic module stuff
 * @date 2011
 * @author Michael Lambertz
 */</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * implements hook_rules_action_info()
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> mymodule_rules_action_info<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #000088;">$action</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'mymodule_action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
      <span style="color: #0000ff;">'label'</span>	<span style="color: #339933;">=&gt;</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Demo Action'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
      <span style="color: #0000ff;">'group'</span> <span style="color: #339933;">=&gt;</span> t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'My Module'</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #000088;">$action</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * demo action gets a debug output of some experimental content
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> mymodule_action<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  dpm<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello World&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>4. Nun noch das Modul aktivieren und für die eigenen Zwecke anpassen.</p>
<p>Ich hoffe, das hilft einigen hier weiter.<br />
<strong>Weitere Tipps zu Drupal Modul-Programmierung einfach hier in den Kommentaren posten&#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2011/07/drupal-modul-fur-eigene-action/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal 7: &#8220;Bearbeiten&#8221;-Link für Nodes</title>
		<link>http://blog.digitallifedesign.net/2011/04/drupal-7-bearbeiten-link-fur-nodes/</link>
		<comments>http://blog.digitallifedesign.net/2011/04/drupal-7-bearbeiten-link-fur-nodes/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 10:19:28 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Edit]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[Panels]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=594</guid>
		<description><![CDATA[Normalerweise ist man wegen der Tabs nicht auf eigene Edit-Links im Template angewiesen, aber Ausnahmen gibt es zum Beispiel, wenn man mit Panels arbeitet, und hier wiederum Nodes integriert. Wie man also im node.tpl.php auch einen Edit-Link einbaut inklusive Zugriffs-Regeln (user_access), zeige ich hier:

Im node.tpl.php bzw. im panels-pane.tpl.php des Themes:

/*
// für panels-pane.tpl.php
if (isset($content[&#34;#node&#34;])) $node = [...]]]></description>
			<content:encoded><![CDATA[<p>Normalerweise ist man wegen der <strong>Tabs</strong> nicht auf <strong>eigene Edit-Links</strong> im Template angewiesen, aber Ausnahmen gibt es zum Beispiel, wenn man mit <strong>Panels</strong> arbeitet, und hier wiederum <strong>Nodes</strong> integriert. Wie man also im node.tpl.php auch einen Edit-Link einbaut inklusive Zugriffs-Regeln (user_access), zeige ich hier:</p>
<p><span id="more-594"></span><br />
Im <i>node.tpl.php</i> bzw. im <i>panels-pane.tpl.php</i> des Themes:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/*
// für panels-pane.tpl.php
if (isset($content[&quot;#node&quot;])) $node = $content[&quot;#node&quot;];
*/</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$node</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// nur wenn Node-Objekt vorhanden (bei Panels nicht automatisch)</span>
<span style="color: #009900;">&#123;</span>
   <span style="color: #000088;">$type</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">type</span><span style="color: #339933;">;</span>
   <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>user_access<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;edit any <span style="color: #006699; font-weight: bold;">$type</span> content&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Rechte für den Node Type</span>
   <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$nid</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$node</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">nid</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">echo</span> l<span style="color: #009900;">&#40;</span>t<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'edit'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'node/'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$nid</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/edit'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Freue mich natürlich über Ergänzungen oder Korrekturen. Demnächst poste ich übrigens mal wieder etwas mehr in meinem Blog. Vermutlich aber demnächst dann auch über eine Drupal-Seite.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2011/04/drupal-7-bearbeiten-link-fur-nodes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>private und public function mit Javascript</title>
		<link>http://blog.digitallifedesign.net/2010/08/private-und-public-function-mit-javascript/</link>
		<comments>http://blog.digitallifedesign.net/2010/08/private-und-public-function-mit-javascript/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 08:08:30 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Objektorientierung]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[public]]></category>
		<category><![CDATA[Sichtbarkeit von Funktionen]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=504</guid>
		<description><![CDATA[Klassen in Javascript? Private und öffentliche Funktionen? Ja, das geht. Als ich gerade im phphatesme-Blog den Artikel über objektorientiertes JavaScript [1] gelesen habe, dachte ich an ein Code-Snippet, das ich mir vor einigen Wochen zurechtgelegt hatte. Dieses Snippet kann etwas entscheidendes mehr als das phphatesme-Tutorial und dient mir als Grundlage für Javascript-Applikationen. Hier ist es:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_511" class="wp-caption alignleft" style="width: 310px"><a rel="attachment wp-att-511" href="http://blog.digitallifedesign.net/2010/08/private-und-public-function-mit-javascript/javascript/"><img class="size-medium wp-image-511" title="Javascript kann weitaus mehr als Popups" src="http://blog.digitallifedesign.net/wp-content/uploads/2010/08/javascript-300x142.png" alt="Javascript kann weitaus mehr als Popups" width="300" height="142" /></a><p class="wp-caption-text">Javascript kann weitaus mehr als Popups</p></div>
<p>Klassen in Javascript? Private und öffentliche Funktionen? Ja, das geht. Als ich gerade im phphatesme-Blog den Artikel über objektorientiertes JavaScript <a href="http://www.phphatesme.com/blog/webentwicklung/objektorientiertes-javascript-2/"><em>[1]</em></a> gelesen habe, dachte ich an ein Code-Snippet, das ich mir vor einigen Wochen zurechtgelegt hatte. Dieses Snippet kann etwas entscheidendes mehr als das phphatesme-Tutorial und dient mir als Grundlage für Javascript-Applikationen. Hier ist es:<br />
<span id="more-504"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> meineApplikation <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> _defaults <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #3366CC;">&quot;var1&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;value1&quot;</span><span style="color: #339933;">,</span>
		<span style="color: #3366CC;">&quot;var2&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;value2&quot;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> _opts<span style="color: #339933;">;</span>	<span style="color: #006600; font-style: italic;">// Optionen</span>
	<span style="color: #003366; font-weight: bold;">var</span> _privateVariable<span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//Private Variable</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Private Funktionen</span>
	<span style="color: #003366; font-weight: bold;">function</span> _myPrivateFunction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		_privateVariable <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;blah&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Öffentliche Funktionen (public)</span>
	<span style="color: #000066; font-weight: bold;">return</span><span style="color: #009900;">&#123;</span>
		init<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #006600; font-style: italic;">// jQuery Methode zum Mischen der Benutzer-</span>
			<span style="color: #006600; font-style: italic;">// mit den Default-Optionen</span>
			_opts <span style="color: #339933;">=</span> $.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>_defaults<span style="color: #339933;">,</span> options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
		test<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			_myPrivateFunction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;var1=&quot;</span><span style="color: #339933;">+</span>_ops.<span style="color: #660066;">var1</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;, var 2=&quot;</span><span style="color: #339933;">+</span>_opts.<span style="color: #660066;">var2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// application test</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// ändere var1, behalte andere</span>
meineApplikation.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #3366CC;">&quot;var1&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;changed value&quot;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #006600; font-style: italic;">// Öffentliche Funktion</span>
meineApplikation.<span style="color: #660066;">test</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #006600; font-style: italic;">// funktioniert</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// Private Funktion</span>
meineApplikation._myPrivateFunction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">// gibt Fehlermeldung zurück</span></pre></td></tr></table></div>

<p>Ich hoffe der Code hilft einigen hier. Über Feedbacks freue ich mich!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/08/private-und-public-function-mit-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Drupal Datenbank ändern</title>
		<link>http://blog.digitallifedesign.net/2010/07/drupal-datenbank-andern/</link>
		<comments>http://blog.digitallifedesign.net/2010/07/drupal-datenbank-andern/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 06:44:03 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[aktualisieren]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Verbindung]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=501</guid>
		<description><![CDATA[Die Verbindung zur MySQL-Datenbank in Drupal nachträglich zu ändern ist ganz einfach. In der Datei sites/default/settings.php muss nur eine Zeile angepasst werden:

92
$db_url = 'mysqli://username:password@localhost/database';

Hier muss natürlich username, password und database durch den Benutzernamen, das Passwort und den Datenbanknamen ersetzt werden. Das war&#8217;s schon.
]]></description>
			<content:encoded><![CDATA[<p>Die Verbindung zur MySQL-Datenbank in Drupal nachträglich zu ändern ist ganz einfach. In der Datei <strong>sites/default/settings.php</strong> muss nur eine Zeile angepasst werden:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>92
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'mysqli://username:password@localhost/database'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Hier muss natürlich <em>username</em>, <em>password</em> und <em>database</em> durch den Benutzernamen, das Passwort und den Datenbanknamen ersetzt werden. Das war&#8217;s schon.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/07/drupal-datenbank-andern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal Theme mit Haml erstellen</title>
		<link>http://blog.digitallifedesign.net/2010/07/drupal-theme-mit-haml-erstellen/</link>
		<comments>http://blog.digitallifedesign.net/2010/07/drupal-theme-mit-haml-erstellen/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 10:54:25 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Haml]]></category>
		<category><![CDATA[phphaml]]></category>
		<category><![CDATA[Template Engine]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=480</guid>
		<description><![CDATA[Seit Jahren auf der Suche nach alternativen Template-Engines bin ich mal wieder auf der Drupal Website fündig geworden. Haml (XHTML Abstraction Markup Language) nennt sich das Grundkonzept, und es kann auch problemlos in Drupal eingesetzt werden. Die Konstruktion neuer Templates ist spielend einfach. Hier eine minimale Anleitung.
&#160;

Als erstes muss die Engine installiert werden. Man lädt [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_481" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.digitallifedesign.net/wp-content/uploads/2010/07/haml-website.png"><img class="size-medium wp-image-481 " title="haml-website" src="http://blog.digitallifedesign.net/wp-content/uploads/2010/07/haml-website-300x213.png" alt="" width="300" height="213" /></a><p class="wp-caption-text">Haml ist eine alternative Template-Engine, ursprünglich entwickelt für Ruby, kann aber auch im PHP-Kontext eingesetzt werden</p></div>
<p>Seit Jahren auf der Suche nach alternativen Template-Engines bin ich mal wieder auf der Drupal Website fündig geworden. Haml (XHTML Abstraction Markup Language) nennt sich das Grundkonzept, und es kann auch problemlos in Drupal eingesetzt werden. Die Konstruktion neuer Templates ist spielend einfach. Hier eine minimale Anleitung.<span id="more-480"></span></p>
<div style="clear:both; height: 1px;">&nbsp;</div>
<ol>
<li>Als erstes muss die Engine installiert werden. Man lädt sie <a href="http://drupal.org/project/haml_engine">hier</a> runter, und entpackt sie in das Verzeichnis <em>themes/engines/</em>. Den Ordner sollte man noch <strong>umbenennen in &#8220;haml&#8221;</strong>.</li>
<li>Dann muss phphaml noch installiert werden. Das Paket lädt man <a href="http://sourceforge.net/projects/phphaml/files/">hier</a> runter, und entpackt es in <em>themes/engines/haml/</em>.</li>
<li>Nun kann das neue haml-Theme bereits angelegt werden. Wie das Erstellen von Themes in Drupal funktioniert, soll hier nicht im Detail erklärt werden (mehr Infos dazu findet man auf der <a href="http://drupal.org/theme-guide">Drupal-Seite</a>). Wir legen also im Theme-Ordner ein neues Verzeichnis <em>hamltheme/</em> an. Darin wird erst die Datei <em>hamltheme.info</em> erstellt mit dem Unterschied zu anderen Theme-Info-Dateien, dass wir hier <strong>haml als Templateengine</strong> aktivieren:<br/>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">name <span style="color: #339933;">=</span> Haml Theme
description <span style="color: #339933;">=</span> 
version <span style="color: #339933;">=</span> VERSION
core <span style="color: #339933;">=</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">.</span>x
engine <span style="color: #339933;">=</span> haml
&nbsp;
<span style="color: #339933;">;</span> etc<span style="color: #339933;">.</span></pre></td></tr></table></div>

</li>
<li>Nun wird noch das Page-Template erstellt. Dazu legen wir eine neue Datei page.haml an. Als Basis-Inhalte fügen wir Folgendes ein (<strong>Einrückung beachten!*</strong>):<br/>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">!!!
%html
  %head
    = $head
    %title= $head_title
    = $styles
    = $scripts
  %body
    #container
      / primary links as styled list
      %ul#primary
        - foreach($primary_links as $link)
          %li
            %a{:href =&gt; $base_path.$link[href]}= $link[title]
      #header= $header
      #left= $left
      #main
        = $tabs
        = $messages
        = $help
        %h2.title= $title
        #content= $content
        #right= $right
        #footer= $footer</pre></td></tr></table></div>

</li>
<li><strong>*Achtung:</strong> Bei der haml-Syntax ist die Einrückung (Leerstellen, Tabulator) entscheiden, ob ein Element als children oder als sibling erstellt wird.</li>
<li>Danach kann man das Theme bereits unter <em>admin/build/themes</em> aktivieren.</li>
<li>Nun müssen natürlich ggf. noch Anpassungen für die anderen Templates (node.haml usw.) gemacht werden.</li>
</ol>
<p>Interessant ist auch, dass man selbst HTML und PHP-Code in die Templates integrieren kann. Damit sollte am besten jeder selbst einmal etwas rumexperimentieren. Einige Beispiele für die Syntax finden sich im Ordner <em>themes/engines/haml/phpHaml/tpl/</em>.</p>
<p>Viel Spaß!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/07/drupal-theme-mit-haml-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inkscape-Tutorial: Masken und Transparenz</title>
		<link>http://blog.digitallifedesign.net/2010/06/inkscape-tutorial-masken-und-transparenz/</link>
		<comments>http://blog.digitallifedesign.net/2010/06/inkscape-tutorial-masken-und-transparenz/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 11:12:36 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Video-Tutorials]]></category>
		<category><![CDATA[Inkscape]]></category>
		<category><![CDATA[Masken]]></category>
		<category><![CDATA[Transparenz]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Verläufe]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=451</guid>
		<description><![CDATA[(Video: Schau dir dieses Video auf der Seite des Artikels an)
]]></description>
			<content:encoded><![CDATA[<pre>(Video: Schau dir dieses Video auf der Seite des Artikels an)</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/06/inkscape-tutorial-masken-und-transparenz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegExp &#8220;alles außer&#8221; Denkfehler</title>
		<link>http://blog.digitallifedesign.net/2010/04/regexp-alles-auser-denkfehler/</link>
		<comments>http://blog.digitallifedesign.net/2010/04/regexp-alles-auser-denkfehler/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 14:13:19 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[Marker]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[preg_replace]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[reguläre Ausdrücke]]></category>
		<category><![CDATA[Templates]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=403</guid>
		<description><![CDATA[Wenn man in PHP durch die Funktion preg_replace() zwischen zwei beliebigen Markierungen (z.B. HTML-Tags) den Inhalt ersetzen will, dann ist das erst einmal einfach möglich:

preg_replace&#40;'/&#60;.*&#62;(.*)&#60;\/.*&#62;/', 'Michael', 'Guten Tag, &#60;span&#62;Gast&#60;/span&#62;!'&#41;;

Bei einer Erweiterung ergibt sich jedoch schnell das Problem, dass diese Markierungen entweder nur einmal im gesamten Text ($subject) vorkommen darf. Kommen die Markierungen mehrmals vor, so [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man in PHP durch die Funktion preg_replace() zwischen zwei beliebigen Markierungen (z.B. HTML-Tags) den Inhalt ersetzen will, dann ist das erst einmal einfach möglich:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/&lt;.*&gt;(.*)&lt;\/.*&gt;/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Michael'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Guten Tag, &lt;span&gt;Gast&lt;/span&gt;!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Bei einer Erweiterung ergibt sich jedoch schnell das Problem, dass diese Markierungen entweder nur einmal im gesamten Text ($subject) vorkommen darf. Kommen die Markierungen mehrmals vor, so ersetzt preg_replace() den Inhalt zwischen der allerersten und der allerletzten Markierung. Das ist meistens unerwünscht.<br />
<span id="more-403"></span></p>
<p>Wer mit regulären Ausdrücken noch nicht sehr erfahren ist, versucht nun durch Modifikation des Suchmusters zu verhindern, dass zwischen den Markierungen die Markierungen nochmals vorkommen, also etwas nach dem Schema: &#8220;Finde alles außer die Markierungen zwischen den Markierungen!&#8221;. Damit ist man in die Falle getappt und vertrödelt endlos Zeit.</p>
<h2>Die Lösung</h2>
<p>Stattdessen gibt es den einfachen Modifier U. Dieser steht für <em>ungreedy</em>. Er bewirkt, dass die RegExp-Engine versucht, den kleinstmöglichen Text zu finden. (Standard ist <em>greedy</em>).<br />
Wir suchen also folgendermaßen:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/&lt;.*&gt;(.*)&lt;\/.*&gt;/U'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Michael'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Guten Tag, &lt;span&gt;Gast&lt;/span&gt;! Auf Wiedersehen, &lt;span&gt;Gast&lt;/span&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/04/regexp-alles-auser-denkfehler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex Builder: Debugging im Player, nicht im Browser</title>
		<link>http://blog.digitallifedesign.net/2010/02/flex-builder-debugging-im-player-nicht-im-browser/</link>
		<comments>http://blog.digitallifedesign.net/2010/02/flex-builder-debugging-im-player-nicht-im-browser/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 09:58:25 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Flashplayer]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=368</guid>
		<description><![CDATA[Ich hab gestern den Flex Builder Alpha 5 für Linux mit Eclipse 3.5 (Galileo) installiert, und immer wieder macht man die gleichen Dinge und findet die Einstellungen nicht. So suchte ich gestern Abend lange Zeit nach einer Lösung, wie man Flex-Applikationen im Player statt im Browser debuggen kann. Hier die Lösung:

1. Beim Erstellen des neuen [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_369" class="wp-caption alignleft" style="width: 221px"><a class="thickbox" title="Muss man drauf kommen: beim Erstellen des neuen Flex Projektes müssen bereits die Einstellungen vorgenommen werden." href="http://blog.digitallifedesign.net/wp-content/uploads/2010/02/flext_debug_player.png"><img class="size-medium wp-image-369 " title="flex_debug_player" src="http://blog.digitallifedesign.net/wp-content/uploads/2010/02/flext_debug_player-300x259.png" alt="Im Player wollen wir debuggen, nicht im Browser!" width="211" height="182" /></a><p class="wp-caption-text">Im Player wollen wir debuggen, nicht im Browser!</p></div>
<p>Ich hab gestern den Flex Builder Alpha 5 für Linux mit Eclipse 3.5 (Galileo) installiert, und immer wieder macht man die gleichen Dinge und findet die Einstellungen nicht. So suchte ich gestern Abend lange Zeit nach einer Lösung, wie man Flex-Applikationen im Player statt im Browser debuggen kann. Hier die Lösung:</p>
<p><span id="more-368"></span></p>
<p>1. Beim <strong>Erstellen des neuen Flex-Projektes</strong> geben wir als &#8220;<strong>Application Server Type</strong>&#8221; die Auswahl <strong>None</strong> an! Nicht PHP, sonst klappt es nicht.</p>
<p>2. In der &#8220;<strong>Debug Configuration&#8230;</strong>&#8221; muss im Bereich &#8220;URL or path to launch&#8221; das Häkchen bei &#8220;Use defaults&#8221; weg, und wir ändern den Dateityp von .html in <strong>.swf</strong></p>
<p>3. Falls man die Projekteinstellungen nicht gemacht hat, müssen in der Datei <strong>.flexProperties</strong> die Attribute des Tags flexProperties angepasst werden:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;flexProperties flexServerType=&quot;0&quot; toolCompile=&quot;true&quot; useServerFlexSDK=&quot;false&quot; version=&quot;1&quot;/&gt;</pre></div></div>

<h2>Zum Thema Adobe und Linux</h2>
<p>Hmm, weiß nicht, irgendwie mögen sie es nicht, aber dennoch gibt&#8217;s nun auch AIR für Adobe. Leider sind doch recht viele Entwickler bei Linux gelandet, und das ist nun mal eine Zielgruppe von Flex. Insofern wollen wir hoffen, dass der FlexBuilder demnächst auch für Linux mal richtig richtig funktioniert <img src='http://blog.digitallifedesign.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2010/02/flex-builder-debugging-im-player-nicht-im-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perspektivisch verzerren mit Inkscape</title>
		<link>http://blog.digitallifedesign.net/2009/12/perspektivisch-verzerren-mit-inkscape/</link>
		<comments>http://blog.digitallifedesign.net/2009/12/perspektivisch-verzerren-mit-inkscape/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 15:08:18 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Inkscape]]></category>
		<category><![CDATA[Perspektive]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Verzerren]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=326</guid>
		<description><![CDATA[Es erstaunt mich immer wieder aufs neue, was Inkscape so alles kann. Seit eben weiß ich nun auch, wie man Pfade perspektivisch verzerren kann. Wer nicht lange suchen will, für den gibt&#8217;s hier die Anleitung.

Es gibt nur einige wenige Dinge zu beachten, die sind jedoch sehr wichtig, sonst klappt es nicht:

Alle zu verzerrenden Objekte müssen [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_328" class="wp-caption alignleft" style="width: 275px"><a class="thickbox" href="http://blog.digitallifedesign.net/wp-content/uploads/2009/12/inkscape_perspective.png"><img class="size-medium wp-image-328 " title="inkscape_perspective" src="http://blog.digitallifedesign.net/wp-content/uploads/2009/12/inkscape_perspective-265x300.png" alt="Perspektivisches Verzerren mit Inkscape" width="265" height="300" /></a><p class="wp-caption-text">Perspektivisches Verzerren mit Inkscape</p></div>
<p>Es erstaunt mich immer wieder aufs neue, was Inkscape so alles kann. Seit eben weiß ich nun auch, wie man Pfade perspektivisch verzerren kann. Wer nicht lange suchen will, für den gibt&#8217;s hier die Anleitung.<br />
<a href="http://www.youtube.com/watch?v=GMbIPleMiZ0&amp;feature=player_embedded"><span id="more-326"></span></a></p>
<p>Es gibt nur einige wenige Dinge zu beachten, die sind jedoch sehr wichtig, sonst klappt es nicht:</p>
<ol>
<li>Alle zu verzerrenden Objekte müssen <strong>Pfade</strong> sein (oder in Pfade konvertiert).</li>
<li>Will man <strong>mehrere Objekte</strong> zusammen verzerren, müssen sie <strong>gruppiert </strong>(Strg+G) werden.</li>
<li>Danach zeichnet man den <strong>Verzerrungspfad</strong> als Bezierkurve &#8211; man muss dabei <strong>unten links anfangen</strong>, sonst wird die Verzerrung entsprechend verdreht.</li>
<li>Nun <strong>als erstes das zu verzerrende Objekt</strong> auswählen (bzw. die Gruppe), <strong>als zweites</strong> (mit angehaltener Shift-Taste) <strong>den Verzerrungspfad </strong>(bei Inkscape 0.47 unter Ubuntu ist das jedenfalls so, und nicht umgekehrt)</li>
<li>Unter <strong>Erweiterungen-&gt;Pfad modifizieren-&gt;Perspektive</strong> wählen und abwarten <img src='http://blog.digitallifedesign.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
</ol>
<p>Dieses Video führt das Ganze auch noch vor, aber Achtung, es behauptet, dass man die Objekte genau umgekehrt auswählen muss:<a href="http://www.youtube.com/watch?v=GMbIPleMiZ0&amp;feature=player_embedded"> Screencast Perspektivisches Verzerren mit Inkscape auf Youtube</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2009/12/perspektivisch-verzerren-mit-inkscape/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TYPO3 Indexed Search indiziiert metatags</title>
		<link>http://blog.digitallifedesign.net/2009/08/typo3-indexed-search-indiziiert-metatags/</link>
		<comments>http://blog.digitallifedesign.net/2009/08/typo3-indexed-search-indiziiert-metatags/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 16:13:44 +0000</pubDate>
		<dc:creator>drcho</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[Problemlösung]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://blog.digitallifedesign.net/?p=195</guid>
		<description><![CDATA[Wie kann es sein, dass die TYPO3-Extension noch immer die Meta-Tags mit indiziiert? Das Problem lässt sich noch immer nur über Hardcoding in den Sys-Extensions lösen lässt. Wie dem auch sei, die Lösung ist noch immer die gleiche wie 2007. Hier der Link:
Indexed Search &#8211; Metatags ignorieren  &#8211; typo3-tutorials.org
Ab der TYPO3-Version 4.2 lässt sich das [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: line-through;">Wie kann es sein, dass die TYPO3-Extension noch immer die Meta-Tags mit indiziiert? Das Problem lässt sich noch immer nur über Hardcoding in den Sys-Extensions lösen lässt. Wie dem auch sei, die Lösung ist noch immer die gleiche wie 2007. Hier der Link:</span></p>
<p><span style="text-decoration: line-through;"><a href="http://www.typo3-tutorials.org/tutorials/extensions/indexed-search-metatags-ignorieren.html">Indexed Search &#8211; Metatags ignorieren  &#8211; typo3-tutorials.org</a></span></p>
<p>Ab der TYPO3-Version 4.2 lässt sich das indiziieren von Meta-Tags in der Extension indexed_search endlich per TS-Setup abschalten. Man muss nicht mehr wie in den Versionen zuvor im Quelltext der Extension hardcoden. Hier das TS-Setup:</p>
<pre>config.index_metatags =
page.config.index_metatags =</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.digitallifedesign.net/2009/08/typo3-indexed-search-indiziiert-metatags/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

