strtolower with utf8 and special characters / strtolower mit utf8 und Umlauten

29. November 2010 at 18:19

You want convert words that are formatted with utf8 format and possibly with strtolower ucfirst?
Here the solution:

Ihr möchtet Wörter welche mit utf8 formatiert sind mit strtolower und ggf. ucfirst formatieren?
Hier die Lösung:

 

function strToLowerUtf8($value)
{
 $value = utf8_decode($value);
 $value = ucfirst(strtolower($value));
 $value = utf8_encode($value);
 return $value;
}

Alterantive Lösung per mod_rewrite

SEO – AJAX Links für Google optimieren – AJAX crawlen

24. November 2010 at 00:01

Zu den aktuellen Internet-Technologien gehört selbstverständlich der Einsatz von AJAX. Die Inhalte werden schnell, effizient und live nach geladen ohne das ein kompletter Reload der Web-Seite notwendig ist. Damit steigt die Benutzerbarkeit (usability) der Webseite wesentlich.

Doch werden diese Webseiten sauber von Google oder anderen Suchmaschinen gecrawlt?

Um das zu erreichen sind folgende zwei Herangehensweisen sind möglich:

  1. Inhalte für Suchmaschinen werden auch mit einer statischen URL angeboten
  2. Inhalte für alle Besucher werden mit einer „AJAX-URL“ angeboten.

Die AJAX-URL basiert dabei auf das sogenannte „Hashbang“ (Kombination aus Raute-Symbol und Ausrufezeichen: !#). Durch das Hashbang wird Google signalisiert dass es sich um eine AJAX-URL handelt. Diese wird dann von der Suchmaschine wie folgt ausgelesen: Alles was nach dem Hashbang kommt wird in einem URL-Parameter umgewandelt: aus www.fly2mars-media.de/#!parameter/value wird www.fly2mars-media.de/?_escaped_fragment=parameter/value . Zeigen beide URLs den selben Inhalt, so ist für die Suchmaschine alles in Ordnung (kein duplicate content). Die Seiten mit dem Parameter „_escaped_fragment“ können ggf. mit dem Statuscode 301 auf sprechende URLs umgeleitet werden, z.B. www.fly2mars-media.de/parameter/value.

Magento / Import in MySQL 5.0 – USING BTREE Error

19. November 2010 at 17:22

Wenn ihr ein MySQL-Datenbank-Dump in eine MySQL 5.0 importieren möchtet welche mit mysqldump auf einer 5.1 erzeugt wurde, dann bekommt ihr höchstwahrscheinlich eine Fehlermeldung wie die folgende:

Der Grund ist dass die key syntax von 5.0 auf 5.1 wie folgt geändert wurde:
mysql50
UNIQUE KEY IDX_BASE( entity_type_id, entity_id, attribute_id, store_id ) USING BTREE,
mysql51
UNIQUE KEY IDX_BASE USING BTREE ( entity_type_id, entity_id, attribute_id, store_id ),

Leider gibt es kein aktuellen Kompatabilitäts-Modus like –comptability=mysql50 in mysqldump.
Es kann zwar mysqldump –comptability=mysql40 benutzt werden, allerdings auf eigene Gefahr 😉

Mit dem folgenden Befehl könnt ihr in der Bash den dump vor dem Import bereinigen (benutzt das consolen-programm „sed“):

sed -i -r 's/\(([^)]+)\) USING BTREE/USING BTREE (\1)/g' magento.sql

Magento: Create shipment from order

18. November 2010 at 15:35

You want to create a shipment from an order?
here is the solution in php (example with invoice-data) :

$order = Mage::getModel('sales/order')->loadByIncrementId($invoice->getOrder()->getIncrementId());
if($order->canShip())
{
 $_itemQty                 = $order->getItemsCollection()->count();
 $_shipment             = Mage::getModel('sales/service_order', $order);
 $_shipment             = new Mage_Sales_Model_Order_Shipment_Api();
 $_shipmentId         = $_shipment->create($order->getIncrementId());
}

in phpMyAdmin Session timeout verlängern / verändern

10. November 2010 at 12:34

Gerade bei der lokalen Entwicklung kann das ständige session-timeout echt nerven. Um die Session-Time zu verlängern ergänzt die config.inc.php von phpMyAdmin mit der folgenden Zeile:

$cfg['LoginCookieValidity'] = 3600 * 9; // 9 hours

Magento & SEO – h1 Tag auf der Startseite richtig setzen

5. November 2010 at 09:59

magento ecommerce logo

Im Standard Theme von Magento findet man folgendes:

<h1 class="logo"><strong>Magento Commerce</strong><a href="http://demo.magentocommerce.com/" title="Magento Commerce" class="logo" rel="nofollow"><img src="http://demo3.magentocommerce.com/skin/frontend/default/default/images/logo.gif" alt="Magento Commerce" /></a></h1>

Dadurch wird das ggf. fehlende h1-Tag mit dem Alt-Attribute des Shop-Logo-Bildes gesetzt (kann im Admin-Backend konfiguriert werden). Die Idee dahinter ist gut, so ist auf jeder Seite ein h1 vorhanden. Die Umsetzung allerdings fraglich. Durch die folgende CSS Formatierung auf dem Strong-Element wird das h1 für die Human-Visitors versteckt:

strong {
font-size:0;
height:0;
left:-999em;
line-height:0;
overflow:hidden;
position:absolute;
text-indent:-999em;
top:-999em;
width:0;
}

Google mag solch Tricks gar nicht, straft ggf. die Seite so gar ab.

Hier die bessere Lösung:

<h1><a href="http://demo.magentocommerce.com/" title="Magento Commerce"><img src="http://demo3.magentocommerce.com/skin/frontend/default/default/images/logo.gif" alt="Magento Commerce" /></a></h1>

In diesem Fall wird der Alt-Title des Bildes als h1 verwendet, ohne irgend welch Visibility-Tricks welche zur Abmahnung führen könnten.