Ein Blog von netzhaut.de

5

Maximale Bildbreite und -höhe abhängig vom Rahmen (section_frame)

Nach langem Befragen von Google und keinem passenden Ergebnis, haben wir nun eine Lösung gefunden, wie man die Bildbreite oder -höhe abhängig vom gewählten Rahmen setzen kann. Die Lösung über tt_content.image.20.maxW.cObject zu gehen ist in unserem Fall nicht flexibel genug gewesen, da hier nur die Breite und nicht die Höhe angesprochen werden kann. Als erstes wenn gewünscht eigene Rahmen anlegen. Setup: tt_content.stdWrap { innerWrap.cObject = CASE innerWrap.cObject { 31 =< tt_content.stdWrap.innerWrap.cObject.default 31.30.value = ><div class=“teaser“>|</div></div> 32 =< tt_content.stdWrap.innerWrap.cObject.default 32.30.value = ><div class=“teaser last“>|</div></div> } } Pageconfig: TCEFORM.tt_content { section_frame.removeItems = 1,5,6,10,11,12,20,21 section_frame.altLabels.0 = Bitte wählen Sie Ihr Layout section_frame.addItems.31 = Teaser...

0

Magento Checkout braucht ewig (Timeout)

Der Magento Checkout braucht manchmal Ewigkeiten, um den Checkout abzuschliessen. So ist z.B. ein Warenkorb mit 80 Positionen und ca. 400 Artikeln nach 6 Minuten in den PHP Timeout gelaufen. Der Grund hierfür liegt in den Observern, die beim Abschluss einer Bestellung aufgerufen werden. Hierbei handelt es sich um den Observer sales_order_item_save_after der Module Downloadable/RSS Diese Observer wurden auch aufgerufen, obwohl die Module im Magento backend in der Systemkonfiguration deaktiviert wurden. Um die Observer zu deaktivieren, müssen folgende Codezeilen auskommentiert werden: app/code/core/Mage/Downloadable/etc/config.xml downloadable/observer saveDownloadableOrderItem Hinweis: In Magento 1.6.2.0 heisst der Downloadable Observer sales_order_item_save_commit_after app/code/core/Mage/Rss/etc/config.xml rss/observer salesOrderItemSaveAfterNotifyStock rss/observer salesOrderItemSaveAfterOrderNew Danke hierfür...

0

Eclipse kann Update-Sites nicht erreichen

Wer – wie ich und viele andere – auf Eclipse als Entwicklungs-IDE setzt, wird früher oder später auch auf die Tücken und kleinen Stolperfallen der Freeware-Lösung stoßen. Eine davon – wenn man Google und verschiedenen Foren glaub darf – ist schon mehrfach aufgetreten, auf die richtige Lösung zu stoßen ist jedoch Glückssache. Es geht darum, über Eclipse weitere Plugins wie bspw. Subversion oder auch die PHP Development-Tools nachzuinstallieren. Gerade bei DualStack-Arbeitsrechnern – also denen, die sowohl via IPv4 als auch IPv6 angebunden sind – funktioniert das nicht ohne weiteres. Eclipse wird den Dienst mit der Fehlermeldung Unable to read repository...

0

Magento 1.5.1.0: Testbestellungen und -Kunden löschen

Getestet mit Magento 1.5.1.0 Vor dem Ausführen immer ein DB-Backup machen! SET FOREIGN_KEY_CHECKS=0; TRUNCATE `catalogsearch_query`; ALTER TABLE `catalogsearch_query` AUTO_INCREMENT=1; TRUNCATE `sales_flat_creditmemo`; TRUNCATE `sales_flat_creditmemo_comment`; TRUNCATE `sales_flat_creditmemo_grid`; TRUNCATE `sales_flat_creditmemo_item`; TRUNCATE `sales_flat_invoice`; TRUNCATE `sales_flat_invoice_comment`; TRUNCATE `sales_flat_invoice_grid`; TRUNCATE `sales_flat_invoice_item`; TRUNCATE `sales_flat_order`; TRUNCATE `sales_flat_order_address`; TRUNCATE `sales_flat_order_grid`; TRUNCATE `sales_flat_order_item`; TRUNCATE `sales_flat_order_payment`; TRUNCATE `sales_flat_order_status_history`; TRUNCATE `sales_flat_quote`; TRUNCATE `sales_flat_quote_address`; TRUNCATE `sales_flat_quote_address_item`; TRUNCATE `sales_flat_quote_item`; TRUNCATE `sales_flat_quote_item_option`; TRUNCATE `sales_flat_quote_payment`; TRUNCATE `sales_flat_quote_shipping_rate`; TRUNCATE `sales_flat_shipment`; TRUNCATE `sales_flat_shipment_comment`; TRUNCATE `sales_flat_shipment_grid`; TRUNCATE `sales_flat_shipment_item`; TRUNCATE `sales_flat_shipment_track`; TRUNCATE `sales_invoiced_aggregated`; TRUNCATE `sales_invoiced_aggregated_order`; TRUNCATE `sales_order_aggregated_created`; TRUNCATE `sendfriend_log`; TRUNCATE `tag`; TRUNCATE `tag_relation`; TRUNCATE `tag_summary`; TRUNCATE `wishlist`; TRUNCATE `log_quote`; TRUNCATE `report_event`; ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1; ALTER...

0

PHP array_merge_recursive() + realurl „fixedPostVars“

Einige Zeit hat es mich heute gekostet, um festzustellen, warum meine Erweiterung der realurl-Konfiguration via Hook zur Autoconfiguration fehlerhaft in der Konfiguration ankommt. Ursache ist ein Fehlverhalten der PHP-Funktion array_merge_recursive(). array_merge_recursive() Zunächst, die Beschreibung der Funktion aus der Dokumentation: array_merge_recursive() merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array. If the input arrays have the same string keys, then the values for these keys are merged together into an array, and this is done recursively, so that if one of...

2

mySQL und die Zeit

Oft wurstelt man bei der Entwicklung mit UNIX-Timestamps für Zeitangaben herum. Das ist kein Hexenwerk, aber direkt das Gelbe vom Ei ist es auch nicht. Speziell zur Implementierung von Zeit- und Datums-Filtern benötigt dieser Lösungsansatz eine Menge Logik, die in PHP gegossen werden muss (Schaltjahre, Schaltsekunden, …). Das Herumrechnen damit ist mühsam und sorgt oft für Knöten im Hirn. Dies kann man wesentlich einfacher haben. mySQL kommt mit einer großen Vielfalt von Datums- und Zeitfunktionen daher, derer man sich wunderbar bedienen kann. Wenn man sich zum Beispiel die Funktion TIMESTAMPADD() ansieht, wird man schnell merken, dass diese Funktionen das Entwicklerleben...

0

lighttp, redirects und rewrites

Wenns mal wieder performant sein muss, ist oft der Griff zu lighty (http://www.lighttpd.net/) ein probates Mittel. Seine Performance-Vorteile gegenüber dem Apache2 aus der Dose (http://httpd.apache.org/) erreicht der lighttpd unter anderem dadurch, dass er sich das aufwendige Parsen von .htaccess-Files spart. Der Pferdefuß dabei ist allerdings, dass serverseitige rewrites und redirects nichtmehr einfach in ein File im betroffenen Verzeichnis gekippt werden können sondern direkt in die Config von lighttpd geschrieben werden. Gerade in Verbindung mit einer TYPO3-Umgebung kann der Einsatz von lighttpd als Webserver allerdings schnell zur Herausforderung werden. Seiten werden umbenannt, realurl generiert die Pfade neu und – hoppla, plötzlich...

0

Einfügen / aktualisieren von SSL-Zertifikaten unter ispCP

SSL-Zertifikate unter ispCP einzurichten oder zu Verlängern ist etwas aufwändiger als im Apache aus der Dose. Grundlagen Das Vorgehen sieht im Detail wie folgt aus: Auf dem fraglichen Server prüft man zuerst, ob die notwendigen Voraussetzungen erfüllt sind. Am einfachsten fällt dies, indem man sich über crontab -l die aktuellen Cronjobs anzeigen lässt. Hier muss folgende Zeile vorhanden sein: M H D Mo DoW test -x /var/www/ispcp-bin/upd-ssl.pl && /var/www/ispcp-bin/upd-ssl.pl > /etc/apache2/sites-enabled/ispcp-ssl.conf 2>/dev/null Hier erkennt man auch schon, welches Script relevant ist, in diesem Fall /var/www/ispcp-bin/upd-ssl.pl Sieht man sich dieses Script genauer an, wird man im Konfigurationsbereich u. a. die folgenden...

0

ispCP Host Konfiguration aus der Datenbank neu aufbauen

Gravierende Aenderungen oder (reparierte) Dateisystemfehler koennen es noetig machen, die Konfigurationen eines Hosts neu aufzubauen. Bei Hosts die via ispCP verwaltet werden, ist das mit Hilfe der Datenbank sehr einfach. Generell bietet es sich an, die Datenbank selbst noch vorher auf Fehler zu pruefen (und diese evtl. auch zu reparieren. mysqlcheck -u root -p –all-databases –auto-repair Danach muss der ispCP Dienst gestoppt werden, damit Aenderungen die moeglicherweise gerade von Benutzern vorgenommen werden, nicht dazwischen funken. /etc/init.d/ispcp_daemon stop In der Datenbank muessen alle Eintraege auf „zu erledigen“ gesetzt werden. mysql -u root -p USE ispcp; UPDATE mail_users SET status=“toadd“ where status=“ok“;...

0

Finden von Prozessen mit Bibliotheken die aktualisiert wurden

Nach Distributionsupdates (apt, yum, smart, etc.) mit denen Bibliotheken aktualisiert wurden, profitieren Prozesse welche entsprechende Bibliotheken verwenden nicht davon bis sie neugestartet wurden. Im schlimmsten Fall kann damit ein Sicherheitsupdate zwar auf dem System eingespielt sein, die davon betroffene Software besitzt aber noch den „alten“ Stand (ueblicherweise werden Bibliotheken nur beim Laden von Prozessen in den Speicher mitgeladen). Um diese Prozesse zu finden, hilft es mit lsof auf nicht mehr vorhandene (DEL) Dateien zu pruefen. Um die Ergebnismenge etwas zu verkleinern kann man Device-Nodes (/dev/…) und Temporaere Ressource (/tmp, /var/tmp) ausfiltern. lsof | grep „DEL“ | grep -v ‚/dev‘ |...