Thursday, November 12, 2015

I Started Forum for Magento2

Hi Guys i started working on magento2 you guys can follow me on click Here

Tuesday, July 14, 2015

Early Magento Session Instantiation or PHPSESSID in Magento

While doing security fix in magento we come across one unknown session is getting create which name has php default session PHPSESSID after debugging we come to when customer session is int at that time we are not passing session name so to block PHPSESSID need to add else condition in Mage_Core_Model_Session_Abstract_Varien::start()
 if (!empty($sessionName)) {
            $this->setSessionName($sessionName);
        }else{
   return $this;
  }

else{ return $this; }
got some clue from http://alanstorm.com/magento_sessions_early but as per this block they are doing same change in event level i did it in core abstract file itself

Thursday, May 7, 2015

Magento Grouped Products Containing Associated Configurable Products


for

http://brimllc.com/2010/12/magento-grouped-products-containing-associated-configurable-products/

in group.php add below code

if($subProduct->getTypeId() == 'configurable' ){
      $buyRequestconfig['super_attribute']=$buyRequest['super_attribute'][$subProduct->getId()];
      $buyRequestconfig['product']=$subProduct->getId();
      //$buyRequestconfig['product_id']=$subProduct->getId();
      $buyRequestconfig['qty'] = $buyRequest['super_group'][$subProduct->getId()];
      $buyRequestconfig['form_key'] = $buyRequest['form_key'];
      $buyRequestconfig['uenc'] = $buyRequest['uenc'];
      //$cart = Mage::getModel("checkout/cart");
      //$cart->addProduct($subProduct, $buyRequestconfig); 
      //print_r($buyRequest); exit;
/*        $products[] = $subProduct->getTypeInstance(true)
          ->_prepareProduct(
           $buyRequestconfig,
           $subProduct,
           $processMode
          );
      
 */      
      $subProduct = $subProduct->getTypeInstance(true)->getProductByAttributes($buyRequestconfig['super_attribute'], $subProduct);
       $productsInfo[$subProduct->getId()]=1;
     }

and also in 

configurable.phtml

<?php 
/**
 * This template handles individual configurable products that have been associated with a grouped product.
 */
?>

<?php
$_product    = $this->getProduct();
$_attributes = Mage::helper('core')->decorateArray($this->getAllowAttributes());
$_formId = "product_addtocart_wrapper_".$_product->getId();
$_formJsVar = "productAddToCartForm".$_product->getId();
?>
<div class="price-box"><?php //echo $this->getPriceHtml($_product); ?></div>
<div id="<?php echo $_formId ?>">

<h3><?php echo $_product->getName() ?></h3>

<div class="no-display">
 <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
    <input type="hidden" name="related_product" id="related-products-field" value="" />
</div>

<?php if ($_product->isSaleable() && count($_attributes)):?>
    <dl>
    <?php foreach($_attributes as $_attribute): ?>
        <dt><label><?php echo $_attribute->getLabel() ?><span class="required"> *</span></label></dt>
        <dd<?php if ($_attribute->decoratedIsLast){?> class="last"<?php }?>>
          <select name="super_attribute[<?php echo $_product->getId() ?>][<?php echo $_attribute->getAttributeId() ?>]" id="attribute<?php echo $_attribute->getAttributeId() ?>" class="go-qty-required-entry  required-entry super-attribute-select">
            <option><?php echo $this->__('Choose an Option...') ?></option>
          </select>
        </dd>
    <?php endforeach; ?>
    </dl>
    <script type="text/javascript">
        var spConfig = new Product.GroupedConfig(<?php echo $this->getJsonConfig() ?>, <?php echo $_product->getId() ?>);
        spConfig.setOptionsPrice(new Product.OptionsPrice(<?php echo Mage::helper('groupedconfigured')->getProductViewJsonConfig($_product) ?>));
    </script>
    <?php echo $this->getPriceHtml($_product) ?>
    
   
    <input id="super_group_<?php echo $_product->getId(); ?>" type="hidden" name="super_group[<?php echo $_product->getId() ?>]" maxlength="12" value="1<?php //echo $_item->getQty()*1 ?>" title="<?php echo $this->__('Qty') ?>" class="input-text qty" />                            
    <script type="text/javascript">
    //<![CDATA[
            var <?php echo $_formJsVar ?> = new VarienForm('<?php echo $_formId ?>');
            <?php echo $_formJsVar ?>.submit = function(){
                    if (this.validator.validate()) {
                            this.form.submit();
                    }
            }.bind(<?php echo $_formJsVar ?>);
    //]]>
    </script>
<?php endif;?>
</div>


which will support magento1.9

Monday, April 13, 2015

Concatenate two fields in admin grid with filter in magento

i override Mage/Adminhtml/Block/Sales/Order/Grid.php to local and You can use this technique for any Magento core file. This way, you can avoid overriding the core file. This way, you can also avoid the risk of over writing your custom code by the system during the Magento system upgrade operation. Now, go for the main action. Open the Grid.php file from its new local directory and look at the following block of code carefully:
protected function _getCollectionClass()
{
    return 'sales/order_grid_collection';
}
 
protected function _prepareCollection()
{
    $collection = Mage::getResourceModel($this->_getCollectionClass());
    /* adding customer name section */       
$customerFirstNameAttr = Mage::getSingleton('customer/customer')->getResource()->getAttribute('firstname');
$customerLastNameAttr = Mage::getSingleton('customer/customer')->getResource()->getAttribute('lastname');
$collection->getSelect()
                    ->joinLeft(
                        array('cusFirstnameTb' => $customerFirstNameAttr->getBackend()->getTable()),
                        'main_table.customer_id = cusFirstnameTb.entity_id AND cusFirstnameTb.attribute_id = '.$customerFirstNameAttr->getId(). ' AND cusFirstnameTb.entity_type_id = '.Mage::getSingleton('customer/customer')->getResource()->getTypeId(),
                        array('cusFirstnameTb.value')
                    );   
     
$collection->getSelect()
                    ->joinLeft(
                        array('cusLastnameTb' => $customerLastNameAttr->getBackend()->getTable()),
                        'main_table.customer_id = cusLastnameTb.entity_id AND cusLastnameTb.attribute_id = '.$customerLastNameAttr->getId(). ' AND cusLastnameTb.entity_type_id = '.Mage::getSingleton('customer/customer')->getResource()->getTypeId(),
                        array('customer_name' => "CONCAT(cusFirstnameTb.value, ' ', cusLastnameTb.value)")
                    ); 
    /* end adding customer name section */ 
    $this->setCollection($collection);
    return parent::_prepareCollection();
}
Now take a deep look at the following portion from the above code section. You’ll understand that this following section is the newly added custom code:
/* adding customer name section */       
    $customerFirstNameAttr = Mage::getSingleton('customer/customer')->getResource()->getAttribute('firstname');
    $customerLastNameAttr = Mage::getSingleton('customer/customer')->getResource()->getAttribute('lastname');
    $collection->getSelect()
                        ->joinLeft(
                            array('cusFirstnameTb' => $customerFirstNameAttr->getBackend()->getTable()),
                            'main_table.customer_id = cusFirstnameTb.entity_id AND cusFirstnameTb.attribute_id = '.$customerFirstNameAttr->getId(). ' AND cusFirstnameTb.entity_type_id = '.Mage::getSingleton('customer/customer')->getResource()->getTypeId(),
                            array('cusFirstnameTb.value')
                        );   
         
    $collection->getSelect()
                        ->joinLeft(
                            array('cusLastnameTb' => $customerLastNameAttr->getBackend()->getTable()),
                            'main_table.customer_id = cusLastnameTb.entity_id AND cusLastnameTb.attribute_id = '.$customerLastNameAttr->getId(). ' AND cusLastnameTb.entity_type_id = '.Mage::getSingleton('customer/customer')->getResource()->getTypeId(),
                            array('customer_name' => "CONCAT(cusFirstnameTb.value, ' ', cusLastnameTb.value)")
                        ); 
/* end adding customer name section */ 
in the admin sales order grid with the name “customer_name” by inserting the following code snippet in the _prepareColumns() method of the Mage_Adminhtml_Block_Sales_Order_Grid class :
$this->addColumn('customer_name', array(
    'header'    => Mage::helper('adminhtml')->__('Customer Name'),
    'index'     => 'customer_name',
    'filter_condition_callback' => array($this, 'customerNameFilter'),
    'width'     => '120px',
)); 
public function customerNameFilter($collection, $column){
    $filterValue = $column->getFilter()->getValue();
    if(!is_null($filterValue)){
        $filterValue = trim($filterValue);
        $filterValue = preg_replace('/[\s]+/', ' ', $filterValue);
 
        $whereArr = array();
        $whereArr[] = $collection->getConnection()->quoteInto("cusFirstnameTb.value = ?", $filterValue);
        $whereArr[] = $collection->getConnection()->quoteInto("cusLastnameTb.value = ?", $filterValue);
        $whereArr[] = $collection->getConnection()->quoteInto("CONCAT(cusFirstnameTb.value, ' ', cusLastnameTb.value) = ?", $filterValue);
        $where = implode(' OR ', $whereArr);
        $collection->getSelect()->where($where);
    }
}

Thursday, February 5, 2015

Magento Auto Login and Auto Authorize for Rest API

We can skip login and authorize page when your doing rest api call in magento we can just make it admin login and create the token by using that token and secret key we can access need rest api for more information you can contact me pradeep.kumarrcs67@gmail.com +91-9916038230