Saturday, October 5, 2013

Magento add custom textbox,select box to existing system -> configuration tab.

if we want to add custom fields like textbox,select box to existing system -> configuration tab -> catalog.

<?xml version="1.0"?>
<config>
   <sections>
        <catalog>
            <groups>
                <frontend>
                    <fields>
                        <mayankpatel translate="label">
                            <label>Custom Textbox Value</label>
                            <frontend_type>text</frontend_type>
                            <source_model>adminhtml/system_config_source_yesno</source_model>
                            <sort_order>1</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </mayankpatel>
                      </fields>
                </frontend>
            </groups>
        </catalog>
    </sections>
</config>

Tuesday, October 1, 2013

Magento replace quantity text box to select box

In the addtocart.phtml file find the following code(around line 33)
<input name="qty" type="text" class="input-text qty" id="qty" maxlength="12" value="<?php echo $this->getMinimalQty($_product) ?>" />



Replace with this code:

This code shows the “Available Qty for Product”.
<select class="input-text qty" name="qty" id="qty">
  <?php $i = 1 ?>
  <?php do { ?>
    <option value="<?php echo $i?>">
      <?php echo $i?>
      <?php $i++ ?>
    </option>
    <?php } while ($i <= (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty()) ?></select>


This code shows the “Maximum Qty Allowed in Shopping Cart”.

<select class="input-text qty" name="qty" id="qty">
  <?php $i = 1 ?>
  <?php do { ?>
    <option value="<?php echo $i?>">
      <?php echo $i?>
      <?php $i++ ?>
    </option>
    <?php } while ($i <= (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getMaxSaleQty()) ?></select>

Magento – Delete all cancelled magento orders

$collection = Mage::getResourceModel('sales/order_collection')
            ->addAttributeToSelect('*')
            ->setPageSize(1000)
            ->addFieldToFilter('status', 'canceled')
     ->load();

foreach ($collection as $col) {
  Mage::log($col->getIncrementId() . ' order deleted ');
    try {
         $col->delete();
    } catch (Exception $e) {
        throw $e;
    }
}

How to Add Custom Class to top links

To Add Custom Class to top links  in Magneto

1) Open XML files for Top links And Add following tag

<reference name=”top.links”>
<action method=”addLink” translate=”label title” module=”customer”><label>Account</label><url helper=”customer/getAccountUrl”/><title>Account</title><prepare/><urlParams/><position>10</position><liParams/>
<aParams>class=”top-link-account”</aParams></action>
</reference>

SELECT,INSERT,UPDATE,AND DELETE DATA (CRUD) IN MAGENTO

I have a database table named “test” with the following fields given below:

SELECT DATA

$model = Mage::getModel('test/test');
$collection = $model->getCollection();
foreach($collection as $item){
    print_r($item->getData());
    print_r($item->getTitle());
}

INSERT DATA

$data = array('title'=>'hello EWA','content'=>'This is for the Testing on the Insert data','status'=>1);
$model = Mage::getModel('mytestimonial/mytestimonial')->setData($data);
try {

       $insertId = $model->save()->getId();
        echo "Data has been saved successfully. Insert ID: ".$insertId;
    } catch (Exception $e){
     echo $e->getMessage();
}

UPDATE DATA

// $sid = $this->getRequest()->getParam('id');
$sid = 5;
$data = array('title'=>'hello EWA','content'=>'This is for the Testing on the Update data','status'=>0);
$model = Mage::getModel('mytestimonial/mytestimonial')->load($sid)->addData($data);
try {
        $model->setId($sid)->save();
        echo "Data has been updated successfully.";
       
    } catch (Exception $e){
        echo $e->getMessage();
}

DELETE DATA

$sid is the database table row id to be deleted.

// $sid = $this->getRequest()->getParam('id');
$sid = 5;
$model = Mage::getModel('mytestimonial/mytestimonial');
try {
        $model->setId($sid)->delete();
        echo "Data deleted successfully.";
       
    } catch (Exception $e){
        echo $e->getMessage();
}

DISPLAY RELATED PRODUCTS ANYWHERE IN MAGENTO

<?php

//Start loading a product resources
$product = Mage::getModel('catalog/product')->load($productId);

//save the product into the registry
Mage::register('product', $product);

//display $product's related products
echo $this->getLayout()->createBlock('catalog/product_list_related')->setTemplate('catalog/product/list/related.phtml')->toHtml();

?>

DISPLAY LIST OF ALL MANUFACTURERS IN MAGENTO

<?php
$product = Mage::getModel('catalog/product');
   
$attributes = Mage::getResourceModel('eav/entity_attribute_collection')
                  ->setEntityTypeFilter($product->getResource()->getTypeId())
                  ->addFieldToFilter('attribute_code', 'manufacturer');

$attribute = $attributes->getFirstItem()->setEntity($product->getResource());
$manufacturers = $attribute->getSource()->getAllOptions(false);
     
echo "<pre>";
print_r($manufacturers);
echo "</pre>";

?>

RELATED PRODUCTS ON PRODUCT DESCRIPTION PAGE IN MAGENTO

Step 1. Open catalog.xml file for this navigate to the app/design/frontend/default/your_custom_theme/layout/ or you can find this file app/design/frontend/base/default/layout/ open it in the editor of your choice.

Step 2. In catalog.xml search for the catalog_product_view section
<block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>

Step 3. Search for the catalog_product_view section again and copy and paste the code as like given below:
<reference name="content">
<block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
<block type="catalog/product_list_related" name="catalog.product.related" as="related" template="catalog/product/list/related.phtml"/>
</block>
</reference>

Step 4. Now navigate to the app/design/frontend/default/your_custom_theme/template/catalog/product/view.phtml or you can find this file app/design/frontend/base/default/template/catalog/product/view.phtml open the file in the editor of your choice, insert the given below code in the desired position where you want to display the related product block in the product description page.
<?php echo $this->getChildHtml('related'); ?>

Step 5. For editing the look of the related products Navigate to the app/design/frontend/default/your_custom_theme/template/catalog/product/list/related.phtml or you can find this file app/design/frontend/base/default/template/catalog/product/list/related.phtml, from here you can change the look and feel of the related products.

Step 6. Now refresh the cache from the Magento admin and delete the browser cache and refresh the page.

Magento add attribute to filter conditions for products collection

General Product Collection:
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addAttributeToFilter('status',1); //only enabled product
$collection->addAttributeToFilter('visibility',array("neq"=>1)); //except not visible individually
$collection->addAttributeToSelect(array('name','url','small_image')); //add product attribute to be fetched
//$collection->getSelect()->order('rand()');   //uncomment for getting the products in random order
$collection->addStoreFilter();
if(!empty($collection))
{
foreach ($collection as $_product):
echo $_product->getName();   //get product name
endforeach;
}else
{
echo 'There is no products';
}


Get All Products of a category or Product collection filter by the category

$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($category);


$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image'))->addAttributeToFilter('name', array('like' => 'Nok%'))->load();

a) Equals: eq

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'status'))->addAttributeToFilter('status', array('eq' => 1))->load();

b) Not Equals – neq

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image','sku'))->addAttributeToFilter('sku', array('neq' => 'test-product'))->load();

c) In – in

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku')) ->addAttributeToFilter('id', array('in' => array(20,24,100)))->load();

d) Not In – nin

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))->addAttributeToFilter('id', array('nin' => array(20,24,100)))->load();

e) Like – like

$products = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku')) ->addAttributeToFilter('name', array('like' => 'Nok%'))->load();

f) Not Like – nlike

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku')) ->addAttributeToFilter('name', array('nlike' => 'Nok%'))->load();

g) NULL – null

$products = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))   ->addAttributeToFilter('description', 'null') ->load();

h)  Not NULL – notnull

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))->addAttributeToFilter('description', 'notnull')->load();

i) Greater Than – gt

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))->addAttributeToFilter('id', array('gt' => 10))->load();

j) Less Than – lt

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))->addAttributeToFilter('id', array('lt' => 10))->load();

k) Greater Than or Equals To- gteq

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku'))->addAttributeToFilter('id', array('gteq' => 20))->load();

l) Less Than or Equals To – lteq

$products = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect(array('name', 'product_url', 'small_image', 'sku')) ->addAttributeToFilter('id', array('lteq' => 20))->load();

Display All Active Categories

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

Display Active Categories Of Any Particular Level in Magento

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

Display Top level categories only in Magento

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php if (count($_categories) > 0): ?>
<ul>
<?php foreach($_categories as $_category): ?>
<li>
<a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
<?php echo $_category->getName() ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Magento display root categories and subcategories

<?php $_helper = Mage::helper('catalog/category') ?>
<?php $_categories = $_helper->getStoreCategories() ?>
<?php $currentCategory = Mage::registry('current_category') ?>
<?php if (count($_categories) > 0): ?>
    <ul>
    <?php foreach($_categories as $_category): ?>
    <li>
    <a href="<?php echo $_helper->getCategoryUrl($_category) ?>">
    <?php echo $_category->getName() ?> <!--//Top Level Category Listing-->
    </a>
    <?php $_category = Mage::getModel('catalog/category')->load($_category->getId()) ?>
    <?php $_subcategories = $_category->getChildrenCategories() ?>
    <?php if (count($_subcategories) > 0): ?>
    <ul>
    <?php foreach($_subcategories as $_subcategory): ?>
    <li>
    &nbsp;&nbsp;&nbsp;<a href="<?php echo $_helper->getCategoryUrl($_subcategory) ?>"> <!--//Sub Category Listing-->
    <?php echo $_subcategory->getName() ?>
    </a>
    </li>
    <?php endforeach; ?>
    </ul>
    <?php endif; ?>
    </li>
    <?php endforeach; ?>
    </ul>
<?php endif; ?>

Friday, September 27, 2013

Magento print select query for products

To print select query : app\code\core\mage\catalog\model\resources\collection\abstract.php