Magento: eigene Events mit Observer definieren

18. Februar 2011 at 14:15

Events mit Hilfe des Observer im Magento definiert ihr in der config.xml des Modules wie folgt (bsp. Event in der Customer_Adress-Klasse):

<frontend>
<events>
<namespace_module_address_save_after>
<observers>
<namespace_module_observer>
<type>singleton</type>
<class>namespace_module/observer</class>
<method>customerSaveFrontEnd</method>
</namespace_module_observer>
</observers>
</namespace_module_address_save_after>
</events>
 </frontend>

Der Aufruf in PHP in der entsprechenden Funktion:

$eventArgs = array(
 'address' => $address,
 'request' => $this->getRequest(),
 );
 Mage::dispatchEvent('customer_address_save_after', $eventArgs);

Die aufgerufene Funktion in der Observer-Klasse:

public function customerSaveFrontEnd(Varien_Event_Observer $observer)
 {
// add your code here
 }

Video: Tiefer Einblick in JQuery von Ben Nadel

9. Februar 2011 at 12:59

Die mächtige und umfangreiche Javascript-Bibliothek jQuery, mittlerweile in Version 1.5 verfügbar, sollte jedem Webentwickler ein Begriff sein. Gerade da diese sehr umfangreich ist, ist es oft hilfreich verschiedene Tutorials zu lesen, sind Bücher doch zu schnell nicht mehr auf dem aktuellen Stand.

Sehr zu empfehlen ist das Video Tutorial von JQuery Chief Web Developer Ben Nadel.  In dem Video gibt er in Form einer Präsentation einen intensiven Einblick in jQuery und mit all seinen Komponenten. Er geht zwar nur kurz auf die einzelnen Bestandteile ein, zeigt allerdings diese auch anhand kleiner Beispiele. Ca. 100 Minuten Videomaterial sind enthalten.

Sehr empfehlenswert für jQuery Einsteiger und Entwickler über diesem Level hinaus.

Zum Video “An Intensive Exploration Of jQuery With Ben Nadel”

HTML5 & CSS 3 Tutorial – HowTo – Example Page

5. Januar 2011 at 18:54

Ein paar Tipps zur Nutzung verschiedener HTML5 & CSS3 Techniken findet ihr unter folgendem Link:

http://net.tutsplus.com/tutorials/html-css-techniques/html-5-and-css-3-the-techniques-youll-soon-be-using

Magento: Alle Produkt-Attribute und deren Optionen einer Collection ausgeben

3. Januar 2011 at 12:16

Mit dem folgenden Code könnt ihr in Magento eine Liste aller Attribute und deren Optionen ausgeben.

require_once $_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php';
umask(0);
Mage::app();
$product = Mage::getModel('catalog/product');
$collection = Mage::getResourceModel('eav/entity_attribute_collection')
                ->setEntityTypeFilter($product->getResource()->getTypeId());
echo "<pre>\n";
foreach ($collection as $attribute) {
    echo $attribute['attribute_code'] . "\n";
    $collection = Mage::getResourceModel('eav/entity_attribute_collection')
                    ->setEntityTypeFilter($product->getResource()->getTypeId())
                    ->addFieldToFilter('attribute_code', $attribute['attribute_code']);
    $_attribute = $collection->getFirstItem()->setEntity($product->getResource());
    $attribute_options = $_attribute->getSource()->getAllOptions(false);
    if ($attribute_options) {
        foreach ($attribute_options as $option) {
            if ($option['label']) {
                echo "\t" . $option['label'] . "\n";
            }
        }
    }
}
echo "</pre>\n";

SEO: Mit PHP heraus finden ob Besucher Googlebot/Spider?

8. Dezember 2010 at 15:28

Mit der folgenden Funktion könnt ihr heraus finden ob es sich beim dem Besucher um ein Googlebot oder -Spider handelt:

public function isSpider()
 {
    if (strpos($_SERVER['HTTP_USER_AGENT'],"Googlebot"))
      return true;
    else
      return false;
 }

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

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: Neues Kategorie Attribute hinzufügen / Adding category attributes

28. September 2010 at 16:13

Add a mysql setup file inside the directory of your module YourNamespace/YourModule/sql/yourmodule_setup/ and write the following code in your module’s mysql setup file:

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
$setup->addAttribute('catalog_category', 'my_attribute', array(
 'group'         => 'General',
 'input'         => 'text',
 'type'          => 'varchar',
 'label'         => 'My Attribute',
 'backend'       => '',
'frontend'      => '',
 'visible'       => 1,
 'required'      => 0,
 'user_defined' => 1,
 'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
 'visible_on_front' => 1,
'unique'       => 0,
));
// add attribute to group
$installer->addAttributeToGroup('catalog_category', 'Default', 'my_module', 'my_attribute');
$installer->endSetup();

Now you found the code my_attribute and the label My Attribute. You can find it under Admin Panel / Catalog / Manage Categories / General Information .

With the array param ’sort_order‘ you can define the order in the backend-list.

Magento: expand „sort by“ list – „sortieren nach“ Liste erweitern

28. September 2010 at 11:20

you want to expand the default sort by list, without add new attributes? The solution:

extends the class Mage_Catalog_Model_Config and overwrite the function getAttributeUsedForSortByArray() with your own custom option array, f.e. :

class YourNamespace_Catalog_Model_Config extends Mage_Catalog_Model_Config
{
 /**
 * Retrieve Attributes Used for Sort by as array
 * key = code, value = name
 *
 * @return array
 */
 public function getAttributeUsedForSortByArray()
 {
 $custom_options = array(
 'custom_selection' => Mage::helper('catalog')->__('Custom Selection'),
 'newest_first'        => Mage::helper('catalog')->__('Newest first'),
 'bestselling'        => Mage::helper('catalog')->__('Bestselling first'),
 'promotions_first'    => Mage::helper('catalog')->__('Promotions first'),
 'price_htl'            => Mage::helper('catalog')->__('High to low'),
 'Price_lth'            => Mage::helper('catalog')->__('Low to high')
 );
 return $custom_options;
 /*
 * no further sortable attributes needed.
 *
 $options = parent::getAttributeUsedForSortByArray();
 return $custom_options + $options;
 */
 }
}