tag:blogger.com,1999:blog-41782562652299018532024-02-19T12:47:24.551+01:00Shentao's Blog...dies, das und jenes.Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.comBlogger52125tag:blogger.com,1999:blog-4178256265229901853.post-21219362724503536162021-08-26T15:52:00.006+02:002022-05-04T13:22:05.986+02:00[UPDATE 2] TYPO3 9.x+ Routing mit tx_jobfair nutzen<p>Ich weiß ich weiß, eigentlich nutzt man keine veralteten Extensions mehr, die evtl. noch Sicherheitsprobleme haben - in diesem Fall nutze ich die Upload-Funktion überhaupt nicht, daher sollte diese Sicherheitslücke gar kein Problem mehr sein. Zurück zum Thema</p><p>Kurzum, wenn Ihr <a href="https://extensions.typo3.org/extension/jobfair" target="_blank">Jobfair </a>mit TYPO3 9 oder 10 nutzen wollt und trotzdem sprechende URLs haben möchtet, braucht ihr folgenden Code in der der Siteconfig (config.yaml). An dieser Stelle möchte ich mich nochmal bei den Mitgliedern der inoffziellen TYPO3-Gruppe auf Facebook herzlich bedanken für die Hilfe! </p><p><br /></p><p> Jobfair:</p><p> type: Extbase</p><p> limitToPages: </p><p> - 123</p><p> extension: Jobfair</p><p> plugin: Pi1</p><p> routes:</p><p> - </p><p> routePath: '/{job_title}'</p><p> _controller: 'Job::show'</p><p> _arguments:</p><p> job_title: job</p><p> defaultController: 'Job::show'</p><p> aspects:</p><p> job_title:</p><p> type: PersistedAliasMapper</p><p> tableName: tx_jobfair_domain_model_job</p><p> routeFieldName: <strike>job_title</strike> <span style="color: red;">slug</span></p><p>UPDATE:</p><p>Hey Leute, kurzes Update - wie ihr im Code oben sehen könnt, habe ich bei "routeFieldName:" anstatt job_title nun slug genommen. Das ist viel besser, weil hier aus den Titeln saubere URLs generiert werden. Gerade bei Stellenanzeigen mit Angaben wie z.B. (m/w/d) oder so werden die Slashes nicht mit in die URL übernommen sondern sauber mit "-" umgeschrieben. Dasselbe gilt auch für Umlaute. <br /><br />Falls ihr viele Stellenanzeigen habt und die ganzen Slugs nicht per Hand neu generieren wollt (bei einem Upgrade der Website) dann kann ich euch die Extension "<a href="https://extensions.typo3.org/extension/ig_slug" target="_blank">Rebuild URL slugs</a>" empfehlen. Damit könnt ihr auf Knopfdruck z.B. von allen News oder allen Jobs die Slugs neu generieren. </p><p><strike>P.S.: Wenn ihr eine angepasste Version von Jobfair für V9 haben wollt, gebt mir einfach Bescheid - aber bitte nicht die Bewerbungsfunktion nutzen! </strike></p><p>UPDATE 2 (2022): </p><p>Jobfair wurde inzwischen offiziell fortgeführt! Vielen Dank an dieser Stelle an "<a href="https://github.com/nhovratov/jobfair" target="_blank">nhovratov</a>"!</p><p>Mir ist allerdings bei einer Installation ein neuer Bug aufgefallen: Wenn ihr die Stellenanzeigen in einem Ordner habt, der nicht im Seitenbaum eurer aktuellen Website liegt, werden die Stellenanzeigen auf der Detailseite nicht korrekt angezeigt. Siehe Screenshot, damit ihr wisst, was ich meine:</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjiKdIFzuwotsT7ZQIDxPB9elbex2KOtj-0p2WKyYyyHMmBcEQNrITIc14H9cctenSi37RIzJwwdPs-Kjwwre5I0CFrFbZ1TtkVHNOKqweKOR7p8ZuAWJA5_y4jRXxEwLOueQjYIPpK5kGnYuZi3HoDlQS33WxWgDoWcRn7dcvelCsdJzuZiENVVoZX" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="66" data-original-width="219" height="96" src="https://blogger.googleusercontent.com/img/a/AVvXsEjiKdIFzuwotsT7ZQIDxPB9elbex2KOtj-0p2WKyYyyHMmBcEQNrITIc14H9cctenSi37RIzJwwdPs-Kjwwre5I0CFrFbZ1TtkVHNOKqweKOR7p8ZuAWJA5_y4jRXxEwLOueQjYIPpK5kGnYuZi3HoDlQS33WxWgDoWcRn7dcvelCsdJzuZiENVVoZX" width="320" /></a></div><p></p><p>Es geht hier darum, dass dieselben Stellenanzeigen auf mehreren Seiten eingebunden werden sollen. Das Problem wird hier nochmal ausführlich dargestellt: <a href="https://forge.typo3.org/issues/91397">https://forge.typo3.org/issues/91397</a>. </p><p>Die Lösung bei Jobfair: Ihr müsst folgende TCA anpassen, dann sollte es funktionieren:</p><p>$GLOBALS['TCA']['tx_jobfair_domain_model_job']['columns']['slug']['config']['eval'] = 'unique';</p><p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><br /><p></p>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-7229579527896598122021-03-29T12:47:00.005+02:002021-03-29T12:47:48.782+02:00Nextcloud Fehlermeldung: Step 4 is currently in process. Please reload this page later.Hey Leute, <div><br /></div><div>wenn ihr mal euer Nextcloud aktualisiert und der Vorgang (aus welchem Grund auch immer) hängt und jeder Update-Prozess mit der Fehlermeldung <i>"Step 4 is currently in process. Please reload this page later."</i> quittiert wird, dann könnt ihr folgendes machen: </div><div><br /></div><div><ol style="text-align: left;"><li>Geht per FTP/Shell/WebFTP etc. zum Unterordner "data". Hier dürfte es einen Unterordner namens "updater-xxxxxxxxxxxx" geben, wobei die "x" eine beliebige Zeichenfolge sein können. </li><li>Löscht diesen Unterordner (könnte eine Weile dauern, weil in dem Unterordner sämtliche Dateien für das jeweilige Update hinterlegt ist)</li><li>Started den Updateprozess neu</li><li>Et voilà!</li></ol></div>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-60635633189238488172021-03-03T16:41:00.001+01:002021-03-03T16:41:17.576+01:00USB-Mikrofon/Audio-Interface mit SwyxIt! 11 benutzen<p>Jeder, der mal auf die Idee kam im Homeoffice (oder auch im Büro) mit SwyxIt! Version 11 (Windows) ein USB-<span style="font-family: inherit;">Mikrofon/Audio-Interface zu nutzen, wird sehr schnell enttäuscht sein - beim Telefonieren hört das Gegenüber nämlich nichts, rein gar nichts, obwohl das Mikrofon korrekt ausgewählt und in den Audioeinstellungen augenscheinlich korrekt kalibriert wurde. </span></p><p><span style="font-family: inherit;">Anscheinend ist es so, dass - aus welchem Grund auch immer - SwyxIt! die Empfindlichkeit des Mikrofons nicht einstellen (oder speichern) kann. Es ist quasi immer auf 0 eingestellt, egal was man in der App einstellt. </span></p><p><span style="font-family: inherit;">Hier habe ich die Lösung: </span></p><p></p><ul style="text-align: left;"><li><span style="font-family: inherit;">Merkt euch den Namen eures USB-Mikrofons in der SwyxIt!-App. </span></li><li>Öffnet den Registrierungseditor als Administrator</li><ol><li>Öffnet hierzu das Windowsmenü, </li><li>tippt "Regedit" ein</li><li>Rechtsklick auf "Registrierungs-Editor"</li><li>"Als Administrator ausführen"</li></ol><li>Hangelt euch bis zu diesem Schlüssel: \HKEY_CURRENT_USER\SOFTWARE\Swyx\Client Line Manager\CurrentVersion\Options\<b>S-xxxxxxx</b>\AudioModes\</li><ul><li>S-xxxxx steht für einen Ordner mit einer sehr langen Zahlenkombination, der bei jedem individuell ist</li></ul><li>Öffnet dann hier den Unterordner mit dem Namen eures USB-Mikrofons. </li><li>Stellt dann bei den Einträgen "HandsetCaptureVolume", "HandsfreeCaptureVolume", "HeadsetCaptureVolume" jeweils den gewünschten Wert von 0-100 (=Mikrofonempfindlichkeit) ein. Wichtig ist, dass ihr die Basis auf "Dezimal" stellt! <br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhksYUuRI8Ez2kgs0oMumOgJO_BpZRe7rBeiWwb00Q9GSC_febVsjV7dnfV9Np6UstOEdUGJAJteJ1WbOgeN89x_4pTmRHVTjyssVofRMx88PA3gpa6-I25mVuIUxGxIAJICcsnYJJSZk0/" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="729" data-original-width="908" height="321" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhksYUuRI8Ez2kgs0oMumOgJO_BpZRe7rBeiWwb00Q9GSC_febVsjV7dnfV9Np6UstOEdUGJAJteJ1WbOgeN89x_4pTmRHVTjyssVofRMx88PA3gpa6-I25mVuIUxGxIAJICcsnYJJSZk0/w400-h321/image.png" width="400" /></a></div></li><li>Danach sollte es gehen! Viel Spaß eurem Gegenüber für die deutlich verbesserte Sprachqualität!</li><br /><br /></ul><p></p>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com2tag:blogger.com,1999:blog-4178256265229901853.post-36071474252779656612020-12-13T19:16:00.002+01:002021-03-05T09:37:54.829+01:00AVM Fritz!Box für Google Stadia optimierenHey Leute, <div><br /></div><div>ich wollte euch zeigen, wie ihr eure Verbindung zu Google Stadia optimieren könnt mit einer Fritz!Box. Diese Anleitung bezieht sich auf das aktuelle Topmodel Fritz!Box 7590, gilt aber auch für die meisten anderen Fritzboxen. </div><div><br /></div><div>Google Stadia nutzt bestimmte Ports zur Übertragung des Streams und wir können durch Priorisierung dafür sorgen, dass Stadia deutlich besser läuft.</div><div><br /></div><div>Geht in den Einstellungen zu "Internet" > "Filter" > "Listen". Dann zu "Netzwerkanwendungen" und "Netzwerkanwendung hinzufügen". Erstellt hier eine Regel mit dem Namen "Stadia" und fügt die Ports 44700-44899 für UDP und TCP hinzu. Speichert dies dann ab. </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbcPSoQTAxWEFJk9FplqZz4otvNFe9q3kpCwneEVZbypDUwG9LGVk0gGj5M9OR7DJEV78V90c98wjgt2SrnL2YXDyBfiQEtxhtrItdDuJ3RDpTKjS5bSu4cF2IPloU5ldQ6C4MpePVfo/s1600/1607882552996828-0.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxbcPSoQTAxWEFJk9FplqZz4otvNFe9q3kpCwneEVZbypDUwG9LGVk0gGj5M9OR7DJEV78V90c98wjgt2SrnL2YXDyBfiQEtxhtrItdDuJ3RDpTKjS5bSu4cF2IPloU5ldQ6C4MpePVfo/s1600/1607882552996828-0.png" width="400" />
</a>
</div><br /></div><div>Geht anschließend zu "Internet" > "Filter" > "Priorisierung". Dann unter "Priorisierte Anwendungen" und "Neue Regel". </div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijQr1X35c9ryz0mGtdJL_Y-MjbKp_KRor4v-6ZBlg1kaiNwhdjLJMK6btbRrEc-sXV58wOgxwn17XUp078VkDjl3ddjhpnz-oNVr5XA0sBA7M8fy5DgA9Rse_usw7czPE9SVzJGeYgeiQ/s1600/1607883410450663-0.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijQr1X35c9ryz0mGtdJL_Y-MjbKp_KRor4v-6ZBlg1kaiNwhdjLJMK6btbRrEc-sXV58wOgxwn17XUp078VkDjl3ddjhpnz-oNVr5XA0sBA7M8fy5DgA9Rse_usw7czPE9SVzJGeYgeiQ/s1600/1607883410450663-0.png" width="400" />
</a>
</div><br /></div><div>Wählt hier "Alle Geräte" (damit die Ports generell priorisiert werden, egal ob CCU, Laptop ode Smartphone/Tablet) und dann "Stadia" aus. </div><div><br /></div><div>Et Voilà!</div><div><br /></div><div>Bei mir hat es einen deutlichen Unterschied gemacht. Erst recht wenn mehrere Geräte parallel aufs Internet zugreifen! Viel Spaß!</div>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com5tag:blogger.com,1999:blog-4178256265229901853.post-71437287047080227272018-12-11T13:29:00.001+01:002020-12-13T18:43:12.118+01:00AVM Fritz!Box einbruchsicher machen<span face=""arial" , "helvetica" , sans-serif">Heute möchte ich euch über eine oft übersehene, aber effektive Sicherheitsfunktion der Fritz!Box schreiben, nämlich die Möglichkeit zur Nutzung einer Hardwarebestätigung sowie der Einsatz von <a href="https://de.m.wikipedia.org/wiki/Zwei-Faktor-Authentisierung" target="_blank">Zwei-Faktor-Authentisierung</a>. </span><br />
<div>
<span face=""arial" , "helvetica" , sans-serif"><br /></span></div>
<div>
<span face=""arial" , "helvetica" , sans-serif">Ihr findet beide Einstellungen gruppiert und leicht versteckt unter <b>System > FRITZ!Box-Benutzer > Anmeldung im Heimnetz</b>. Hier setzt ihr einfach ein Häkchen unter "<b>Ausführung bestimmter Einstellungen und Funktionen zusätzlich bestätigen"</b> sowie anschließend "<b>Bestätigung über Google Authenticator App aktivieren</b>". </span></div>
<div>
<span face=""arial" , "helvetica" , sans-serif"><br /></span></div>
<div>
<span face=""arial" , "helvetica" , sans-serif">Im Anschluss müsst ihr beim Speichern eine Bestätigung über eine Eingabe eines Zahlencodes am Telefon oder über den Kopf an der FRITZ!Box durchführen.</span></div>
<div>
<span face=""arial" , "helvetica" , sans-serif"><br /></span></div>
<div>
<span face=""arial" , "helvetica" , sans-serif">Bereits jetzt musst ihr für bestimmte Änderungen an der FRITZ!Box physischen Zugang haben, um diese durchführen zu können, wie z.B. VPN-Verbindungen.</span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">Ihr könnt ab sofort auch Zwei-Faktor-Authentisierung einsetzen. Geht hierzu in die Benutzereinstellungen und richtet 2FA mit der Google Authenticator App ein. Wenn jemand bestimmte Einstellungen verändern möchte braucht man physischen Zugang zu eurem Handy!</span></div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-47516550337007673502018-11-07T16:37:00.002+01:002018-12-19T10:13:00.753+01:00Speaking URLs mit TYPO3 9.5.x + tx_newsHallo Leute,<br />
<br />
wie ihr wisst, gibt es RealURL bei TYPO3 9.5 nicht mehr. Um für tx_news die sprechenden URLs einzurichten, müsst ihr folgendes tun:<br />
<br />
Öffnet diese Datei:<br />
<br />
<b>typo3conf/sites/eure-site/config.yaml</b><br />
<br />
Fügt anschließend ganz am Ende der Datei folgende Codezeilen hinzu. Wichtig ist, dass ihr die eingerückten Zeilen/Leerzeichen beachtet! Ich füge daher zusätzlich einen Screenshot bei.<br />
<br />
<b>routeEnhancers:</b><br />
<b> NewsPlugin:</b><br />
<b> type: Extbase</b><br />
<b> limitToPages: [8]</b><br />
<b> extension: News</b><br />
<b> plugin: Pi1</b><br />
<b> routes:</b><br />
<b> - { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }</b><br />
<b> defaultController: 'News::detail'</b><br />
<b> aspects:</b><br />
<b> news_title:</b><br />
<b> type: PersistedAliasMapper</b><br />
<b> tableName: 'tx_news_domain_model_news'</b><br />
<b> routeFieldName: 'path_segment'</b><br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7a4K8e6A3ajuKSzM-q30bJYlfV4FjsR_RiNyJ-lT6bZQo-9TaOGGbm_5cknqxv6DOOcrra1BcMj9hWY7oN_DmwR1GfGN_DpSwf6FUALaWnEPhsDY62QSbtkyj3FOMoz5wH1pk35CDAGY/s1600/Route_Enhancers.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Screenshot" border="0" data-original-height="246" data-original-width="870" height="112" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7a4K8e6A3ajuKSzM-q30bJYlfV4FjsR_RiNyJ-lT6bZQo-9TaOGGbm_5cknqxv6DOOcrra1BcMj9hWY7oN_DmwR1GfGN_DpSwf6FUALaWnEPhsDY62QSbtkyj3FOMoz5wH1pk35CDAGY/s400/Route_Enhancers.PNG" title="Route Enhancer für tx_news und TYPO3 9.5" width="400" /></a></div>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b>
<b><br /></b><b><br /></b>
<b><br /></b>
<b><br /></b>
<br />
<ul>
<li>Bei limitToPages fügt ihr die ID der jeweiligen Detail-Seite ein. </li>
<li>Wenn ihr ein Segment wie /detail/ benötigt, könnt ihr entweder das über die eigentliche Unterseite lösen, die z.B. "Detail" heißt, oder </li>
<li>Alternativ könnt ihr auch in diesem Beispiel in der Zeile 35 <b>routePath: '/detail/{news_title}',</b> schreiben. </li>
</ul>
<div>
Et Voilà! Zugegebermaßen deckt diese Lösung keine Varianten wie z.B. "Archiv" ab, aber als Baseline-Lösung ist das sicherlich ein guter Ausgangspunkt!</div>
<div>
<br /></div>
<div>
Viel Spaß!</div>
<div>
<br /></div>
<div>
Euer Tao</div>
<div>
<br /></div>
<div>
P.S.: Weitere Infos zu den Route Enhancers könnt ihr hier finden: <a href="https://docs.typo3.org/typo3cms/extensions/core/Changelog/9.5/Feature-86365-RoutingEnhancersAndAspects.html" target="_blank">https://docs.typo3.org/typo3cms/extensions/core/Changelog/9.5/Feature-86365-RoutingEnhancersAndAspects.html </a></div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com2tag:blogger.com,1999:blog-4178256265229901853.post-90295007767333541132018-10-19T14:39:00.004+02:002018-10-19T14:54:04.527+02:00fbclid + RealURL (und tx_news)Hallo Leute,<br />
<br />
wie ihr sicherlich mitbekommen habt, fügt Facebook seit einigen Tagen bei ausgehenden Links von Postings ab und zu einen Query String "fbclid" an. Analog zu Google Ads Query String "gclid" steht "fbclid wohl für "Facebook Click Identifier".<br />
<br />
"fbclid" hat allerdings für gehörigen Wirbel bei einigen Betreibern von TYPO3-Websites in Kombination mit RealURL (und meistens auch tx_news o.ä.) gesorgt.<br />
<br />
Folgende Phänomene tauchten plötzlich auf:<br />
<br />
<h3>
Phänomen 1: Falscher Inhalt wird gecached und demnach ausgeliefert</h3>
<br />
Wenn man News A aufruft mit einer fbclid ist zunächst alles ok.<br />
<br />
.../newsA/?fbclid=xxx<br />
<br />
Wenn man schließlich einen weiteren, <b>beliebigen</b> Newseintrag aufruft mit einem <b>beliebigen</b> fbclid-Parameter dranhängt, wird News A angezeigt.<br />
<br />
.../newsB/?fbclid=xxx<br />
<br />
Es wird <b>immer </b>die ursprüngliche News angezeigt, die als erstes mit fbclid aufgerufen wurde. Das ist natürlich sehr ärgerlich, wenn man einen Newseintrag auf Facebook teilt und dem User wird dann plötzlich ein anderer oder uralter Eintrag dargestellt.<br />
<br />
<h3>
Phänomen 2: Die Seite wird mit "fbclid" erst gar nicht angezeigt -> 404</h3>
<br />
In Kombination mit der Einstellung 'FE' => 'pageNotFoundOnCHashError' => true wird erst gar keine Seite angezeigt.<br />
<br />
<h3>
Die Lösung:</h3>
<h4>
1. Im Installtool diese beiden Einstellungen setzen:</h4>
'FE' => 'pageNotFoundOnCHashError' => false,<br />
<br />
'cHashExcludedParameters' => 'L, pk_campaign, pk_kwd, utm_source, utm_medium, utm_campaign, utm_term, utm_content, gclid, fbclid',<br />
<h4>
2. Bei RealURL folgende Einstellung setzen </h4>
(achtet auf die Schreibweise, vielleicht habt ihr noch Array):<br />
<br />
'cache' => [<br />
'ignoredGetParametersRegExp' => '/^(?:gclid|fbclid|utm_[a-z]+|pk_campaign|pk_kwd|TSFE_ADMIN_PANEL.*)$/',<br />
],<br />
<br />
Anschließend sämtliche Caches (auch RealURL) löschen. Damit sollte das Problem vom Tisch sein :-)<br />
<br />Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com2tag:blogger.com,1999:blog-4178256265229901853.post-2209465431989229352018-07-06T08:52:00.000+02:002018-10-19T14:45:19.402+02:00WPML und Oshine Theme Page BuilderNutzt du Wordpress zusammen mit dem Oshine Page Builder und möchtest Übersetzungen/XLIFF mit WPML exportieren? Folgende Konfiguration für die Shortcodes sollten helfen!<br />
<br />
<wpml-config><br />
<shortcodes><br />
<br />
<shortcode><br />
<tag>text</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_sub_title</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>accordion</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>chart</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>animated_numbers</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>flex_slider</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>be_slider</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>blog</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>bubble_testimonial</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>button_group</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>button</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>call_to_action</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>contact_form</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>content_slides</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>be_countdown</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>separator</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>dropcap</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>dropcap2</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>linebreak</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>animate_icons_style1</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>gallery</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>gmaps</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>icon_card</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>icon_group</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>grids</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>icon</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>justified_gallery</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>lists</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>menu_card</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>newsletter</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>notifications</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>shortcode_modules</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>portfolio</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>portfolio_carousel</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>project_details</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>portfolio_navigation_module</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>pricing_column</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>process_style1</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>recent_posts</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>services</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>skills</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_sub_title</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_heading</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_heading2</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_heading3</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_heading4</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>special_heading5</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>tabs</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>team</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>testimonials</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>title_icon</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>tweets</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>animate_icons_style2</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>video</tag><br />
</shortcode><br />
<br />
<shortcode><br />
<tag>clients</tag><br />
</shortcode> <br />
<br />
</shortcodes><br />
</wpml-config>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-72582976696008481622017-12-06T11:43:00.001+01:002017-12-06T11:43:11.159+01:00Simples Cheat-Sheet für AdWords<span style="font-family: Arial, Helvetica, sans-serif;">Ich habe für mich persönlich mal ein kleines Cheat-Sheet für AdWords erstellt mit den wichtigsten Basics, um entsprechende Kampagnen zu optimieren:</span><br />
<br />
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Nutze keine automatischen Placements. </span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Nutze keine weitestgehend passenden Keywords (und wenn doch, dann <b>mindestens</b> mit Modifizierern)</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Suchbegriffe checken</span></li>
<ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Füge negative Keywords auf wöchentlicher Basis hinzu</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Füge Suchbegriffe, die Conversions erzeugt haben, als Keyword hinzu. Ggf. gezielt mehr bieten auf besonders gute Keywords</span></li>
</ul>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Optimiere deine Anzeigentexte (ggf. A/B-Tests)</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Optimiere deine Landing Pages (ggf. A/B-Tests)</span></li>
<li><span style="font-family: Arial, Helvetica, sans-serif;">Lehn dich zurück und entspanne dich zwischendurch ;-)</span></li>
</ul>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-69088961925689693712017-09-27T10:44:00.002+02:002021-09-08T12:15:02.186+02:00Typo3 7.x+: Typo3-Link-Tags auch in HTML-Content-Elementen von fluid_styled_content<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif">Früher (Typo3 bis 6.x) bzw. mit <i>css_styled_content</i> konnte man auf folgende Weise TypoLinks wie <i><link 1 - - "Linktitel">Linktext</link></i> auch in HTML-Elementen parsen:<br /><br /> tt_content.html.parseFunc.tags.link < lib.parseFunc.tags.link<br /><br /> Da man ab Typo3 7.x auch fluid_styled_content nutzen kann (und meiner Meinung nach auch sollte), funktioniert der Typoscript-Codeschnipsel nicht mehr. Um diese Funktionalität wiederherzustellen, müsst ihr folgendes machen (Vielen Dank auch </span>an Georg Ringer für seinen Input, der mich überhaupt erst darauf gebracht hat).<span face=""arial" , "helvetica" , sans-serif"><span style="background-color: white;"><span face=""arial" , "helvetica" , sans-serif"><br /></span></span>
Zunächst müsst ihr das Template für das HTML-Element von fluid_styled_content (typo3/sysext/fluid_styled_content/Resources/Private/Templates/Html.html) überschreiben. </span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">Weitere Informationen zum Überschreiben von Standard-Templates findet ihr hier: <a href="https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/Configuration/OverridingFluidTemplates/Index.html">https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/Configuration/OverridingFluidTemplates/Index.html</a></span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">Anschließend könnt ihr den vorhanden Code-Schnipsel ändern:</span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
</span><br />
<h4>
<span face=""arial" , "helvetica" , sans-serif">Vorher: </span></h4>
<span face=""arial" , "helvetica" , sans-serif"><i><f:format.raw>{data.bodytext}</f:format.raw></i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
</span><br />
<h4>
<span face=""arial" , "helvetica" , sans-serif">Nachher:</span></h4>
<span face=""arial" , "helvetica" , sans-serif"><i><f:format.htmlentitiesDecode></i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><i> <f:format.html parseFuncTSPath="lib.parseFunc"></i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><i> {data.bodytext}</i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><i> </f:format.html></i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><i><span face=""arial" , "helvetica" , sans-serif"></span></i><br /></span>
<span face=""arial" , "helvetica" , sans-serif"><i></f:format.htmlentitiesDecode></i></span><br />
<span face=""arial" , "helvetica" , sans-serif"><br /></span>
<br />
<h4>
<span face=""arial" , "helvetica" , sans-serif">Erläuterung:</span></h4>
<span face=""arial" , "helvetica" , sans-serif"><i>f:format.html parseFuncTSPath="lib.parseFunc"</i><span face=""arial" , "helvetica" , sans-serif"> sorgt dafür, dass der HTML-Inhalt geparsed wird und die <link>-Tags durch entsprechende HTML-Tags ersetzt werden. </span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif"><i>f:format.htmlentitiesDecode</i> wird im nächsten Schritt die HTML-Entitäten korrekt in sauberen HTML-Code umwandeln, damit diese auch vom Browser korrekt interpretiert werden. </span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">E</span><span face=""arial" , "helvetica" , sans-serif">t voilà!</span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">-------------</span></span><br />
<span face=""arial" , "helvetica" , sans-serif">Update am 31.05.2019:</span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">Ab Typo3 8.x funktionieren zwar die <link>-Tags immer noch, aber es wurde ein neues System eingeführt. Siehe Link: https://docs.typo3.org/m/typo3/reference-typoscript/8.7/en-us/Functions/Typolink/Index.html#resource-references</span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">D.h. dass die Verlinkungen nun so aufgebaut sind: </span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif"><i><a href="t3://page?uid=1" title="startseite"></a> </i></span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif">anstatt </span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif"><i><link 1 - - "startseite"></link></i></span></span><br />
<span face=""arial" , "helvetica" , sans-serif"><span face=""arial" , "helvetica" , sans-serif"><br /></span>
<span face=""arial" , "helvetica" , sans-serif"></span></span><br />
<span face=""arial" , "helvetica" , sans-serif">Von Haus aus ist der CKE so eingestellt, dass er diese a-Tags problemlos übernimmt. Wenn ihr weiterhin die klassischen link-Tags nutzen wollt/müsst, dann müsst ihr die Konfiguration vom CKE anpassen, damit dieser auch link-Tags akzeptiert. </span><div><span face=""arial" , "helvetica" , sans-serif">---------</span></div><div><span face=""arial" , "helvetica" , sans-serif">Update am 08.09.2021</span></div><div>Ab TYPO3 8 hat sich glaube ich auch die Syntax verändert, mit der man die Templates überschreibt. Diese müsst ihr anpassen. Hier ein Beispiel (mit Beispielpfaden)</div><div><br /></div><div>Vorher (TYPO3 7):</div><div><div><i>lib.fluidContent.partialRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Partials/</i></div><div><i>lib.fluidContent.templateRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Templates/</i></div><div><i>lib.fluidContent.layoutRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Layouts/</i></div></div><div><br /></div><div>Nachher (TYPO3 8+, Veränderung fett markiert)</div><div><div><i>lib.<b>contentElement</b>.partialRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Partials/</i></div><div><i>lib.<b>contentElement</b>.templateRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Templates/</i></div><div><i>lib.<b>contentElement</b>.layoutRootPaths.200 = fileadmin/templates/fluid_styled_content/Resources/Private/Layouts/</i></div></div>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com9tag:blogger.com,1999:blog-4178256265229901853.post-65306362213514832952015-05-15T11:26:00.003+02:002015-05-15T11:28:25.009+02:00Typo3 7.x und 1und1: Crontab Scheduler auf PHP 5.5 umstellenVor einziger Zeit habe ich <a href="http://www.shentao.de/2013/07/typo3-scheduler-bei-1und1-mit-crontab.html" target="_blank">einen Artikel</a> geschrieben, wie ihr beim Webhosting von 1und1 in Kombination mit Typo3 6.x den Scheduler richtig einrichtet. Bei Typo3 7.x ist der Einsatz von PHP ab Version 5.5 unbedingt nötig, weswegen ihr etwas umstellen müsst, andernfalls bekommt ihr bei der Ausführung vom Scheduler eine Fehlermeldung wie diese hier:<br />
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
<i>X-Powered-By: PHP/5.4.39</i><i>Content-type: text/html</i><i><br /></i><i>Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in /homepages/xx/xxxxxxxxxx/htdocs/xxxxxx/typo3/sysext/core/Classes/Core/Bootstrap.php on line 121</i></blockquote>
<div>
<br /></div>
<div>
Bisher war der Befehl für den Einsatz der bisherigen dev-Version "php6" gewesen (PHP5.4), so wie in diesem Beispiel: </div>
<div>
<br /></div>
<div>
<i><b>0 0 * * * php6 /kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh schedule</b></i></div>
<div>
<i><b><br /></b></i></div>
<div>
Um aber jetzt PHP 5.5 einzusetzen, müsst ihr anstatt <b>php6</b> jetzt <b>/usr/bin/php5.5</b> eingeben. Das sieht dementsprechend nun so aus:</div>
<div>
<br /></div>
<div>
<i><b>0 0 * * * /usr/bin/php5.5 /kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh schedule</b></i></div>
<div>
<i><b><br /></b></i></div>
<div>
(in diesem Beispiel wurde der Scheduler so eingestellt, dass er immer Nachts um 0 Uhr gestartet wird)</div>
<div>
<br /></div>
<div>
Jetzt sollte auch der Scheduler von Typo3 7.x bei eurem 1und1 Hostingpaket laufen!</div>
</div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-2224466049963133912015-02-12T13:29:00.002+01:002015-02-12T13:29:23.565+01:00Typo3 6.x und mehrsprachige Bilderelemente: "Localize all records" freischalten<div class="separator" style="clear: both; text-align: left;">
Habt ihr bei Typo3 6.x auch das Problem, dass es bei mehrsprachigen Websites ziemlich kompliziert ist, die Bilder der Zielsprachen im Nachgang anzupassen? </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Bei einem normalen Kopiervorgang in Typo3 6.x von einem Content Element mit Bildern werden alle aktuell vorhandenen Bilder übernommen - soweit so gut. Wenn ihr aber nun in der Originalsprache die Bilder verändert, hinzfügt oder entfernt, müsst ihr theoretisch alle Schritte in jeder Zielsprache per Hand durchführen. Hier gibt es in der Standardkonfiguration keine Möglichkeit, die Übersetzung mit dem Original abzugleichen oder zu synchronisieren, obwohl diese Funktion grundsätzlich vorgesehen ist. Das Löschen und die erneute Kopie von einem Content Element ist langfristig keine wirkliche Lösung. Ich zeige euch, wie man die Lokalisierung und Synchronisierung von Bildern aktiviert. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwEkTdAMdZ9WSzVG3XDJQhme7EftCdg37TPmGmv8pL2yLFhushxaiyVrrsf4cHW4HrH4r2eTi__8kr06LdhCPrnDSpJSMTBBQrlEbEX2lNaQBB8EvhvTV6B83mqv93vr21PJ259evvWZg/s1600/Unbenannt.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Keine Möglichkeit, veränderte Bilder im Nachgang aus dem Original zu "übernehmen"" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwEkTdAMdZ9WSzVG3XDJQhme7EftCdg37TPmGmv8pL2yLFhushxaiyVrrsf4cHW4HrH4r2eTi__8kr06LdhCPrnDSpJSMTBBQrlEbEX2lNaQBB8EvhvTV6B83mqv93vr21PJ259evvWZg/s1600/Unbenannt.PNG" height="131" title=""Localize all records" fehlt" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Keine Möglichkeit, veränderte Bilder im Nachgang aus dem Original zu "übernehmen"</td></tr>
</tbody></table>
<br />
<br />
Erstellt im Ordner <b><i>/typo3conf/</i></b> eine Datei mit dem Namen <b style="font-style: italic;">extTables.php</b>, falls noch nicht vorhanden. Fügt in dieser Datei folgende Zeilen hinzu.<br />
<br />
<b><?php</b><br />
<b><br /></b>
<b>$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showPossibleLocalizationRecords'] = TRUE;</b><br />
<b>$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showRemovedLocalizationRecords'] = TRUE;</b><br />
<b>$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showAllLocalizationLink'] = TRUE;</b><br />
<b>$GLOBALS['TCA']['tt_content']['columns']['image']['config']['appearance']['showSynchronizationLink'] = TRUE;</b><br />
<b><br /></b>
<b>?></b><br />
<br />
Achtet bei einer bereits vorhandenen Datei darauf, dass ihr die <?php und ?> Klammern nicht doppelt hinzufügt, hier reichen dann auch die 4 Zeilen aus.<br />
<br />
Nun habt ihr auch die zusätzlichen Buttons "Localize all records" und "Synchronize with original language". "Localize all records" bewirkt, dass alle Bilder, die im Original hinterlegt sind und in der Übersetzung nicht vorhanden sind, übernommen werden. "Synchronize with original language" bewirkt, dass auch eine eventuell veränderte Reihenfolge der Bilder im Original auch in der Übersetzung übernommen wird. Beide Buttons erleichtern die Arbeit mit Typo3-Inhalten bei mehrsprachigen Websites ungemein!<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcyrwGCdkxT1L-uGDNt1MPqmRjVNcAIpkLB1U_FV0U0gNboY9YYK4m3lh2-EjDOpt-RWUAO51VVHSVQcDJAIUA8Hw-OOUBun6ys2hS2K9HFBJ7rQ_njTXHqtGUV_1N1Eb0kYfT7LdZjgU/s1600/Unbenannt2.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt=""Localize all records" und "Synchronize with original language" sind verfügbar" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcyrwGCdkxT1L-uGDNt1MPqmRjVNcAIpkLB1U_FV0U0gNboY9YYK4m3lh2-EjDOpt-RWUAO51VVHSVQcDJAIUA8Hw-OOUBun6ys2hS2K9HFBJ7rQ_njTXHqtGUV_1N1Eb0kYfT7LdZjgU/s1600/Unbenannt2.PNG" height="141" title="Zugriff auf "Localize all records" gegeben" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">"Localize all records" und "Synchronize with original language" sind verfügbar</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<br />Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt am Main, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-45136509447376210272014-11-04T17:48:00.001+01:002014-11-04T17:48:07.077+01:00Typo3-Extension "Quick Google Maps" (cbgooglemaps) anpassen<div style="background-color: white;">
<span style="font-family: inherit;">Ich finde die Extension "<a href="http://typo3.org/extensions/repository/view/cbgooglemaps" target="_blank">Quick Google Maps</a>" (cbgooglemaps) ist ziemlich genial, allerdings gibt es da 2 Dinge, die man nicht direkt über die Einstellungen der Extension beeinflussen kann: Die Reaktion von Google Maps auf das Scrollrad und der Einsatz von eigenen Pushpins, wobei Ersteres die Usability beeinflusst (stört beim scrollen) und letzteres die Optik. </span></div>
<div style="background-color: white;">
<span style="font-family: inherit;"><br />Leider habe ich nicht herausgefunden, wie man ein eigenes Template bei cbgooglemaps einsetzt, daher habe ich als quick'n'dirty-Anpassung einfach das ursprüngliche Template (/typo3conf/ext/cbgooglemaps/Resources/Private/Templates/Map/Index.html) direkt angepasst.<br />Öffnet das Template und fügt an den entsprechenden Stellen den Code hinzu (ist eigentlich ziemlich offensichtlich)</span></div>
<div style="background-color: white;">
<span style="font-family: inherit;"><br />Meine Anpassungen sind die Deaktivierung vom Scrollrad hinter Zeile 22<br /><b><span style="color: black; line-height: 14px; white-space: nowrap;">mapOptions_</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">{</span><span style="color: black; line-height: 14px; white-space: nowrap;">contentId</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">}</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">.</span><span style="color: black; line-height: 14px; white-space: nowrap;">scrollw<wbr></wbr>heel</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">= </span><span style="color: #228811; line-height: 14px; white-space: nowrap;">false</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">;</span></b></span></div>
<div style="background-color: white;">
<span style="font-family: inherit;"><span style="color: #666666;"><span style="line-height: 14px; white-space: nowrap;"><b><br /></b></span></span>und den Einsatz von einer eigenen Pin-Grafik hinter Zeile 29 (ändert die entsprechende URL)<br /><b><span style="color: black; line-height: 14px; white-space: nowrap;">mapCenter_</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">{</span><span style="color: black; line-height: 14px; white-space: nowrap;">contentId</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">}</span><span style="color: #666666; line-height: 14px; white-space: nowrap;">.</span><span style="color: black; line-height: 14px; white-space: nowrap;">icon </span><span style="color: #666666; line-height: 14px; white-space: nowrap;">= </span><span style="color: #aa2222; line-height: 14px; white-space: nowrap;">'<wbr></wbr>/fileadmin/images/Pushpin.png'</span><span style="color: #666666; line-height: 14px; white-space: nowrap;"><wbr></wbr>;</span></b><span style="color: #666666;"><span style="line-height: 14px; white-space: nowrap;"><br /></span></span><span style="color: #666666;"><span style="line-height: 14px; white-space: nowrap;"><br /></span></span><span style="color: #222222;">Hier könnt ihr die Extension mit den Veränderungen live begutachten - eigener Pushpin und kein Scrollwheel: <a href="http://www.e-kern.com/de/kontakt/standorte-europa/deutschland/frankfurt.html">http://www.e-kern.com/de/kontakt/standorte-europa/deutschland/frankfurt.html</a></span><span style="color: #222222;"><br /></span><span style="color: #222222;"><br /></span></span></div>
<div style="background-color: white;">
<span style="font-family: inherit;"><span style="color: #222222;">(diese Anpassungen basieren auf der Version 2.1.15 für Typo 4.x)</span></span></div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-74316325440167472782014-10-29T10:39:00.004+01:002014-12-17T16:57:06.320+01:00Typo3 4.5.x: Schwarze Hintergründe bei Bildkonvertierung mit TransparenzenHabt ihr auch das Problem, dass beim Umwandeln von PNG-, GIF- oder PDF-Dateien zu JPG die transparenten Bildelemente schwarz dargestellt werden? Ich hatte dieses Problem vor allem bei PDF- und GIF-Dateien gehabt. Bisher habe ich das Problem hauptsächlich bei Typo3 4.5.x und niedriger gehabt, bei Typo3 6.2 hingegen gar nicht (für 6.1, 6.0 und 4.7 habe ich nicht getestet).<br />
<br />
<br />
Öffnet hierzu die Datei /t3lib/class.t3lib_stdgraphic.php und ersetzt folgenden Code<br />
<br />
<b>$this->cmds['jpeg'] = '-colorspace ' . $this->colorspace . '</b><br />
<br />
mit diesem Code<br />
<br />
<b>$this->cmds['jpeg'] = '-colorspace ' . $this->colorspace . ' -background white -flatten </b><br />
<b><br /></b>
<br />
Achtet bitte zur Sicherheit auch darauf, dass hinter -flatten auch ein Leerzeichen ist. Wir ihr ablesen könnt, wird bei diesem Befehl für eine Umwandlung in JPG zunächst ein weißer Hintergrund hinzugefügt und anschließend das Bild "flachgelegt", also die Bildebenen zusammengelegt unter Berücksichtigung der vorher festgelegten Hintergrundfarbe.Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-12731388071085270202014-10-15T20:30:00.000+02:002014-10-20T11:55:55.147+02:00Sicherheitslücke in der Extension dmmjobcontrol und WorkaroundUpdate 20.10.2014: Kevin Renskers arbeitet zwar nicht mehr an der Extension und sucht auch jemanden, der die Extension gerne "adoptiert", aber er hat die unten genannten Änderungen <a href="http://typo3.org/extensions/repository/view/dmmjobcontrol" target="_blank">übernommen und hochgeladen</a>. Einen Bug gibt es zwar noch, aber auch dieser wird gerade von jemand anderen bearbetet und demnächst hochgeladen: Zwar wird die Sicherheitslücke mit diesen Änderungen gestopft, aber die Suchfunktion ist dann nicht mehr Nutzbar.<br />
----------------------------------<br />
<br />
Ein Sicherheitsleck in der Extension dmmjobcontrol wurde auf typo3.org bekannt gegeben: <a href="http://typo3.org/teams/security/security-bulletins/typo3-extensions/typo3-ext-sa-2014-012/">http://typo3.org/teams/security/security-bulletins/typo3-extensions/typo3-ext-sa-2014-012/</a><br />
<br />
Langfristig ist es sicherlich sinnvoller auf eine andere Extension aufzubauen, die auch gewartet wird, z.B. Job Fair, welches optisch fast eine 1:1 Kopie von dmmjobcontrol ist. Leider läuft diese Extension nur auf Typo3 6.x läuft, was den Umstieg etwas komplizierter macht, wenn man noch Typo3 4.5 nutzt. Manche Websites haben sehr viele Einträge in der Extension und eine Übertragung in eine andere Extension wird nicht so schnell funktionieren. Es scheint aber so, als würde Job Fair laut Angaben des Autors fast die gleiche Datenbankstruktur zu haben wie dmmjobcontrol - vielleicht ist es möglich, mit einer Art "Update-Script"<br />
<br />
Auf <a href="http://seclists.org/fulldisclosure/2014/Sep/89">http://seclists.org/fulldisclosure/2014/Sep/89</a> habe ich ein Workaround gefunden, wie ihr diese beiden Sicherheitslücken vorübergehend stopfen könnt. Dies sollte aber meiner Meinung nach nicht dauerhaft geschehen, sondern sollte solange, bis man es geschafft hat, auf eine andere Extension umzusteigen - wer weiß welche Sicherheitslücken in Zukunft auftauchen.<br />
<br />
<br />
Öffnet die Datei typo3conf/ext/dmmjobcontrol/pi1/class.tx_dmmjobcontrol_pi1.php<br />
<br />
Ersetzt die Zeile 112 mit folgendem Code gegen die XSS-Lücke<br />
<b>$markerArray['###KEYWORD_VALUE###'] = htmlspecialchars($session['search']['keyword'], ENT_QUOTES);</b><br />
<br />
Ersetzt die Zeile 257 mit folgendem Code gegen die SQL-Injection-Lücke:<br />
<b>$whereAdd[] = $table.'.uid_local=tx_dmmjobcontrol_job.uid AND ('.$table.'.uid_foreign='.implode(' OR '.$table.'.uid_foreign=', intval($value)).')';</b><br />
<div>
<br /></div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-30104010005135346342014-01-27T21:00:00.000+01:002014-04-23T15:41:19.859+02:00Extension ve_guestbook mit Typo3 6.2 (Beta 4) kompatibel machen<span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">Bekommt ihr, wenn ihr versucht unter Typo3 6.2 (Beta 4) die Extension "ve_guestbook" zum Laufen zu bringen diese Fehlermeldung?</span><br />
<br style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;" />
<span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">"</span><b>Fatal error</b>: require_once(): Failed opening required 'PATH_t3libclass.t3lib_tcemain.php'<i style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;"> ...?</i><br />
<i style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;"><br /></i><span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">Ähnlich wie beim vorherigen <a href="http://www.shentao.de/2013/11/t3jquery-mit-typo3-62-kompatibel-machen.html" target="_blank">Posting zum Thema T3jquery und Typo3 6.2 Beta</a>, wird hier in der Extension eine veraltete Klasse aufgerufen, die es nicht mehr gibt. Hier eine Anleitung, wie ihr das umgehen könnt, bis eine angepasste Version der Extension veröffentlicht wird.</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">Öffnet dazu die Datei </span><b style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">/typo3conf/ext/ve_guestbook/pi1/</b><span style="background-color: white;"><span style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 15px; line-height: 20.790000915527344px;"><b>class.tx_veguestbook_pi1.php</b> (Sicherheitskopie anlegen!) und verändert den Code in Zeile 31 von</span></span></span><br />
<br style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;" />
<span style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 15px; line-height: 20.790000915527344px;"><i>require_once (PATH_t3lib . "class.t3lib_tcemain.php");</i></span></span><br />
<br style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;" />
<span style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;">zu</span><br />
<br style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;" />
<span style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="font-size: 15px; line-height: 20.790000915527344px;"><i>require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('core') . 'Classes/DataHandling/DataHandler.php';</i></span></span><br />
<i style="background-color: white; color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20.790000915527344px;"><br /></i><span style="color: #333333; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif;"><span style="background-color: white; font-size: 15px; line-height: 20.790000915527344px;">Fertig! Jetzt sollte die Extension wieder Laufen</span></span><br />
<br />
---------------------------------<br />
Update vom 23. April 2014:<br />
<br />
in der oben genannten Datei müsst ihr auch in Zeile 25 den Code<br />
<br />
<i>require_once (PATH_tslib . "class.tslib_pibase.php");</i><br />
<br />
durch diesen Code ersetzen:<br />
<br />
<i>require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('frontend') . 'Classes/Plugin/AbstractPlugin.php';</i><br />
<i>----------------------------------------</i><br />
<i><br /></i>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-90830766045320455702013-11-02T14:46:00.001+01:002014-07-06T18:18:56.255+02:00T3jquery mit Typo3 6.2 kompatibel machenBekommt ihr, wenn ihr im Backend das T3jquery-Modul unter Typo3 6.2 (Beta 2) aufruft, die Fehlermeldung<br />
<br />
"<i><b>Fatal error</b>: require_once(): Failed opening required 'PATH_t3libclass.t3lib_scbase.php' ...?</i><br />
<i><br /></i>
Das liegt daran, dass T3Jquery im Backend die Klasse bzw. die Datei "/t3lib/class.t3lib_scbase.php" aufruft. Diese Klasse ist unter Typo3 6.2 allerdings "deprecated", wurde also in dieser Form entfernt und mit einer neuen Klasse ersetzt. Solange noch kein Patch rausgekommen ist, könnt ihr euch selbst helfen!<br />
<br />
Öffnet dazu die Datei <b>/typo3conf/ext/t3jquery/mod1/index.php</b> und verändert den Code in Zeile 33 von<br />
<br />
<i>require_once(PATH_t3lib . 'class.t3lib_scbase.php');</i><br />
<br />
zu<br />
<br />
<i>require_once(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('backend') . 'Classes/Module/BaseScriptClass.php');</i><br />
<i><br /></i>
Danach die Datei abspeichern und Voila! Das Backendmodul funktioniert wieder.<br />
<br />
<br />
----<br />
Update 1<br />
<br />
Das gleiche funktioniert natürlich auch mit anderen Extensions, die das Backend nutzen, wie z.B. dix_urltool.<br />
<br />
Hier müsst ihr in der Datei /typo3conf/ext/dix_urltool/mod1/index.php die Zeile 40 auf die gleiche Art und Weise modifizieren wie oben.<br />
<br />
----<br />
Update 2<br />
<br />
Seit Ende März gibt es auch ein offizielles Update von t3jquery, die mit Typo3 6.2 kompatibel ist!<br />
http://typo3.org/extensions/repository/view/t3jqueryShentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt am Main, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-34875411357056686032013-10-22T21:00:00.000+02:002013-10-23T12:44:18.561+02:00"Page is being generated" in Typo3 6.2.x entfernenIhr kennt es bestimmt gerade bei kleineren Websites auf Shared-Hostern: wenn mehrere Leute auf eine Seite zugreifen, die gerade erzeugt und im Cache abgelegt wird, bekommt man meistens zunächst eine leere, weiße Seite mit dem Hinweis "Page is being generated" und dass man 30 Sekunden lang abwarten soll. Oftmals ist eine Seite viel früher fertig und wer möchte schon 30 Sekunden lang warten und womöglich die Seite auch noch manuell aktualisieren?<br />
<br />
Mit einem leichten Eingriff könnt ihr die Generierung einer solchen Zwischenseite unterdrücken. Diese Vorgehensweise wurde zwar des öfteren schon erwähnt. Doch in Typo3 6.2 wurde dies verändert Anstatt in der Datei "<b>/typo3/sysext/cms/tslib/class.tslib_fe.php</b>" müsst ihr ab jetzt in der Datei "<b>/typo3/sysext/frontend/Classes/Controller/TypoScriptFrontendController.php</b>" einen Code verändern.<br />
<br />
<b><span style="color: #e69138;">Vergesst nicht, vorher eine Sicherheitskopie zu erstellen!</span></b><br />
<br />
Sucht in der Datei "TypoScriptFrontendController.php" den Code "<b>$this->tempPageCacheContent();</b>" und kommentiert diesen so aus "<b>// $this->tempPageCacheContent();</b>"<br />
<br />
Das war's! Jetzt sollte die Meldung nicht mehr kommen. Ein Besucher muss zwar immer noch warten, bekommt die Seite aber sofort geliefert, sobald diese fertig ist und wird nicht durch die leere Seite irritiert.Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt am Main, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-57443624433973198642013-07-30T21:00:00.000+02:002015-05-08T12:10:14.894+02:00Typo3 6.x Scheduler bei 1und1 mit Crontab und PHP5.4 einrichtenEndlich habe ich den Typo3-Scheduler in meinem 1und1-Hosting-Paket zum Laufen gebracht! Bei 1und1-Hosting gibt es einige Hürden einen Cronjob einzurichten, nicht zuletzt weil 1und1 standardmäßig nur PHP 4.4 bzw. 5.2 laufen hat, wenn man der offiziellen Anleitung von 1und1 folgt.<br />
Da man für neuere Typo3-Versionen (oder auch Joomla) mindestens PHP 5.3 benötigt, unter anderem für die PHP-Funktion "Namespaces", zeige ich euch, wie ihr einen Cronjob mit PHP 5.4 zum Laufen bringt.<br />
<br />
1. Klickt auf "Backend users" und erstellt einen Benutzer Namens "<b>_cli_scheduler</b>". Dieser sollte *kein* Amin-User sein und (aus Sicherheitsgründen) ein anderes Passwort haben als euer Login. Dieser Benutzer wird vom Scheduler verwendet, um die eure eingestellten Aufgaben abzuarbeiten.<br />
<br />
2. Öffnet im Typo3-Backend den Menüpunkt "Scheduler" und öffnet den Reiter "Setup check". Hier findet ihr den Pfad zu eurem Scheduler (der so ähnlich aussieht: "<b>/kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh scheduler"</b>), den ihr euch kopiert - nachher werdet ihr diesen Pfad benötigen.<br />
<br />
3. Loggt euch in euer 1und1-Account ein und öffnet unter "Zugänge" den Menüpunkt "SSH-Konfiguration". Hier könnt ihr eure Zugangsdaten für die Shell einsehen und konfigurieren. Diese Zugangsdaten werdet ihr ebenfalls gleich benötigen.<br />
<br />
4. Ladet euch <a href="http://www.putty.org/" target="_blank">Putty</a> herunter (ein kostenloser SSH-Client) und loggt euch mit den Zugangsdaten von Punkt 3 ein.<br />
<br />
5. Gebt in der Shell den Befehl "crontab -e" ein, und gebt danach "i" ein, um in den Editier-Modus zu gelangen.<br />
<br />
6. Scrollt mit den Cursortasten bis ganz nach unten und gebt dies ein, in 2 Zeilen.<br />
<b><i><br /></i></b>
<b><i>MAILTO=max.mustermann@email.de</i></b><br />
<b><i>0 0 * * * php6 /kunden/homepages/xx/dxxxxxxxxx/htdocs/Unterordner/typo3/cli_dispatch.phpsh schedule</i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhWguvOkCSNbbKabmxlqTu2QOV6UtYpEErlwHU6MmiHLHKH00aFvGyFvvs6lh5hdPTSmdAhpAbZvrLRpeBVY7nbF0zPdfrBnX7_AzUnIezN2Qc0BAoqJzRs9lytkE0YDAkjel3IZqhTqU/s1600/Unbenannt2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="1und1 Typo3 Cronjob Scheduler mit Crontab und SSH einstellen" border="0" height="16" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhWguvOkCSNbbKabmxlqTu2QOV6UtYpEErlwHU6MmiHLHKH00aFvGyFvvs6lh5hdPTSmdAhpAbZvrLRpeBVY7nbF0zPdfrBnX7_AzUnIezN2Qc0BAoqJzRs9lytkE0YDAkjel3IZqhTqU/s400/Unbenannt2.JPG" title="1und1 Typo3 Cronjob Scheduler mit Crontab und SSH einstellen" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Zum vergrößern klicken!</td></tr>
</tbody></table>
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;">Wie ihr erkennen könnt, ist der Abschnitt mit dem Pfad /kunden/.../ der gleiche Pfad aus Punkt 2, den ihr euch notiert habt (natürlich sind die vielen "/xx/xxx/" nur Platzhalter - bei jedem 1und1-Kunden ist der Pfad anders).</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
Die Zeile mit "MAILTO" ist optional - wenn ihr hier eure E-Mail-Adresse eingebt, bekommt ihr immer einen Statusbericht, wenn mit dem Cronjob etwas nicht richtig läuft.<br />
<i><span style="font-style: normal; font-weight: normal;"><br /></span></i>
<i><span style="font-style: normal; font-weight: normal;">Mit dem Befehl </span><span style="font-style: normal;"><b>php6</b> wird die aktuellste php-dev von 1und1 eingesetzt, in diesem Fall ist es die Version 5.4.17. </span></i><br />
<br />
<b><i><span style="font-style: normal; font-weight: normal;">Der Cronjob in diesem Beispiel wird jeden Tag um punkt 0 Uhr ausgeführt. Ich empfehle euch dies beizubehalten, in den meisten Fällen sollte das ausreichen. Solltet ihr andere Zeiten wollen bzw. eine höhere Frequenz, müsst ihr die ersten 5 Zeichen verändern. Hier einige Beispiele:</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;">Jede volle Stunde: 0 * * * *</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;">Jeden Tag um fünf Uhr morgens: 0 5 * * *</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;">An jedem 15. des Monats um Mitternacht: 0 0 15 * *</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;">Ihr könnt optional auch den Befehl </span></i></b>> /dev/null hinter "schedule" dranhängen, dann gibt es nur eine Benachrichtigung, wenn eine Fehlermeldung gekommen ist.<br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;">7. Um den Editier-Modus von Crontab zu beenden, gebt "Esc" ein, und danach "ZZ". Danach könnt ihr Putty mit dem Befehl "exit" schließen.</span></i></b><br />
<b><i><span style="font-style: normal; font-weight: normal;"><br /></span></i></b>
<b><i><span style="font-style: normal; font-weight: normal;">8. Das war's! Jetzt wird der Cronjob von 1und1 mit PHP 5.4 ausgeführt und sollte z.B. nicht mehr die Fehlermeldung wegen PHP 5.2 "</span></i></b>Unexpected character in input: '\' (ASCII=92)" ausspucken. Ihr könnt dies nochmal checken, indem ihr nach der zu erwartenden Ausführungszeit wieder im "Setup check" vom Scheduler im Typo3-Backend nachseht ob der Cronjob korrekt ausgeführt wurde.<br />
<br />
Wenn ihr irgendwelche Fragen habt, schreibt mir ein Kommentar, ich werde versuchen euch so schnell wie möglich zu antworten!Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Frankfurt am Main, Deutschland50.1109221 8.682126700000026249.7851336 8.0366797000000254 50.436710600000005 9.3275737000000269tag:blogger.com,1999:blog-4178256265229901853.post-20044116043875037462013-07-09T21:35:00.000+02:002013-07-09T21:35:04.824+02:00Einsteiger-Smartphone Empfehlung: Das Ace 2 bei Tchibo im AngebotHallo ihr Lieben,<br />
<br />
ist schon eine Weile her, dass ich zuletzt etwas geschrieben habe - nun wollte ich euch zum Thema Mobilfunk etwas schreiben. Einige von euch haben es vielleicht schon mitbekommen, vor einigen Wochen gab es das Galaxy Ace 1 bei Tchibo für 99 Euro inklusive Smartphone-Tarif (100 Minuten, 100 SMS, 300 MB Internet für knapp 8 Euro monatlich).<br />
<br />
Das ging wie zu erwarten weg wie Semmeln. Allerdings ist das Einsteiger-Smartphone Galaxy Ace 1 nicht gerade besonders gut ausgestattet - zugegebenermaßen sollte man für knapp 100 Euro nicht so viel erwarten können im Vergleich zu einem Mittelklasse-Modell für 250-300 Euro oder gar ein High-End-Modell für 500 Euro.<br />
<br />
Für alle, die entweder das Angebot verpasst haben oder die doch "etwas mehr" möchten, kann ich das <a href="https://www.tchibo.de/samsung-galaxy-ace-2-inkl-smartphone-sim-karte-mtl-9-95--p400043118.html" target="_blank">aktuelle Smartphone-Angebot von Tchibo</a> empfehlen: Im Moment gibt es das Ace 2 für 149 Euro mit ähnlichen Konditionen wie vor 3 Wochen (statt 8 Euro 10 Euro monatlich). Welchen Mehrwert bekommt man im Vergleich zum Ace 1?<br />
<br />
<ul>
<li>Deutlich höhere Displayauflösung (480x800 Pixel, wie z.B. beim Galaxy S2)</li>
<li>Größeren Akku (kompensiert die höhere Auflösung)</li>
<li>Dualcore 800 Mhz anstatt SingleCore (ebenfalls 800 Mhz)</li>
</ul>
<div>
Aber den wichtigsten Unterschied macht ein Detail aus: Samsung hat für das Galaxy Ace 2 ein <a href="http://www.chip.de/news/Samsung-Galaxy-Ace-2-Android-4.1-fuer-alle_60239731.html" target="_blank">Update auf eine ziemlich aktuelle Androidversion 4.1 ausgerollt</a>. Dies verspricht in Kombination mit dem DualCore vor allem eine Butterweiche Oberfläche und die Google Now!-Funktion. Weitere Infos zum Update könnt ihr in dem eben genannten Link finden.</div>
<div>
<br /></div>
<div>
Für 149 Euro ist das Ace 2 in Hinblick auf das Update definitiv ein besseres Angebot als das Ace 1 vor wenigen Wochen. Wer ein Einsteiger-Smartphone möchte, mit einem fairen Tarif, dem kann ich dieses Angebot wärmstens ans Herz legen. Selbst auf Amazon kostet dieses Handy im Moment 174 Euro!</div>
<div>
<br /></div>
<div>
Hinweis: Der Smartphone-Tarif von Tchibo ist ein Prepaid-Tarif auch wenn die Gebühren monatlich abgebucht werden! Dies ist insofern vor allem für O2 Vertragskunden relevant, da man die Rufnummer in diesem Fall nicht mitnehmen kann. Dies habe ich selbst vor kurzem erst schmerzlich erfahren müssen :-(</div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-44239237602197575812013-05-01T19:57:00.000+02:002013-07-04T09:27:59.251+02:00RealUrl Kompatibilität mit Typo3 6.1Typo3 6.1 wurde gestern veröffentlicht - leider funktioniert RealUrl noch nicht mit dieser Version zusammen wegen der Umstellung auf mysqli. Ein Patch gibt es zwar bereits schon, wurde aber noch nicht veröffentlicht im Extension Repository.<br />
<br />
Um euch die Wartezeit zu verkürzen, könnt ihr bis dahin aber auch selbst Hand anlegen:<br />
<ol>
<li>Öffnet die Datei /typo3conf/ext/realurl/class.tx_realurl.php, und ersetzt die Zeilen 239-243 mit folgendem Code:<br /><br />if (!t3lib_extMgm::isLoaded('dbal')) {<br />$this->useMySQLExtendedSyntax = TRUE;</li>
<li>Verändert ansonsten nichts vom Code (also bis Zeile 238 und ab Zeile 244). Speichert die Datei ab, löscht den Typo3 Cache im Backend und fertig! Jetzt sollte RealUrl wieder wie gewohnt laufen.</li>
</ol>
<div>
Sobald das eigentliche Update fertig ist, würde ich auf jeden Fall empfehlen diese dann auch zu installieren. Dieser Code sollte in erster Linie nur eine Überbrückung bis zum Update sein.</div>
<div>
<br /></div>
<div>
Die Quelle für den Fix könnt ihr hier einsehen: <a href="https://review.typo3.org/#/c/19452/">https://review.typo3.org/#/c/19452/</a><br />
<br />
Update 06.05.2013: RealUrl wurde jetzt offiziell geupdated und sollte nun auch auf Typo3 6.1 korrekt laufen. Hier der Link zur Extension Repository <a href="http://typo3.org/extensions/repository/view/realurl">http://typo3.org/extensions/repository/view/realurl</a></div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Karben, Deutschland50.2303566 8.773653299999978150.1490976 8.6122917999999782 50.3116156 8.9350147999999781tag:blogger.com,1999:blog-4178256265229901853.post-66861978550273530692013-01-31T19:34:00.000+01:002013-07-04T09:28:15.521+02:00Typo3 6.0.1 Fehlermeldung "File has been deleted"Habt ihr auch gerade von Typo3 6.0 auf 6.0.1 geupdated und bemerkt, dass im Backend beim Modul "Sprachen" immer noch die Fehlermeldung "File has been deleted" auftaucht mit einer entsprechenden Verlinkung zum Bugtracker von Typo3?<br />
<br />
<h4>
Fehlerbehebung:</h4>
Solltet ihr diesen Fehler bereits in Version 6.0 haben, müsst ihr folgendes machen:<br />
<div>
<div>
<ol>
<li>Alle Caches löschen<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglFfzJUuv2zd2wKyXatikH47clCCyMwSQqIVpFuS7A3H5P3u6mR4ehA842jvQuSYdzJumtXhQi1pk0pZBYNnUFU74ZQF8eh48vpAldU4mTrCC6I_8OH4NgXthYrJicOZQTu488fYd5u5k/s1600/cache+l%C3%B6schen.PNG" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglFfzJUuv2zd2wKyXatikH47clCCyMwSQqIVpFuS7A3H5P3u6mR4ehA842jvQuSYdzJumtXhQi1pk0pZBYNnUFU74ZQF8eh48vpAldU4mTrCC6I_8OH4NgXthYrJicOZQTu488fYd5u5k/s1600/cache+l%C3%B6schen.PNG" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;">Alle Caches löschen</td></tr>
</tbody></table>
<br />
</li>
<li>Im Installations-Tool unter "Clean up" die temporär gespeicherten Dateien löschen (keine Sorge, es sind nur temporäre Dateien - kein Datenverlust)<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfP9Yf1vd-Cukp4wrGMEC2CxQJgJiXOFzIgB6avDiaaMwmaPAgfftMBxgxmQ-x-NLFcWuxZQaQ05vWIpnkjgNJEUvPGpi6xRnIIUU_IxRoG_yClBYmljNRZr4NN3lDMPafxY31Q7YkF3o/s1600/clean+up.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfP9Yf1vd-Cukp4wrGMEC2CxQJgJiXOFzIgB6avDiaaMwmaPAgfftMBxgxmQ-x-NLFcWuxZQaQ05vWIpnkjgNJEUvPGpi6xRnIIUU_IxRoG_yClBYmljNRZr4NN3lDMPafxY31Q7YkF3o/s400/clean+up.PNG" width="333" /></a></li>
<li>In der Datenbank den Befehl "truncate sys_file_processedfile" ausführen. Durch diesen Befehl wird diese Tabelle geleert. Solltet ihr bei einem Hostingpaket von z.B. 1und1 sein und euch nicht so sehr mit Datenbanken auskennen, müsst ihr folgende Schritte folgen.</li>
</ol>
<ul>
<li>In eurem Kundenbereich den Menüpunkt "MySQL" auswählen.</li>
<li>In der Übersicht der Datenbanken auf "phpMyAdmin" klicken (neues Fenster wird geöffnet).</li>
<li>Auf der linken Seite die Tabelle "sys_file_processedfile" auswählen.</li>
<li>Schließlich ganz oben rechts auf "leeren" klicken. Nach einer Abfrage ob tatsächlich der Befehl "truncate sys_file_processedfile" ausgeführt werden soll, klickt ihr auf "ja". Das war's schon.</li>
</ul>
<ol>
</ol>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLwBWPcgTBUSfUxjGgSVH7OxFZvMTqZ4GhEkJ7ex-He3xJJXNFC_oOmtW-n8tXh9UofwVdcj0ZZy4NV0fFR7ChejEen96wIsSpxfHW2rb5Hxu7n2Z37grq7I32tzgV22Fhx4mjjZRXKgg/s1600/mysql.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="MySQL im 1und1-Kundenkonto" border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLwBWPcgTBUSfUxjGgSVH7OxFZvMTqZ4GhEkJ7ex-He3xJJXNFC_oOmtW-n8tXh9UofwVdcj0ZZy4NV0fFR7ChejEen96wIsSpxfHW2rb5Hxu7n2Z37grq7I32tzgV22Fhx4mjjZRXKgg/s320/mysql.PNG" title="MySQL im 1und1-Kundenkonto" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">MySQL im 1und1 Kundenkonto</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHDPhl1ClAWdKEpAcGIlyIIjQ_-pF-Mlr4jiXfY1zkSz41HErMjXheujDDtKyDocIdb0nJGQwSvGrnhbK21xJZ2OtSc8nTrvg4vBgu6IhbO7XuPw18M7FHx645PN4zViQSr_5ZJ7iZw1M/s1600/phpmyadmin.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="phpMyAdmin in den MySQL-Einstellungen" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHDPhl1ClAWdKEpAcGIlyIIjQ_-pF-Mlr4jiXfY1zkSz41HErMjXheujDDtKyDocIdb0nJGQwSvGrnhbK21xJZ2OtSc8nTrvg4vBgu6IhbO7XuPw18M7FHx645PN4zViQSr_5ZJ7iZw1M/s1600/phpmyadmin.PNG" title="phpMyAdmin in den MySQL-Einstellungen" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">phpMyAdmin in den MySQL-Einstellungen</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVCUMmQkJlyzvsvvY_qlV5AU3yn9v4pta9XvNvIWoZa-FatJ1vpiK1fsgij9H9JntZpWOm9f77CiJJlhux-Nh3UufTZi4dRDYCiHNvcPUPTsxreHC7xCwxSJfoXcpDGu2ahwH5Hlfexhk/s1600/processedfile.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Die sys_file_processedfile-Tabelle in der Datenbank" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVCUMmQkJlyzvsvvY_qlV5AU3yn9v4pta9XvNvIWoZa-FatJ1vpiK1fsgij9H9JntZpWOm9f77CiJJlhux-Nh3UufTZi4dRDYCiHNvcPUPTsxreHC7xCwxSJfoXcpDGu2ahwH5Hlfexhk/s1600/processedfile.PNG" title="Die sys_file_processedfile-Tabelle in der Datenbank" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Die sys_file_processedfile-Tabelle in der Datenbank</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bhqW5lqZd_-ieP7NKad6m2Q-NFEqIg82dtFRh0wiuklmP0PNbPBkbPDeTbR3lnZChHNApgGg8ljixPeF5J3WqCLpSRggQnBQ-5nCGl6ALD0XrfqpJtCPDTFPHDTuQRfE0mUdqIItxA4/s1600/truncate.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Tabelle leeren bzw. "truncate" sys_file_processedfile" border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bhqW5lqZd_-ieP7NKad6m2Q-NFEqIg82dtFRh0wiuklmP0PNbPBkbPDeTbR3lnZChHNApgGg8ljixPeF5J3WqCLpSRggQnBQ-5nCGl6ALD0XrfqpJtCPDTFPHDTuQRfE0mUdqIItxA4/s320/truncate.PNG" title="Tabelle leeren bzw. "truncate" sys_file_processedfile" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Tabelle leeren bzw. "truncate"</td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<h4>
Hintergrund:</h4>
<div>
Im Zuge der neuen Version 6.0 wurde das neue FAL (File Abstraction Layer) eingeführt: Kurzum werden in dieser Tabelle die temporären Dateien verzeichnet - sollten temporäre Dateien manuell entfernt worden sein kann es passieren, dass Typo3 nach temporären Dateien sucht, die eigentlich gar nicht mehr existieren und deswegen diese Fehlermeldung ausspucken. Selbst beim Update auf 6.0.1 bleibt diese Fehlermeldung bestehen, wenn diese Tabelle nicht zuvor geleert wird.</div>
<div>
<br /></div>
<div>
Wenn ihr weitere Fragen habt, oder einen Fehler in meiner Beschreibung gefunden habt, zögert nicht mich darauf hinzuweisen, entweder hier durch ein Kommentar oder direkt über mein Google+-Profil, welches ihr oben rechts finden könnt.</div>
</div>
Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Karben, Deutschland50.2303566 8.773653299999978150.1490966 8.6122917999999782 50.3116166 8.9350147999999781tag:blogger.com,1999:blog-4178256265229901853.post-73340873440588406912012-07-05T20:59:00.000+02:002013-07-04T09:28:32.543+02:00Google Adwords Beta: Search Companion Marketing<span style="background-color: white;">In regelmäßigen Abständen gibt es bei Google </span><span style="background-color: white;">Adwords</span><span style="background-color: white;"> neue Funktionen, die zunächst in einer Betaphase im kleinen Kreis getestet werden und später auf weitere Kunden erweitert werden. Das sogenannte "</span><span style="background-color: white;">Search</span><span style="background-color: white;"> </span><span style="background-color: white;">Companion</span><span style="background-color: white;"> Marketing" gibt es schon seit knapp einem halben Jahr und wurde bisher, soweit ich weiß, hauptsächlich in den USA getestet.</span><br />
<br />
<b>Wie sahen Anzeigen bisher aus?</b><br />
<br />
Bisher konnte ein Betreiber von Adwords seine Kampagnen in erster Linie auf das Suchnetzwerk und/oder auf das Displaynetzwerk von Google ausrichten. Also hat man in der Google-Suche Anzeigen in der Ergebnismaske eingeblendet bekommen, die von dem Suchwort abhängig waren. Dazu hat man abhängig von eigenen Interessen und dem Thema der gerade besuchten Webseite, auch Bild- und Textanzeigen auf diversen Webseiten bekommen, die an Google Adsense teilnehmen.<br />
<br />
<b>Was ist das Search Companion Marketing?</b><br />
<br />
Search Companion Marketing, welches im Moment nur von den persönlichen Google Adwords Betreuern für einzelne Kampagnen freigeschaltet werden kann, versucht beides zu kombinieren: Grundlage dazu ist eine Kampagne mit Keywords und passenden Bild- und Textanzeigen. Wenn nun jemand zum Beispiel nach "Winterstiefel Test" sucht und anschließend über organische Links auf eine Website mit Google Adsense kommt, werden gezielt zum Keyword "Winterstiefel" aus der Google-Suche die Displayanzeigen eingeblendet.<br />
<br />
<b>Lohnt sich SCM?</b><br />
<br />
Meiner Meinung nach sind die klassischen Anzeigen in der Googlesuche nach wie vor am effizientesten - solange man ein hohes Ranking hat und die Kosten dadurch relativ gering sind. Gerade hier könnte es für hart umkämpfte Keywords sehr teuer werden für neue Kunden. Reine Displaykampagnen können recht Streueffekte haben, daher kann SCM eine gute Alternative sein. Ich werde die Entwicklungen um SCM mal beobachten und euch auf dem Laufenden halten!Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-44466539979681290852012-06-11T19:44:00.000+02:002013-07-04T09:40:43.475+02:00Google Play Apps mit der O2-Abrechnung bezahlen<div class="separator" style="clear: both; text-align: left;">
Vor einiger Zeit hat O2 angekündigt, dass deren Kunden im Google Play Store die Apps über die Handyrechnung bezahlen können, also kann man sich lästige Kreditkarten sparen. Zusätzliche Kosten entstehen, soweit ich weiß, keine.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Während die Kunden von Vodafone und Telekom schon etwas länger in diesem Genuss standen, hatten Kunden von O2 eine ganze Weile lang das Nachsehen. Langsam begann der Rollout für die O2-Kunden, die nach und nach freigeschaltet wurden, nun hat es auch mich "erwischt". Finde ich sehr praktisch, schließlich hat nicht jeder eine Kreditkarte und selbst Prepaid-Kunden können auf diese Weise Apps bezahlen.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Was haltet ihr von dieser Bezahlmöglichkeit? Praktisch, oder?</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJt7aBLImFzobQ4E3DISewFmLmafT2xmHSs8clN0gpl6cC_APmLp3FAiCcjU1AZzmw72zLMa__L7aknPulOkUwOS2n__MIVzShJNsCpFmnJ0BbDwNLbnAbRuugxaPzd9L4TPW-BkBoJc/s1600/Screenshot_2012-06-11-17-35-06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJt7aBLImFzobQ4E3DISewFmLmafT2xmHSs8clN0gpl6cC_APmLp3FAiCcjU1AZzmw72zLMa__L7aknPulOkUwOS2n__MIVzShJNsCpFmnJ0BbDwNLbnAbRuugxaPzd9L4TPW-BkBoJc/s640/Screenshot_2012-06-11-17-35-06.png" width="384" /></a></div>
<br />Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0tag:blogger.com,1999:blog-4178256265229901853.post-698570835553471102012-04-27T08:30:00.000+02:002012-04-27T11:19:32.081+02:00Pferdefleisch bei ReweGestern habe ich etwas sehr interessantes gefunden bei unserem REWE Fuchs in Karben. Unser Rewe ist ziemlich groß und was ich klasse finde ist, dass die regelmäßig auch neue, ungewöhnliche Sachen aus alle Welt anbieten, die man sonst nicht gerade um die Ecke oder nur online bekommt. Seit einiger Zeit haben wir auch "Themenecken", z.B ein Asia-Regal und in diesem Fall auch eine Russland-Ecke - und dort gibt es <b><i>Pferdefleisch in Dosen</i></b> :) Guten Appetit!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho0TWXPWns0C1HpbRLlyQd3s8WjfCJqDQ4PXVjqla7JxnhYGBWvGUVQm9vPY3tQHs6LINYKv29m2YWW8hH71zFUSVf-VVe-2RMzCiLRj_0IKAGg4zECsM_2n-H2H4jgrtWPBfBwoW9TlU/s1600/20120425_205348.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="Mitte Rechts direkt neben der Dose Lammfleisch gibt es eine Dose Pferdefleisch... lecker!" border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho0TWXPWns0C1HpbRLlyQd3s8WjfCJqDQ4PXVjqla7JxnhYGBWvGUVQm9vPY3tQHs6LINYKv29m2YWW8hH71zFUSVf-VVe-2RMzCiLRj_0IKAGg4zECsM_2n-H2H4jgrtWPBfBwoW9TlU/s400/20120425_205348.jpg" title="Pferdefleisch bei REWE" width="400" /></a></div>
<br />
<br />
<span style="font-size: x-small;">P.S.: Dies sollte keine Kritik an REWE oder der Fleischindustrie (blah blah) sein, ich persönlich finde den Laden super und mehr Internationalität in der Essenskultur ist immer gut und öffnet den eigenen Horizont.</span>Shentaohttp://www.blogger.com/profile/05772280720148214669noreply@blogger.com0Rendeler Straße 76, 61184 Karben, Deutschland50.221118002277024 8.777137398719787650.220483002277021 8.7759033987197874 50.221753002277026 8.7783713987197878