<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Smarty on Ulis Notizen</title>
    <link>https://wolf-u.li/tag/smarty/</link>
    <description>Recent content in Smarty on Ulis Notizen</description>
    <generator>Hugo</generator>
    <language>de</language>
    <copyright>Copyright 2006-CURRENTYEAR Uli Wolf - All rights reserved</copyright>
    <lastBuildDate>Thu, 01 Sep 2011 23:06:32 +0100</lastBuildDate>
    <atom:link href="https://wolf-u.li/tag/smarty/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Smarty Template Engine zustätzlich mit Anzeige einer mobilen Version ausstatten</title>
      
      
      <link>https://wolf-u.li/smarty-template-engine-zustaetzlich-mit-anzeige-einer-mobilen-version-ausstatten/</link>
      <pubDate>Sun, 04 May 2008 12:08:43 +0400</pubDate>
      <guid>https://wolf-u.li/smarty-template-engine-zustaetzlich-mit-anzeige-einer-mobilen-version-ausstatten/</guid>
      <description>&lt;p&gt;Die &lt;a href=&#34;https://wolf-u.li/tag/smarty/&#34;
    title=&#34;Smarty&#34; 
   &gt;
  Smarty&lt;/a&gt; &lt;link rel=dns-prefetch href=//www.smarty.net /&gt; &lt;a href=&#34;http://www.smarty.net/&#34;
    title=&#34;Template Engine&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  Template Engine&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt; ist ein mächtiges Tool, wenn es um die Template-Behandlung und deren Caching geht. Seit gut einem Jahr programmiere ich nun in meiner Freizeit an einem PHP-Projekt, welches nun auch auf meinem &lt;a href=&#34;https://wolf-u.li/tag/htc/&#34;
    title=&#34;HTC&#34; 
   &gt;
  HTC&lt;/a&gt; &lt;a href=&#34;https://wolf-u.li/tag/kaiser/&#34;
    title=&#34;Kaiser&#34; 
   &gt;
  Kaiser&lt;/a&gt; dargestellt werden soll. Da dieser jedoch ein paar Änderungen an der Übersicht (Beispielsweise statt 50 Einträgen in einer Liste nur 10-20) und am prinzipiellen Datenhandling (Ajax ist da im Pocket Internet Explorer nicht so wirklich vorhanden) benötigt, kann man nicht einfach nur im Header ein anderes Stylesheet einsetzen.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Die <a href="/tag/smarty/"
    title="Smarty" 
   >
  Smarty</a> <link rel=dns-prefetch href=//www.smarty.net /> <a href="http://www.smarty.net/"
    title="Template Engine" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Template Engine&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> ist ein mächtiges Tool, wenn es um die Template-Behandlung und deren Caching geht. Seit gut einem Jahr programmiere ich nun in meiner Freizeit an einem PHP-Projekt, welches nun auch auf meinem <a href="/tag/htc/"
    title="HTC" 
   >
  HTC</a> <a href="/tag/kaiser/"
    title="Kaiser" 
   >
  Kaiser</a> dargestellt werden soll. Da dieser jedoch ein paar Änderungen an der Übersicht (Beispielsweise statt 50 Einträgen in einer Liste nur 10-20) und am prinzipiellen Datenhandling (Ajax ist da im Pocket Internet Explorer nicht so wirklich vorhanden) benötigt, kann man nicht einfach nur im Header ein anderes Stylesheet einsetzen.</p>
<p>Bei Smarty lassen sich diverse Variablen setzen, die verschiedene Templates erlauben. Mittels der &ldquo;<code>template_dir</code>&rdquo; lässt sich das Verzeichnis des zu nutzenden Templates festlegen (Beispielsweise: <code>$Smarty-&gt;template_dir = $generalTemplateDir . $specificStyle;</code>). Wenn man nun jedoch einfach so Smarty laufen lässt, werden die gecachten Seiten aller Styles im Cache-Verzeichnis einfach gegenseitig überschrieben, was nicht im Sinne des Erfinders ist. Dieses Problem lässt sich jedoch schnell lösen, wenn man die sog. <code>compile_id</code> setzt (Beispiel: <code>$Smarty-&gt;compile_id = $specificStyle;</code>). Wenn diese eindeutig vergeben ist (ich vergebe einfach den Templatenamen), dann werden die Dateien im Cache je nach Style abgelegt und nicht mehr überschrieben.</p>
<p>Nun fehlt es eigentlich nur noch an der Browsererkennung. Hierzu kann man beispielsweise den &ldquo;<link rel=dns-prefetch href=//www.osnews.com /> <a href="http://www.osnews.com/comments/19681"
    title="OSNews&rsquo; Mobile Detection Kit" 
     target="_blank" rel="nofollow noopener noreferrer" >
  OSNews&rsquo; Mobile Detection Kit&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>&rdquo; verwenden (dieser bedarf allerdings zuvor einer Geschwindigkeitüberarbeitung, sonst werden bei jedem Aufruf mehr als 200 Statements abgefragt). Eine andere Möglichkeit wäre die Liste der mobilen Browser aus dem <link rel=dns-prefetch href=//alexking.org /> <a href="http://alexking.org/projects/wordpress/"
    title="Wordpress-Plugin wp-mobile von Alex King" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Wordpress-Plugin wp-mobile von Alex King&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a> zu extrahieren und die Erkennung auf diese zu beschränken (was im Regelfall ausreicht, wenn man nicht auch noch WAP-Erkennung möchte).</p>
<p><img src="/upload/2008/05/1315-mobiledetection-mobile.webp" alt="Mobile" loading="lazy" title="1315-mobiledetection-mobile"></p>
<p>Ich habe mich also hingesetzt und schnell was gecoded, erfüllt seinen Zweck bestens&hellip; Das Ergebnis auf meinem HTC Kaiser (Pocket IE) ist links zu bewundern.
Hier der Download mit Beispiel: <del>mobileBrowserDetection-V0.1.zip</del></p>
<p>Statt den Ausgaben können natürlich auch Smarty-Variablen entsprechend gesetzt werden. Dies habe ich aufgrund der verschiedenen Umgebungen, in denen das Script zum Einsatz kommt, nicht direkt gezeigt und ist dem Coder selbst überlassen.</p>
<p>Fragen und Anmerkungen bitte in den Kommentaren!</p>
]]></content:encoded>
    </item>
    <item>
      <title>svn:externals zum Einbinden externer Bibliotheken nutzen</title>
      
      
      <link>https://wolf-u.li/svnexternals-zum-einbinden-externer-bibliotheken-nutzen/</link>
      <pubDate>Fri, 02 May 2008 22:36:50 +0200</pubDate>
      <guid>https://wolf-u.li/svnexternals-zum-einbinden-externer-bibliotheken-nutzen/</guid>
      <description>&lt;p&gt;Seit einiger Zeit arbeite ich bereits mit SVN in meinen Programmierprojekten, da es eine große Hilfe beim Rückgängigmachen von fehlerhaften Implementierungen ist und die Zusammenarbeit zwischen mehreren Leuten stark vereinfacht. Derzeit verwende ich in meinen PHP-Projekten gerne das Template-System &lt;link rel=dns-prefetch href=//www.smarty.net /&gt; &lt;a href=&#34;http://www.smarty.net/&#34;
    title=&#34;Smarty&#34; 
     target=&#34;_blank&#34; rel=&#34;nofollow noopener noreferrer&#34; &gt;
  Smarty&amp;nbsp;&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;icon&#34; aria-hidden=&#34;true&#34; focusable=&#34;false&#34; viewBox=&#34;0 -128 512 640&#34;&gt;
    &lt;path d=&#34;M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z&#34;/&gt;
  &lt;/svg&gt;&lt;/a&gt;, da es recht schnell und unkompliziert arbeitet. Bis vor wenigen Minuten habe ich bei Aktualisierungen dieser Templateengine immer in meiner lokalen Arbeitskopie Smarty gelöscht und anschließend das heruntergeladene Archiv der neuen Version wieder entpackt und in das SVN eingecheckt. Eine prinzipiell unnötige Arbeit, da Smarty bereits in einem SVN im Web bereitgestellt wird.&lt;/p&gt;</description>
      
         <content:encoded><![CDATA[<p>Seit einiger Zeit arbeite ich bereits mit SVN in meinen Programmierprojekten, da es eine große Hilfe beim Rückgängigmachen von fehlerhaften Implementierungen ist und die Zusammenarbeit zwischen mehreren Leuten stark vereinfacht. Derzeit verwende ich in meinen PHP-Projekten gerne das Template-System <link rel=dns-prefetch href=//www.smarty.net /> <a href="http://www.smarty.net/"
    title="Smarty" 
     target="_blank" rel="nofollow noopener noreferrer" >
  Smarty&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>, da es recht schnell und unkompliziert arbeitet. Bis vor wenigen Minuten habe ich bei Aktualisierungen dieser Templateengine immer in meiner lokalen Arbeitskopie Smarty gelöscht und anschließend das heruntergeladene Archiv der neuen Version wieder entpackt und in das SVN eingecheckt. Eine prinzipiell unnötige Arbeit, da Smarty bereits in einem SVN im Web bereitgestellt wird.</p>
<p>Der Vorgang ist nun folgender:
Bei einem Checkout in eine lokale Arbeitskopie, wird von extern Smarty (In diesem Fall dem <link rel=dns-prefetch href=//smarty-php.googlecode.com /> <a href="http://smarty-php.googlecode.com/svn/"
    title="SVN von Smarty auf googlecode" 
     target="_blank" rel="nofollow noopener noreferrer" >
  SVN von Smarty auf googlecode&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>) ausgecheckt. Was genau ausgecheckt wird, wird durch die Eigenschaft svn:externals festgelegt. Ich möchte ind en folgenden Beispielen im Verzeichnis libs einen Ordner namens Smarty haben, in dem die derzeit aktuelle Stable-Version von Smarty abgelegt wird.
Ich demonstriere den Vorgang zunächst anhand des Windows-Tools <link rel=dns-prefetch href=//tortoisesvn.tigris.org /> <a href="http://tortoisesvn.tigris.org/"
    title="TortoiseSVN" 
     target="_blank" rel="nofollow noopener noreferrer" >
  TortoiseSVN&nbsp;<svg xmlns="http://www.w3.org/2000/svg" class="icon" aria-hidden="true" focusable="false" viewBox="0 -128 512 640">
    <path d="M384 320c-17.67 0-32 14.33-32 32v96H64V160h96c17.67 0 32-14.32 32-32s-14.33-32-32-32L64 96c-35.35 0-64 28.65-64 64V448c0 35.34 28.65 64 64 64h288c35.35 0 64-28.66 64-64v-96C416 334.3 401.7 320 384 320zM488 0H352c-12.94 0-24.62 7.797-29.56 19.75c-4.969 11.97-2.219 25.72 6.938 34.88L370.8 96L169.4 297.4c-12.5 12.5-12.5 32.75 0 45.25C175.6 348.9 183.8 352 192 352s16.38-3.125 22.62-9.375L416 141.3l41.38 41.38c9.156 9.141 22.88 11.84 34.88 6.938C504.2 184.6 512 172.9 512 160V24C512 10.74 501.3 0 488 0z"/>
  </svg></a>:</p>
<p><img src="/upload/2008/05/1306-tortoisesvn-1.webp" alt="TortoiseSVN" loading="lazy" title="1306-tortoisesvn-1"></p>
<p>Zunächst macht man einen Rechtsklick im Ordner &ldquo;libs&rdquo; und wählt im Menü &ldquo;TortoiseSVN&rdquo; den Punkt &ldquo;Eigenschaften&rdquo; aus.</p>
<p><img src="/upload/2008/05/1306-tortoisesvn-2.webp" alt="TortoiseSVN" loading="lazy" title="1306-tortoisesvn-2"></p>
<p>Im sich nun öffnenden Fenster klickt man auf &ldquo;Hinzufügen&rdquo;. Dort wählt man im Dropdown &ldquo;<code>svn:externals</code>&rdquo; aus und im Eingabefeld wird nun der gewünschte Ordner &ldquo;<code>Smarty</code>&rdquo; sowie die URL der gewünschten Version (derzeit 2.6.19) von Smarty angegeben, was in meinem Falle nun:</p>
<p><code>Smarty http://smarty-php.googlecode.com/svn/tags/Smarty_2_6_19/libs/</code></p>
<p>lautet.</p>
<p><img src="/upload/2008/05/1306-tortoisesvn-3.webp" alt="TortoiseSVN" loading="lazy" title="1306-tortoisesvn-3"></p>
<p>Nach dem ersten Klick auf OK, sollte das in etwa wie auf dem Bild links aussehen. Nach einem weiteren OK sollte nun die Arbeitskopie aktualisiert werden, womit Smarty importiert wird. Anschließend muss man noch einmal übertragen (commit), um die Eigenschaft &ldquo;<code>svn:externals</code>&rdquo; im SVN zu speichern. Die Kopie von Smarty wird hierbei jedoch NICHT übertragen, diese wird bei jedem Client dann von extern geupdatet.</p>
<p>Alternativ gibt es die Kommandozeilenbefehle:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">svn propset svn:externals <span class="s2">&#34;Smarty http://smarty-php.googlecode.com/svn/tags/Smarty_2_6_22/libs/&#34;</span> libs
</span></span><span class="line"><span class="cl">svn up
</span></span><span class="line"><span class="cl">svn commit
</span></span></code></pre></td></tr></table>
</div>
</div><p>Der Vorteil ist nun, dass bei Updates von Smarty nur die Variable svn:externals für das Verzeichnis libs aktualisiert werden muss. Prinzipiell könnte man diese auch auf den trunk setzen, um immer die aktuellste Version zu haben, jedoch hat man damit auch durchaus gelegentlich eine nicht funktionierende Version in der Arbeitskopie, was für die Entwicklung hinderlich ist.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
