# Magento Code Snippets # ## Download extension manually using mage ## ```bash ./mage config-set preferred_state stable ./mage clear-cache ./mage sync ./mage download community Module_Name ``` ## Clear cache/reindex ## ```bash php -f shell/indexer.php reindexall ``` ```php removeCache('catalog_rules_dirty'); // reindex prices Mage::getModel('index/process')->load(2)->reindexEverything(); /* 1 = Product Attributes 2 = Product Attributes 3 = Catalog URL Rewrites 4 = Product Flat Data 5 = Category Flat Data 6 = Category Products 7 = Catalog Search Index 8 = Tag Aggregation Data 9 = Stock Status */ ?> ``` ## Delete cache/sessions/ ## ```bash rm -rf var/log/* rm -rf var/cache/* rm -rf var/session/* rm -rf var/report/* rm -rf var/locks/* rm -rf app/code/core/Zend/Cache ``` ## Load category by id ## ```php load(89); $_category_url = $_category->getUrl(); ?> ``` ## Load product by id or sku ## ```php load(12); $_product_2 = Mage::getModel('catalog/product')->loadByAttribute('sku','cordoba-classic-6-String-guitar'); ?> ``` ## Get Configurable product's Child products ## ```php getUsedProducts(null, $product); ?> ``` ## Get Configurable product's Children's (simple product) custom attributes ## ```php setProduct($_product); $col = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions(); foreach($col as $simple_product){ var_dump($simple_product->getId()); } ?> ``` ## Log to custom file ## ```php ``` ## Call Static Block ## ```php getLayout()->createBlock('cms/block')->setBlockId('block-name')->toHtml(); ?> ``` ## Add JavaScript to page ## First approach: page.xml - you can add something like ```xml ``` Second approach: Find `page/html/head.phtml` in your theme and add the code directly to `page.html`. Third approach: If you look at the stock page.html mentioned above, you'll see this line ```php getChildHtml(); ?> ``` Normally, the getChildHtml method is used to render a specific child block. However, if called with no paramater, getChildHtml will automatically render all the child blocks. That means you can add something like ```xml ... ``` to `page.xml`, and then add the `mytemplate.phtml` file. Any block added to the head block will be automatically rendered. (this automatic rendering doesn't apply for all layout blocks, only for blocks where getChildHtml is called without paramaters). ## Get the current category/product/cms page ## ```php ``` ## Run Magento Code Externally ## ```php ``` ## Programmatically change Magento’s core config data ## ```php saveConfig('design/head/demonotice', "1", 'default', 0); // turns notice off $my_change_config->saveConfig('design/head/demonotice', "0", 'default', 0); ?> ``` ## Changing the Admin URL ## Open up the `/app/etc/local.xml` file, locate the `` tag, and change the ‘admin’ part it to something a lot more random, eg: ```xml ``` Clear your cache and sessions. ## Magento: Mass Exclude/Unexclude Images ## By default, Magento will check the 'Exclude' box for you on all imported images, making them not show up as a thumbnail under the main product image on the product view. ```sql # Mass Unexclude UPDATE`catalog_product_entity_media_gallery_value` SET `disabled` = '0' WHERE `disabled` = '1'; # Mass Exclude UPDATE`catalog_product_entity_media_gallery_value` SET `disabled` = '1' WHERE `disabled` = '0'; ``` ## getBaseUrl – Magento URL Path ## ```php ``` ## Get The Root Category In Magento ## ```php getStore()->getRootCategoryId(); $_category = Mage::getModel('catalog/category')->load($rootCategoryId); // You can then get all of the top level categories using: $_subcategories = $_category->getChildrenCategories(); ?> ``` ## Get The Current URL In Magento ## ```php getCurrentUrl(); ?> ``` ## Category Navigation Listings in Magento ## Make sure the block that you’re working is of the type catalog/navigation. If you’re editing catalog/navigation/left.phtml then you should be okay. ```php
helper('catalog/category') ?> getStoreCategories() ?> 0): ?>
``` ## Debug using zend ## ```php ``` ## $_GET, $_POST & $_REQUEST Variables ## ```php getRequest()->getParam('product_id'); // The second parameter to getParam allows you to set a default value which is returned if the GET value isn't set $productId = Mage::app()->getRequest()->getParam('product_id', 44); $postData = Mage::app()->getRequest()->getPost(); // You can access individual variables like... $productId = $postData['product_id']); ?> ``` ## Get methods of an object ## First, use `get_class` to get the name of an object's class. ```php ``` Then, pass that `get_class_methods` to get a list of all the callable methods on an object ```php ``` ## Is product purchasable? ## ```php isSaleable()) { // do stuff } ?> ``` ## Load Products by Category ID ## ```php load(47); $_productCollection = $_category->getProductCollection(); if($_productCollection->count()) { foreach( $_productCollection as $_product ): echo $_product->getProductUrl(); echo $this->getPriceHtml($_product, true); echo $this->htmlEscape($_product->getName()); endforeach; } ?> ``` ## Get associated products In /app/design/frontend/default/site/template/catalog/product/view/type/ ``` php helper('catalog/output'); ?> getAllowProducts() ?>

productAttribute($_item, $_item->getName(), 'name'); ?> | getName(); ?> | getPrice(); ?>

``` ## Get An Array of Country Names/Codes in Magento ## ```php loadData() ->toOptionArray(false); echo '
';
    print_r( $countryList);
    exit('
'); ?> ``` ## Create a Country Drop Down in the Frontend of Magento ## ```php loadData() ->toOptionArray(false) ?> 0): ?> ``` ## Return Product Attributes ## ```php getThisattribute(); $_product->getAttributeText('thisattribute'); $_product->getResource()->getAttribute('thisattribute')->getFrontend()->getValue($_product); $_product->getData('thisattribute'); // The following returns the option IDs for an attribute that is a multiple-select field: $_product->getData('color'); // i.e. 456,499 // The following returns the attribute object, and instance of Mage_Catalog_Model_Resource_Eav_Attribute: $_product->getResource()->getAttribute('color'); // instance of Mage_Catalog_Model_Resource_Eav_Attribute // The following returns an array of the text values for the attribute: $_product->getAttributeText('color') // Array([0]=>'red', [1]=>'green') // The following returns the text for the attribute if ($attr = $_product->getResource()->getAttribute('color')): echo $attr->getFrontend()->getValue($_product); // will display: red, green endif; ?> ``` ## Format Price ## ```php currency($_finalPrice,true,false); } ?> ``` ## Cart Data ## ```php getQuote()->getData(); print_r($cart); $cart = Mage::helper('checkout/cart')->getCart()->getItemsCount(); print_r($cart); $session = Mage::getSingleton('checkout/session'); foreach ($session->getQuote()->getAllItems() as $item) { echo $item->getName(); Zend_Debug::dump($item->debug()); } ?> ``` ## Total items added in cart ## ```php getQuote()->getItemsCount(); Mage::getSingleton('checkout/session')->getQuote()->getItemsCount(); ?> ``` ## Total Quantity added in cart ## ```php getQuote()->getItemsQty(); Mage::getSingleton('checkout/session')->getQuote()->getItemsQty(); ?> ``` ## Sub Total for item added in cart ## ```php getQuote()->getSubtotal(); Mage::getSingleton('checkout/session')->getQuote()->getSubtotal(); ?> ``` ## Grand total for item added in cart ## ```php formatPrice(Mage::getModel('checkout/cart')->getQuote()->getGrandTotal()); Mage::helper('checkout')->formatPrice(Mage::getSingleton('checkout/session')->getQuote()->getGrandTotal()); ?> ``` ## Sub total of cart inkl tax without shipping ## ```php getQuote(); $items = $quote->getAllItems(); foreach ($items as $item) { $priceInclVat = $item->getRowTotalInclTax(); } Mage::helper('checkout')->formatPrice($priceInclVat); ?> ``` ## Get products id, name, price, quantity, etc. present in your cart ## ```php getQuote()->getAllItems(); $items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems(); foreach($items as $item) { echo 'ID: '.$item->getProductId().'
'; echo 'Name: '.$item->getName().'
'; echo 'Sku: '.$item->getSku().'
'; echo 'Quantity: '.$item->getQty().'
'; echo 'Price: '.$item->getPrice().'
'; echo "
"; } ?> ``` ## Get number of items in cart and total quantity in cart ## ```php getQuote()->getItemsCount(); $totalQuantity = Mage::getModel('checkout/cart')->getQuote()->getItemsQty(); ?> ``` ## Get Simple Products of a Configurable Product ## ```php getTypeId() == "configurable") { $ids = $_product->getTypeInstance()->getUsedProductIds(); ?>
    load($id); ?>
  • getName() . " - " . (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($simpleproduct)->getQty(); ?>
``` ## Reset Development Environment (delete orders, customers, reset ids and counters, truncate statistics) ## ```sql SET FOREIGN_KEY_CHECKS=0; -- Here's where we reset the orders TRUNCATE `sales_flat_order`; TRUNCATE `sales_flat_order_address`; TRUNCATE `sales_flat_order_grid`; TRUNCATE `sales_flat_order_item`; 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_order_payment`; TRUNCATE `sales_flat_quote_payment`; TRUNCATE `sales_flat_shipment`; TRUNCATE `sales_flat_shipment_item`; TRUNCATE `sales_flat_shipment_grid`; TRUNCATE `sales_flat_invoice`; TRUNCATE `sales_flat_invoice_grid`; TRUNCATE `sales_flat_invoice_item`; TRUNCATE `sendfriend_log`; TRUNCATE `tag`; TRUNCATE `tag_relation`; TRUNCATE `tag_summary`; TRUNCATE `wishlist`; TRUNCATE `log_quote`; TRUNCATE `report_event`; ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_address` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_address_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_item_option` AUTO_INCREMENT=1; ALTER TABLE `sendfriend_log` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_invoice` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_invoice_grid` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_invoice_item` AUTO_INCREMENT=1; ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1; ALTER TABLE `tag` AUTO_INCREMENT=1; ALTER TABLE `tag_relation` AUTO_INCREMENT=1; ALTER TABLE `tag_summary` AUTO_INCREMENT=1; ALTER TABLE `wishlist` AUTO_INCREMENT=1; ALTER TABLE `log_quote` AUTO_INCREMENT=1; ALTER TABLE `report_event` AUTO_INCREMENT=1; -- Here's where we reset the customers TRUNCATE `customer_address_entity`; TRUNCATE `customer_address_entity_datetime`; TRUNCATE `customer_address_entity_decimal`; TRUNCATE `customer_address_entity_int`; TRUNCATE `customer_address_entity_text`; TRUNCATE `customer_address_entity_varchar`; TRUNCATE `customer_entity`; TRUNCATE `customer_entity_datetime`; TRUNCATE `customer_entity_decimal`; TRUNCATE `customer_entity_int`; TRUNCATE `customer_entity_text`; TRUNCATE `customer_entity_varchar`; TRUNCATE `log_customer`; TRUNCATE `log_visitor`; TRUNCATE `log_visitor_info`; ALTER TABLE `customer_address_entity` AUTO_INCREMENT=1; ALTER TABLE `customer_address_entity_datetime` AUTO_INCREMENT=1; ALTER TABLE `customer_address_entity_decimal` AUTO_INCREMENT=1; ALTER TABLE `customer_address_entity_int` AUTO_INCREMENT=1; ALTER TABLE `customer_address_entity_text` AUTO_INCREMENT=1; ALTER TABLE `customer_address_entity_varchar` AUTO_INCREMENT=1; ALTER TABLE `customer_entity` AUTO_INCREMENT=1; ALTER TABLE `customer_entity_datetime` AUTO_INCREMENT=1; ALTER TABLE `customer_entity_decimal` AUTO_INCREMENT=1; ALTER TABLE `customer_entity_int` AUTO_INCREMENT=1; ALTER TABLE `customer_entity_text` AUTO_INCREMENT=1; ALTER TABLE `customer_entity_varchar` AUTO_INCREMENT=1; ALTER TABLE `log_customer` AUTO_INCREMENT=1; ALTER TABLE `log_visitor` AUTO_INCREMENT=1; ALTER TABLE `log_visitor_info` AUTO_INCREMENT=1; -- This is to Reset all the ID counters TRUNCATE `eav_entity_store`; ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1; SET FOREIGN_KEY_CHECKS=1; TRUNCATE TABLE `sales_bestsellers_aggregated_daily`; TRUNCATE TABLE `sales_bestsellers_aggregated_monthly`; TRUNCATE TABLE `sales_bestsellers_aggregated_yearly`; DELETE FROM report_event WHERE event_type_id IN (SELECT event_type_id FROM report_event_types WHERE event_name IN ('catalog_product_view')); ``` ## Update all subscribers into a customer group (e.g. 5) ## ```sql UPDATE customer_entity, newsletter_subscriber SET customer_entity.`group_id` = 5 WHERE customer_entity.`entity_id` = newsletter_subscriber.`customer_id` AND newsletter_subscriber.`subscriber_status` = 1; ``` ## Set german address format ## ```sql INSERT INTO `directory_country_format` (`country_format_id`, `country_id`, `type`, `format`) VALUES (1, 'DE', 'html', '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}
\r\n{{depend company}}{{var company}}
{{/depend}}\r\n{{if street1}}{{var street1}}{{/if}}\r\n{{depend street2}}{{var street2}}
{{/depend}}\r\n{{depend street3}}{{var street3}}
{{/depend}}\r\n{{depend street4}}{{var street4}}
{{/depend}}\r\n{{if postcode}}{{var postcode}}{{/if}} {{if city}}{{var city}}{{/if}}
\r\n{{var country}}
\r\n{{depend telephone}}Tel.: {{var telephone}}{{/depend}}\r\n{{depend fax}}
Fax: {{var fax}}{{/depend}}'), (2, 'DE', 'pdf', '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}|\r\n{{depend company}}{{var company}}|{{/depend}}\r\n{{if street1}}{{var street1}} {{/if}}\r\n{{depend street2}}{{var street2}}|{{/depend}}\r\n{{depend street3}}{{var street3}}|{{/depend}}\r\n{{depend street4}}{{var street4}}|{{/depend}}\r\n{{if postcode}}{{var postcode}} {{/if}}{{if city}}{{var city}}{{/if}}}|\r\n{{var country}}|\r\n{{depend telephone}}Tel.: {{var telephone}}{{/depend}}|\r\n{{depend fax}}
Fax: {{var fax}}{{/depend}}|'), (3, 'DE', 'oneline', '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}, {{var street}}, {{var postcode}} {{var city}}, {{var country}}'), (4, 'DE', 'text', '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}\r\n{{depend company}}{{var company}}{{/depend}}\r\n{{if street1}}{{var street1}} {{/if}}\r\n{{depend street2}}{{var street2}}{{/depend}}\r\n{{depend street3}}{{var street3}}{{/depend}}\r\n{{depend street4}}{{var street4}}{{/depend}}\r\n{{if postcode}}{{var postcode}} {{/if}}{{if city}}{{var city}}{{/if}}\r\n{{var country}}\r\nTel.: {{var telephone}}\r\n{{depend fax}}Fax: {{var fax}}{{/depend}}'), (5, 'DE', 'js_template', '#{prefix} #{firstname} #{middlename} #{lastname} #{suffix}
#{company}
#{street0}
#{street1}
#{street2}
#{street3}
#{postcode} #{city}
#{country_id}
Tel.: #{telephone}
Fax: #{fax}'); ``` ## Setting file permissions ## ```bash find -type f \-exec chmod 644 {} \; find -type d \-exec chmod 755 {} \; ``` Other recommendations in "Securing Magento File & Directory Permissions" (http://blog.nexcess.net/2010/12/06/securing-magento-file-directory-permissions/) ```bash find \-exec chown youruser.youruser {} \; find -type f \-exec chmod 644 {} \; find -type d \-exec chmod 711 {} \; find -type f -name "*.php" \-exec chmod 600 {} \; chmod 600 /app/etc/*.xml ``` ## Getting Configurable Product from Simple Product ID in Magento 1.5+ ## ```php getParentIdsByChild($simpleProductId); $product = Mage::getModel('catalog/product')->load($parentIds[0]); echo $product->getId(); // ID = 462 (aka, Parent of 465) ?> ``` ## Check if customer is logged in ## ```php isLoggedIn(); if ($_customer) {} ?> ``` ## Get product image ## ```php helper('catalog/image')->init($_product, 'image'); ?> ``` ## Show image using current skin path (PHTML) ## ```html logo ``` ## Show image using current skin path (CMS) ## ```html ``` ## Show CMS block (PHTML) ## ```php getLayout()->createBlock('cms/block')->setBlockId('my_block_identifier')->toHtml(); ?> ``` ## Get Customer Shipping/Billing Address ## ```php getCustomer()->getDefaultShipping(); if ($customerAddressId){ $address = Mage::getModel('customer/address')->load($customerAddressId); } ?> ``` ## Get Product image path ## ```php load($productId); $path = Mage::helper('catalog/image')->init($product, 'image')->resize(75, 75); ?> ``` ## Get product URL ## ```php load($productId); $path = Mage::getUrl().$product->getUrlPath(); ?> ``` ## Get Category URL ## ```php load($categoryId)->getUrl(); ?> ``` ## Get product stock quantity ## ```php load($id); // or load it by SKU // $sku = "microsoftnatural"; // $_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku); $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product); print_r($stock->getData()); echo $stock->getQty(); echo $stock->getMinQty(); echo $stock->getMinSaleQty(); ?> ``` ## Get actual price and special price of a product ## ```php load($_productId); // without currency sign $_actualPrice = number_format($_product->getPrice(), 2); // with currency sign $_formattedActualPrice = Mage::helper('core')->currency(number_format($_product->getPrice(), 2),true,false); // without currency sign $_specialPrice = $_product->getFinalPrice(); // with currency sign $_formattedSpecialPrice = Mage::helper('core')->currency(number_format($_product->getFinalPrice(), 2),true,false); ?> ``` ## Get Currency Symbol ## ```php getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol(); ?> ``` ## Get Currency Code ## ```php getStore()->getCurrentCurrencyCode(); ?> ``` ## Track Visitor’s Information ## ```php getVisitorData(); print_r($visitorData); // Array // ( // [] => // [server_addr] => 167772437 // [remote_addr] => 167772437 // [http_secure] => // [http_host] => 127.0.0.1 // [http_user_agent] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10 // [http_accept_language] => en-US,en;q=0.8 // [http_accept_charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.3 // [request_uri] => /magento/index.php/catalog/category/view/id/22 // [session_id] => 13qm5u80238vb15lupqcac97r5 // [http_referer] => http://127.0.0.1/magento/ // [first_visit_at] => 2011-01-17 11:42:23 // [is_new_visitor] => // [last_visit_at] => 2011-01-17 11:58:38 // [visitor_id] => 41 // [last_url_id] => 139 // ) // user's ip address (visitor's ip address) $remoteAddr = Mage::helper('core/http')->getRemoteAddr(true); // server's ip address (where the current script is) $serverAddr = Mage::helper('core/http')->getServerAddr(true); ?> ``` ## Get / filter all products by attribute value ## ```php getCollection()->addAttributeToFilter($attributeCode, $manufacturerId); // print all products print_r($products->getItems()); ?> ``` ## Check if current page is homepage ## ```php getIsHomePage()) { // Homepage } else { // not on Homepage } // alternative method $routeName = Mage::app()->getRequest()->getRouteName(); $identifier = Mage::getSingleton('cms/page')->getIdentifier(); if($routeName == 'cms' && $identifier == 'home') { // Homepage } else { // not on Homepage } ?> ``` ## Convert Price from Current Currency to Base Currency and vice-versa ## ```php getStore()->getBaseCurrencyCode(); $currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode(); $price = 100; // convert price from current currency to base currency $priceOne = Mage::helper('directory')->currencyConvert($price, $currentCurrencyCode, $baseCurrencyCode); // convert price from base currency to current currency $priceTwo = Mage::helper('directory')->currencyConvert($price, $baseCurrencyCode, $currentCurrencyCode); ?> ``` ## Changing price from any one currency to another ## ```php currencyConvert($price, $from, $to); ?> ``` ## Get Currency Rates ## ```php getBaseCurrencyCode(); /** * Get all allowed currencies * returns array of allowed currency codes */ $allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies(); /** * Get the currency rates * returns array with key as currency code and value as currency rate */ $currencyRates = Mage::getModel('directory/currency')->getCurrencyRates($baseCurrencyCode, array_values($allowedCurrencies)); $allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies(); /** * Get currency rates for Nepalese Currency */ $currencyRates = Mage::getModel('directory/currency')->getCurrencyRates('NPR', array_values($allowedCurrencies)); ?> ``` ## Get all categories ## ```php getCollection()->addAttributeToSelect('*'); ?> ``` ## Get all active categories ## ```php getCollection()->addAttributeToSelect('*')->addIsActiveFilter(); ?> ``` ## Get active categories of any particular level ## ```php getCollection()->addAttributeToSelect('*')->addIsActiveFilter()->addLevelFilter(1)->addOrderField('name'); ?> ``` ## Get store specific categories ## ```php getStoreCategories('name', true, false); // sorted by name, fetched as array $categoriesArray = $helper->getStoreCategories('name', false, false); ?> ```