markdown [magento] - 代码片段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown [magento] - 代码片段相关的知识,希望对你有一定的参考价值。

# 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
```

## Reindex ##

```bash
php -f shell/indexer.php reindexall
```

```php
<?php
// clear cache
Mage::app()->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
rm -rf var/ait_rewrite/*
rm -rf media/css/*
rm -rf media/js/*

// if there are many files which can't get deleted in once
find /path/to/session/* -mtime +1 -exec rm {} \;
```

## Load category by id ##

```php
<?php
$_category = Mage::getModel('catalog/category')->load(89);
$_category_url = $_category->getUrl();
```

## Load product by id or sku ##

```php
<?php
$_product_1 = Mage::getModel('catalog/product')->load(12);
$_product_2 = Mage::getModel('catalog/product')->loadByAttribute('sku','cordoba-classic-6-String-guitar');
```

## Get Configurable product's Child products ##

```php
<?php
// input is $_product and result is iterating child products
$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
```

## Get Configurable product's Children's (simple product) custom attributes ##

```php
<?php
// input is $_product and result is iterating child products
$conf = Mage::getModel('catalog/product_type_configurable')->setProduct($_product);
$col = $conf->getUsedProductCollection()->addAttributeToSelect('*')->addFilterByRequiredOptions();
foreach($col as $simple_product){
	var_dump($simple_product->getId());
}
```

## Log to custom file ##

```php
<?php Mage::log('Your Log Message', Zend_Log::INFO, 'your_log_file.log'); ?>
```

## Call Static Block ##

```php
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('block-name')->toHtml(); ?>
```

## Add JavaScript to page ##

First approach: page.xml - you can add something like

```xml
<action method="addJs"><script>path/to/my/file.js</script></action>
```

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
<?php echo $this->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
<!-- existing line --> <block type="page/html_head" name="head" as="head">
	<!-- new sub-block you're adding --> <block type="core/template" name="mytemplate" as="mytemplate" template="page/mytemplate.phtml"/>
	...
```

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
<?php
$currentCategory = Mage::registry('current_category');
$currentProduct = Mage::registry('current_product');
$currentCmsPage = Mage::registry('cms_page');
```

## Run Magento Code Externally ##

```php
<?php
require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app();
// Run you code here
```

## Programmatically change Magento’s core config data ##

```php
<?php
// find 'path' in table 'core_config_data' e.g. 'design/head/demonotice'
$my_change_config = new Mage_Core_Model_Config();
// turns notice on
$my_change_config->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 `<frontName>` tag, and change the ‘admin’ part it to something a lot more random, eg:

```xml
<frontName><![CDATA[supersecret-admin-name]]></frontName>
```

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
<?php
// http://example.com/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
// http://example.com/js/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);
// http://example.com/index.php/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
// http://example.com/media/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
// http://example.com/skin/
echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);
```

## Get The Root Category In Magento ##

```php
<?php
$rootCategoryId = Mage::app()->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
<?php echo Mage::helper('core/url')->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
<div id="leftnav">
	<?php $helper = $this->helper('catalog/category') ?>
	<?php $categories = $this->getStoreCategories() ?>
	<?php if (count($categories) > 0): ?>
		<ul id="leftnav-tree" class="level0">
			<?php foreach($categories as $category): ?>
				<li class="level0<?php if ($this->isCategoryActive($category)): ?> active<?php endif; ?>">
					<a href="<?php echo $helper->getCategoryUrl($category) ?>"><span><?php echo $this->escapeHtml($category->getName()) ?></span></a>
					<?php if ($this->isCategoryActive($category)): ?>
						<?php $subcategories = $category->getChildren() ?>
						<?php if (count($subcategories) > 0): ?>
							<ul id="leftnav-tree-<?= $category->getId(); ?>" class="level1">
								<?php foreach($subcategories as $subcategory): ?>
									<li class="level1<?php if ($this->isCategoryActive($subcategory)): ?> active<?php endif; ?>">
										<a href="<?= $helper->getCategoryUrl($subcategory); ?>"><?= $this->escapeHtml(trim($subcategory->getName(), '- ')); ?></a>
									</li>
								<?php endforeach; ?>
							</ul>
							<script type="text/javascript">decorateList('leftnav-tree-<?php echo $category->getId() ?>', 'recursive')</script>
						<?php endif; ?>
					<?php endif; ?>
				</li>
			<?php endforeach; ?>
		</ul>
		<script type="text/javascript">decorateList('leftnav-tree', 'recursive')</script>
	<?php endif; ?>
</div>
```

## Debug using zend ##

```php
<?php echo Zend_Debug::dump($thing_to_debug, 'debug'); ?>
```

## $_GET, $_POST & $_REQUEST Variables ##

```php
<?php
// $_GET
$productId = Mage::app()->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
<?php $class_name = get_class($object); ?>
```

Then, pass that `get_class_methods` to get a list of all the callable methods on an object

```php
<?php
$class_name = get_class($object);
$methods = get_class_methods($class_name);
foreach($methods as $method)
{
	var_dump($method);
}
```

## Is product purchasable? ##

```php
<?php if($_product->isSaleable()) { // do stuff } ?>
```

## Load Products by Category ID ##

```php
<?php
$_category = Mage::getModel('catalog/category')->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
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_associatedProducts = $this->getAllowProducts() ?>
<?php //var_dump($_associatedProducts); ?>
<br />
<br />
<?php if (count($_associatedProducts)): ?>
	<?php foreach ($_associatedProducts as $_item): ?> 
		<a href="<?= $_item->getProductUrl(); ?>"><?= $_helper->productAttribute($_item, $_item->getName(), 'name'); ?> | <?= $_item->getName(); ?> | <?= $_item->getPrice(); ?></a>
		<br />
		<br />
	<?php endforeach; ?>
<?php endif; ?>
```

## Get An Array of Country Names/Codes in Magento ##

```php
<?php
$countryList = Mage::getResourceModel('directory/country_collection')
                    ->loadData()
                    ->toOptionArray(false);
     
    echo '<pre>';
    print_r( $countryList);
    exit('</pre>');
```

## Create a Country Drop Down in the Frontend of Magento ##

```php
<?php
$_countries = Mage::getResourceModel('directory/country_collection')
                                    ->loadData()
                                    ->toOptionArray(false) ?>
<?php if (count($_countries) > 0): ?>
    <select name="country" id="country">
        <option value="">-- Please Select --</option>
        <?php foreach($_countries as $_country): ?>
            <option value="<?= $_country['value']; ?>">
                <?= $_country['label']; ?>
            </option>
        <?php endforeach; ?>
    </select>
<?php endif; ?>
```

## Return Product Attributes ##

```php
<?php
$_product->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
<?php
	$formattedPrice = Mage::helper('core')->currency($_finalPrice,true,false);
}
```


## Cart Data ##

```php
<?php
	$cart = Mage::getModel('checkout/cart')->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
<?php
	Mage::getModel('checkout/cart')->getQuote()->getItemsCount();
	Mage::getSingleton('checkout/session')->getQuote()->getItemsCount();
```

## Total Quantity added in cart ##

```php
<?php
	Mage::getModel('checkout/cart')->getQuote()->getItemsQty();
	Mage::getSingleton('checkout/session')->getQuote()->getItemsQty();
```

## Sub Total for item added in cart ##

```php
<?php
	Mage::getModel('checkout/cart')->getQuote()->getSubtotal();
	Mage::getSingleton('checkout/session')->getQuote()->getSubtotal();
```

## Grand total for item added in cart ##

```php
<?php
	Mage::helper('checkout')->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
<?php
	$quote = Mage::getSingleton('checkout/session')->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
<?php
	// $items = Mage::getModel('checkout/cart')->getQuote()->getAllItems();
	$items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();

	foreach($items as $item) {
		echo 'ID: '.$item->getProductId().'<br />';
		echo 'Name: '.$item->getName().'<br />';
		echo 'Sku: '.$item->getSku().'<br />';
		echo 'Quantity: '.$item->getQty().'<br />';
		echo 'Price: '.$item->getPrice().'<br />';
		echo "<br />";
	}
```

## Get number of items in cart and total quantity in cart ##

```php
<?php
	$totalItems = Mage::getModel('checkout/cart')->getQuote()->getItemsCount();
	$totalQuantity = Mage::getModel('checkout/cart')->getQuote()->getItemsQty();
```

## Get Simple Products of a Configurable Product ##

```php
<?php
	if($_product->getTypeId() == "configurable") {
		$ids = $_product->getTypeInstance()->getUsedProductIds();
?>
<ul>
	<?php
		foreach ($ids as $id) {
			$simpleproduct = Mage::getModel('catalog/product')->load($id);
	?>
		<li>
			<?php echo $simpleproduct->getName() . " - " . (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($simpleproduct)->getQty(); ?>
		</li>
	<?php } ?>
</ul>
<?php } ?>
```

## Reset Development Environment (delete orders, customers, products, 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_creditmemo_comment`;
TRUNCATE `sales_flat_creditmemo_item`;
TRUNCATE `sales_flat_creditmemo`;
TRUNCATE `sales_flat_creditmemo_grid`;
TRUNCATE `sales_flat_invoice_comment`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
TRUNCATE `sales_flat_shipment_comment`;
TRUNCATE `sales_flat_shipment_item`;
TRUNCATE `sales_flat_shipment_track`;
TRUNCATE `sales_flat_shipment`;
TRUNCATE `sales_flat_shipment_grid`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sendfriend_log`;
TRUNCATE `tag`;
TRUNCATE `tag_relation`;
TRUNCATE `tag_summary`;
TRUNCATE `wishlist`;
TRUNCATE `log_quote`;
TRUNCATE `report_event`;
TRUNCATE `sales_order_tax`;
TRUNCATE `sales_order_tax_item`;

ALTER TABLE `sales_flat_order` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_creditmemo_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_invoice_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_quote_address_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_item_option` 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_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_quote_shipping_rate` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_comment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_track` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_shipment_grid` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_address` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_item` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_payment` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_status_history` AUTO_INCREMENT=1;
ALTER TABLE `sales_flat_order_grid` AUTO_INCREMENT=1;
ALTER TABLE `sendfriend_log` 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;
ALTER TABLE `sales_order_tax` AUTO_INCREMENT=1;
ALTER TABLE `sales_order_tax_item` 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;

-- This is to delete all products
TRUNCATE `catalog_product_bundle_option`;
TRUNCATE `catalog_product_bundle_option_value`;
TRUNCATE `catalog_product_bundle_selection`;
TRUNCATE `catalog_product_entity_datetime`;
TRUNCATE `catalog_product_entity_decimal`;
TRUNCATE `catalog_product_entity_gallery`;
TRUNCATE `catalog_product_entity_int`;
TRUNCATE `catalog_product_entity_media_gallery`;
TRUNCATE `catalog_product_entity_media_gallery_value`;
TRUNCATE `catalog_product_entity_text`;
TRUNCATE `catalog_product_entity_tier_price`;
TRUNCATE `catalog_product_entity_varchar`;
TRUNCATE `catalog_product_link`;
TRUNCATE `catalog_product_link_attribute`;
TRUNCATE `catalog_product_link_attribute_decimal`;
TRUNCATE `catalog_product_link_attribute_int`;
TRUNCATE `catalog_product_link_attribute_varchar`;
TRUNCATE `catalog_product_link_type`;
TRUNCATE `catalog_product_option`;
TRUNCATE `catalog_product_option_price`;
TRUNCATE `catalog_product_option_title`;
TRUNCATE `catalog_product_option_type_price`;
TRUNCATE `catalog_product_option_type_title`;
TRUNCATE `catalog_product_option_type_value`;
TRUNCATE `catalog_product_super_attribute`;
TRUNCATE `catalog_product_super_attribute_label`;
TRUNCATE `catalog_product_super_attribute_pricing`;
TRUNCATE `catalog_product_super_link`;
TRUNCATE `catalog_product_enabled_index`;
TRUNCATE `catalog_product_website`;
TRUNCATE `catalog_product_entity`;

TRUNCATE `cataloginventory_stock`;
TRUNCATE `cataloginventory_stock_item`;
TRUNCATE `cataloginventory_stock_status`;

INSERT INTO `catalog_product_link_type`(`link_type_id`,`code`) VALUES (1,'relation'),(2,'bundle'),(3,'super'),(4,'up_sell'),(5,'cross_sell');
INSERT INTO `catalog_product_link_attribute`(`product_link_attribute_id`,`link_type_id`,`product_link_attribute_code`,`data_type`) VALUES (1,2,'qty','decimal'),(2,1,'position','int'),(3,4,'position','int'),(4,5,'position','int'),(6,1,'qty','decimal'),(7,3,'position','int'),(8,3,'qty','decimal');
INSERT INTO `cataloginventory_stock`(`stock_id`,`stock_name`) VALUES (1,'Default');

TRUNCATE `catalogsearch_query`;
ALTER TABLE `catalogsearch_query` AUTO_INCREMENT=1;
TRUNCATE `catalogsearch_fulltext`;
ALTER TABLE `catalogsearch_fulltext` AUTO_INCREMENT=1;

TRUNCATE `core_url_rewrite`;
TRUNCATE `adminnotification_inbox`;

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'));
```

## set the same order increment id for all stores ##

```sql
UPDATE `eav_entity_type` SET `increment_per_store` = '0' WHERE `eav_entity_type`.`entity_type_code` = 'order';
```

## Set custom order numbers (starting number) ##

```sql
UPDATE `eav_entity_store` SET `increment_last_id` = '74395729' WHERE `entity_type_id` = 1;
```

## 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}}<br/>\r\n{{depend company}}{{var company}}<br />{{/depend}}\r\n{{if street1}}{{var street1}}{{/if}}\r\n{{depend street2}}{{var street2}}<br />{{/depend}}\r\n{{depend street3}}{{var street3}}<br />{{/depend}}\r\n{{depend street4}}{{var street4}}<br />{{/depend}}\r\n{{if postcode}}{{var postcode}}{{/if}} {{if city}}{{var city}}{{/if}}<br/>\r\n{{var country}}<br/>\r\n{{depend telephone}}Tel.: {{var telephone}}{{/depend}}\r\n{{depend fax}}<br/>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}}<br/>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}<br/>#{company}<br/>#{street0}<br/>#{street1}<br/>#{street2}<br/>#{street3}<br/>#{postcode} #{city}<br/>#{country_id}<br/>Tel.: #{telephone}<br/>Fax: #{fax}');
```

## Setting file permissions ##

```bash
find </path/to/magento> -type f \-exec chmod 644 {} \;
find </path/to/magento> -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 </path/to/magento> \-exec chown youruser.youruser {} \;
find </path/to/magento> -type f \-exec chmod 644 {} \;
find </path/to/magento> -type d \-exec chmod 711 {} \;
find </path/to/magento> -type f -name "*.php" \-exec chmod 600 {} \;
chmod 600 </path/to/magento>/app/etc/*.xml
```

## Getting Configurable Product from Simple Product ID in Magento 1.5+ ##

```php
<?php
$simpleProductId = 465;
$parentIds = Mage::getResourceSingleton('catalog/product_type_configurable')
    ->getParentIdsByChild($simpleProductId);
$product = Mage::getModel('catalog/product')->load($parentIds[0]);
echo $product->getId(); // ID = 462 (aka, Parent of 465)
```

## Get all associated children product of a configurable product ##

```php
<?php
	/**
	* Load product by product id
	*/
	$product = Mage::getModel('catalog/product')->load(YOUR_PRODUCT_ID);
 
	/**
	* Get child products id (only ids)
	*/
	$childIds = Mage::getModel('catalog/product_type_configurable')->getChildrenIds($product->getId());
 
	/**
	* Get children products (all associated children products data)
	*/
	$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product);
```

## Get parent id of simple product associated to configurable product ##

```php
<?php
	$_product = Mage::getModel('catalog/product')->load(YOUR_SIMPLE_PRODUCT_ID);
	$parentIdArray = $_product->loadParentProductIds()->getData('parent_product_ids');
	print_r($parentIdArray);
```

## Check if customer is logged in ##

```php
<?php
	$_customer = Mage::getSingleton('customer/session')->isLoggedIn();
	if ($_customer) {}
```

## Get product image ##

```php
<?php echo $this->helper('catalog/image')->init($_product, 'image'); ?>
```

## Downsize large product images but not enlarge small images ##

```php
<?php
	$this->helper('catalog/image')
		->init($_product, 'image')
		->keepFrame(false) // avoids getting the small image in original size on a solid background color presented (can be handy not to break some layouts)
		->constrainOnly(true) // avoids getting small images bigger
		->resize(650); // sets the desired width and the height accordingly (proportional by default)
```

## No square (white background) product images ##

```html
<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->backgroundcolor('000', '000', '000')->resize(100); ?>" />
```

```html
<img src="<?php echo $this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $_image->getFile())->keepFrame(false)->resize(100); ?>" width="100"  ... />
```

## Show image using current skin path (PHTML) ##

```html
<img src="<?= $this->getSkinUrl('images/logo.png'); ?>" alt="logo" />
```

## Show image using current skin path (CMS) ##

```html
<img src={{skin url="images/logo.png"}}  />
```

## Show CMS block (PHTML) ##

```php
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my_block_identifier')->toHtml(); ?>
```

## Get Customer Shipping/Billing Address ##

```php
<?php
	$customerAddressId = Mage::getSingleton('customer/session')->getCustomer()->getDefaultShipping();
	if ($customerAddressId){
		$address = Mage::getModel('customer/address')->load($customerAddressId);
	}
```

## Get Product image path ##

```php
<?php
	$productId = 1;
	$product = Mage::getModel('catalog/product')->load($productId);
	$path = Mage::helper('catalog/image')->init($product, 'image')->resize(75, 75);
```

## Get product URL ##

```php
<?php
	$productId = 1;
	$product = Mage::getModel('catalog/product')->load($productId);
	$path = Mage::getUrl().$product->getUrlPath();
```

## Get Category URL ##

```php
<?php echo Mage::getModel('catalog/category')->load($categoryId)->getUrl(); ?>
```

## Get product stock quantity ##

```php
<?php
	$id = 52;
	$_product = Mage::getModel('catalog/product')->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
<?php
	$_productId = 52;
	$_product = Mage::getModel('catalog/product')->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
<?php echo Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol(); ?>
```

## Get Currency Code ##

```php
<?= Mage::app()->getStore()->getCurrentCurrencyCode(); ?>
```

## Track Visitor’s Information ##

```php
<?php
	$visitorData = Mage::getSingleton('core/session')->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
<?php
	/**
	* Get all products related to any particular brand
	* Let us suppose that we are fetching the products related to 'Samsung' brand
	* Let us suppose the Manufacturer ID of Samsung = 3
	*/
	
	$manufacturerId = 3;
	$attributeCode = 'manufacturer';
	
	$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter($attributeCode, $manufacturerId);
	
	// print all products
	print_r($products->getItems());
```

## Check if current page is homepage ##

```php
<?php
	if($this->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
<?php
	$baseCurrencyCode = Mage::app()->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
<?php
	$from = 'USD';
	$to = 'NPR';
	$price = 10;

	$newPrice = Mage::helper('directory')->currencyConvert($price, $from, $to);
```

## Get Currency Rates ##

```php
<?php
	/**
	 * Get the base currency
	 */
	$baseCurrencyCode = Mage::app()->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
<?php
	$categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*');
?>
```

## Get all active categories ##

```php
<?php
	$categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*')->addIsActiveFilter();
```

## Get active categories of any particular level ##

```php
<?php
	$categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*')->addIsActiveFilter()->addLevelFilter(1)->addOrderField('name');
```

## Get store specific categories ##

```php
<?php
	$helper = Mage::helper('catalog/category');
	
	// sorted by name, fetched as collection
	$categoriesCollection = $helper->getStoreCategories('name', true, false);
	
	// sorted by name, fetched as array
	$categoriesArray = $helper->getStoreCategories('name', false, false);
```

## Get product in stock quantity ##

```php
<?php
	$_product = Mage::getModel('catalog/product')->load($product_id);
	$qty = Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty();
```

## Use magento "outside" magento ##

```php
<?php
	require_once 'app/Mage.php';
	Mage::app($yourStoreCode);
	echo Mage::getStoreConfig('general/store_information/name');
```

## Hijack session outside magento ##

```php
<?php
	require_once 'app/Mage.php';
	Mage::app($yourStoreCode);
	Mage::getSingleton('core/session', array('name'=>'frontend'))->setSessionId($_COOKIE['frontend']);
	echo "cart_id=".Mage::helper('checkout/cart')->getCart()->getQuote()->getId();
```

## Filter collection or get configurable products: ##

```php
<?php
	$configurable_products = Mage::getModel('catalog/product')
		->getCollection()
		->addAttributeToSelect('*')
		->addAttributeToFiler('type_id',array('eq'=>'configurable'))
		->load();
```

## Round price ##

```php
<?php
	echo Mage::getModel('sales/order')->formatPricePrecision($_product->getFinalPrice(), 3);
```

## Get a list of bestsellers ##

```php
<?php
$collection = Mage::getResourceModel('sales/report_bestsellers_collection')
    ->setModel('catalog/product')
    ->addStoreFilter(Mage::app()->getStore()->getId()) //if you want the bestsellers for a specific store view. if you want global values remove this
    ->setPageSize(5)//set the number of products you want
    ->setCurPage(1);
foreach ($collection as $_product){
    $realProduct = Mage::getModel('catalog/product')->load($_product->getProductId());
    //do something with $realProduct;
}
```

## Get product categories with name ##

```php
<?php 
$categoryCollection = Mage::getResourceModel('catalog/category_collection')
	->joinField('product_id',
		'catalog/category_product',
		'product_id',
		'category_id = entity_id',
		null)
	->addAttributeToSelect('name')
	->addFieldToFilter('product_id', (int)$_product->getId());
?>
```

## Add category names in product view page ##

```php
<?php 
	$categoryIds = $_product->getCategoryIds();
	foreach ($categoryIds as $categoryId){
		$tmpId = $categoryId;
		$categories = array();
		while($tmpId != Mage::app()->getStore()->getRootCategoryId()) {
			$category = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($tmpId);
			$categories[] = $category;
			$tmpId = $category->getParentId();
		};
		for ($i = count($categories) - 1; $i>=0;$i--){
			echo '<a href="'.echo $categories[$i]->getUrl().'">'.echo $categories[$i]->getName().'</a>';
			if ($i>0){
				echo "-&gt;"<!-- this is the tree separator. change to whatever you like-->
			}
		}
		//break;//uncomment this if you want only one category tree to appear.
	};
```

## Different toolbar in product list / grid ##

```php
<?php echo $this->getToolbarBlock()->setTemplate('catalog/product/list/toolbar_bottom.phtml')->toHtml(); ?>
```

## remotely trigger Varien.Tabs Class or EasyTabs ##

add this to Varien.Tabs.prototype
```js
Varien.Tabs.prototype = {
remoteTabs: function(b) {
var controlledLink = $$("#"+b+" a")[0];
this.showContent(controlledLink);
}
}
var csTablist = new Varien.Tabs('.tabs');
```
to fire the link remotely you can call
```js
csTablist.remoteTabs('product_tabs_email');
```
where product_tabs_email is the name of the li that you want to open.

## Getting Configurable Attributes (Super Attributes) of a Configurable Product ##

```php
<?php 
	/**
	* Load Product you want to get Super attributes of
	*/
	$product=Mage::getModel("catalog/product")->load(52520);

	/**
	* Get Configurable Type Product Instace and get Configurable attributes collection
	*/
	$configurableAttributeCollection=$product->getTypeInstance()->getConfigurableAttributes();

	/**
	* Use the collection to get the desired values of attribute
	*/
	foreach($configurableAttributeCollection as $attribute){
		echo "Attr-Code:".$attribute->getProductAttribute()->getAttributeCode()."<br/>";
		echo "Attr-Label:".$attribute->getProductAttribute()->getFrontend()->getLabel()."<br/>";
		echo "Attr-Id:".$attribute->getProductAttribute()->getId()."<br/>";
		var_dump($_attribute->debug()); // returns the set of values you can use the get magic method on
	}
```

## Get order information on success.phtml ##

```php
<?php
$_customerId = Mage::getSingleton('customer/session')->getCustomerId();
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getSingleton('sales/order');
$order->load($lastOrderId);
$_totalData =$order->getData();
$_grand = $_totalData['grand_total'];
```

## Order date with correct GMT offset on Grid

```
$this->addColumn('order_created_at', array(
    'header'    => Mage::helper('customer')->__('Datum'),
    'index'     => 'order_created_at',
    'gmtoffset' => true,
    'type'      => 'datetime',  
));
```

## Check if product has an image

```php
<?php
$has_real_image_set = ($_product->getSmallImage() != null && $_product->getSmallImage() != "no_selection");
if ($has_real_image_set) echo "has image";
else echo "no image";
```

## Add table column via sql installer ##

```php
<?php
$installer = $this;
$installer->startSetup();
$installer->getConnection()
    ->addColumn($installer->getTable('module/entity'),
        'column_name',
        array(
            'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
            'length' => 1,
            'nullable' => false,
            'default' => 0,
            'comment' => 'Breifly describe the new column'
        )
    );

$installer->endSetup();
```

## Get media gallery by product

```php
<?php
...
$product = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('entity_id', array('eq' => '1'))
    ->getFirstItem();

$galleryAttribute = $product->getResource()->getAttribute('media_gallery');
$gallerySomeShit = Mage::getModel('catalog/product_attribute_backend_media')->setAttribute($galleryAttribute);
$gallery = Mage::getResourceModel('catalog/product_attribute_backend_media')->loadGallery($product, $gallerySomeShit);
```

## Add product attribute with sql installer

config.xml

```xml
<config>
    <global>
        ...
        <resources>
            <microsite_module_setup>
                <setup>
                    <module>MODA_Product</module>
                    <class>Mage_Catalog_Model_Resource_Eav_Mysql4_Setup</class>
                </setup>
            </microsite_module_setup>
        </resources>
        ...
    </global>
</config>
```
Setup file
```php
<?php
$installer->addAttribute('catalog_product', 'some_attribute', array(
    'group'             => 'General',
    'label'             => 'Product Page Module',
    'note'              => '',
    'type'              => 'int',    //backend_type
    'input'             => 'select', //frontend_input
    'frontend_class'    => '',
    'source'            => 'moda_product/attribute_source_microsite', // optional
    'backend'           => '',
    'frontend'          => '',
    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
    'required'          => false,
    'visible_on_front'  => true,
    'apply_to'          => 'simple,configurable',
    'is_configurable'   => false,
    'used_in_product_listing'   => false,
    'sort_order'        => 20,
));
```

## Get all methods for product
```php
<?php
Zend_Debug::dump(get_class_methods(get_class($product)))
```

## Magento notification ##
error:
```php
<?php
Mage::getSingleton('core/session')->addError('Custom error here');
```
warning:
```php
<?php
Mage::getSingleton('core/session')->addWarning('Custom warning here');
```
notice:
```php
<?php
Mage::getSingleton('core/session')->addNotice('Custom notice here');
```
success:
```php
<?php
Mage::getSingleton('core/session')->addSuccess('Custom success here');
```
or in admin controller:
```php
<?php
$this->_getSession()->addSuccess($this->__('text'));
$this->_getSession()->addError($this->__('text'));
```

## Redirect
in controller:
```php
<?php
$this->getResponse()->setRedirect("/")->sendResponse();
```
otherwise: 
```php
<?php
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
```

## Pass data from controller to view
```php
<?php
$this->getLayout()->getBlock("cityinfo_index")->setData("data", $data);
```
in .phtml:
```php
<?php echo $this->getData("data"); ?>
```

## Set meta data in controller
```php
<?php
$head = $this->getLayout()->getBlock('head');
$head->setTitle($data["city_info"]->meta_title);
$head->setKeywords($data["city_info"]->meta_keywords);
$head->setDescription($data["city_info"]->meta_description);
```

## Get all stores
```php
<?php
$allStores = Mage::app()->getStores();
foreach ($allStores as $id => $value)
{
    $storeCode = Mage::app()->getStore($id)->getCode();
    $storeName = Mage::app()->getStore($id)->getName();
    $storeId = Mage::app()->getStore($id)->getId();
}
```

## Add rewrite url
```php
<?php
$rewrite = Mage::getModel('core/url_rewrite');
$rewrite->setStoreId($storeId)
    ->setIdPath('path_1')
    ->setRequestPath('mego-page.html')
    ->setTargetPath('cityinfo/index/index/city/Киев')
    ->setIsSystem(false)
    ->save();
```

## Delete "add" button from admin grid
```php
<?php
parent::__construct();
$this->_removeButton('add'); // call after parent construct
```

## Sort collection
```php
<?php
$cities = Mage::getModel("cityinfo/cityinfo")->getCollection()->setOrder("city", "ASC");
````

## insert template in cms page
```html
{{block type="core/template" name="my.block.name" template="myfolder/newfile.phtml"}}
```

## Get url for deleting product from list of comparing
```php
<?php
$compareRemoveUrl = $this->helper('catalog/product_compare')->getRemoveUrl($_product);
```

## Get add to compare link
```php
<?php
$_product = Mage::getModel('catalog/product')->load($id);
echo Mage::helper('catalog/product_compare')->getAddUrl($_product);
```

## Check if product are in compare list
```php
<?php
$compared = false;

$collection = $this->helper('catalog/product_compare')->getItemCollection();
foreach($collection as $comparing_product) {
    if ($comparing_product->getId() === $_product->getId()) {
        $compared = true;
    }
}
```

## get product url from review block ##
```php
<?php
$this->getProduct()->getUrlInStore()
```

## Filter by AND
```php
<?php
->addFieldToFilter(array(
    array('attribute'=>'action','eq'=> 1),
))
->addFieldToFilter(array(
    array('attribute'=>'status','eq'=> 1),
))
```

## Filter by OR
```php
<?php
->addFieldToFilter(
    array(
        array('attribute'=>'my_field1','eq'=>'my_value1'),
        array('attribute'=>'my_field2', 'eq'=>'my_value2')
    )
);

## Add new attribute option value
```php
<?php
$arg_attribute = 'youtube_video'; // name of attribute
$arg_value = 'value to be added'; // option value

$attr_model = Mage::getModel('catalog/resource_eav_attribute');
$attr = $attr_model->loadByCode('catalog_product', $arg_attribute);
$attr_id = $attr->getAttributeId();

$option['attribute_id'] = $attr_id;
$option['value']['youtube_video'][0] = $arg_value;

$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
```

## Show CMS block by layout
```xml
<block type="cms/block" name="home-page-block">
    <action method="setBlockId"><block_id>home-page-block</block_id></action>
</block>
```

## Create block
```php
<?php
Mage::app()->getLayout()->createBlock('Mage_Core_Block_Text');
```

## Get image original URL
```php
<?php
$productMediaConfig = Mage::getModel('catalog/product_media_config');
$originalImage = $productMediaConfig->getMediaUrl($_product->getImage());
```

## Get image sizes
```php
<?php
$bigImage = $this->helper('catalog/image')->init($_product, 'image');
$bigImage->getOriginalWidth();
$bigImage->getOriginalHeight();
```

## Get login URL
```php
<?php
Mage::helper('customer')->getLoginUrl()
```

## Get logout URL
```php
<?php
Mage::helper('customer')->getLogoutUrl()
```

## Get attribute type (select, multiselect)
```php
<?php
$attribute_details = Mage::getSingleton("eav/config")->getAttribute('catalog_product', $name);
$attribute = $attribute_details->getData();
$attributeType = $attribute->getFrontendInput();
```

## Get attribute values
```php
<?php
$attribute_details = Mage::getSingleton("eav/config")->getAttribute('catalog_product', $name);
$attributeValues = [];
foreach ($attribute_details->getSource()->getAllOptions(true, true) as $option){
	$attributeValues[$option['value']] = $option['label'];
}
```

## Get product attribute set
```php
<?php
$attributeSet = Mage::getModel('eav/entity_attribute_set')->load($_product->getAttributeSetId())->getAttributeSetName();
```

## Update product position in specific category
```php
<?php
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));
$categoryId = 22; //replace with your category id
$newPosition = 100; //replace with your new position
$category = Mage::getModel('catalog/category')->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID)->load($categoryId);
$products = $category->getProductsPosition();
foreach ($products as $id=>$value){
    $products[$id] = $newPosition;
}
$category->setPostedProducts($products);
$category->save();
```

以上是关于markdown [magento] - 代码片段的主要内容,如果未能解决你的问题,请参考以下文章

markdown Magento SCA - 条纹

markdown Magento 2 - 结账

markdown Magento文件

markdown 目录促销在Magento 2

markdown Magento 2的顶级模块

markdown Magento 2 - 产品sql