Friday 26 June 2015

PHP - CodeIgniter - Invalid argument supplied for foreach()

<?php if(is_array($result)): ?>
<?php foreach($result as $row):?>  
<h3><? echo $row->title; ?></h3>  
<p><? echo $row->text; ?></p>  
<?php endforeach;?>  
<?php endif; ?>

How to assign category on multiple products in Magento

  • In your backend, go to Catalog -> Categories -> Manage Categories.
  • Select the category you want to add products to.
  • Click "Category Products" Tab
  • Reset the Filter, select your products, Save Category

Monday 8 June 2015

How to make custom page in opencart

1) Create a new file in admin/controller/custom/helloworld.php

helloworld.php
load->model(‘custom/hello’);
$this->template = ”.$template.”;
$this->children = array(
‘common/header’,
‘common/footer’
);
$this->response->setOutput($this->render());
}
}
?>

2) Create a new file in admin/view/template/custom/hello.tpl

Hello.tpl

HelloWorld

3) Create a new file in admin/model/custom/hello.php

hello.php

db->query($sql);
return $query->row[‘total’];
}
}
?>

4) You then need to enable the plugin to avoid permission denied errors:

Opencart > Admin > Users > User Groups > Admin > Edit

http://www.example.com/opencart/admin/index.php?route=custom/helloworld


Import “Not Logged In” Pricing in Magento

<?php
/**
 * Class Tier price processor
 * @author dweeves
 *
 * This imports tier prices for columns names called "group_price:"
 */
class GrouppriceProcessor extends Magmi_ItemProcessor
{
    protected $_tpcol=array();
    protected $_singlestore=0;
    protected $__pricescope=2;

    public function getPluginInfo()
    {
        return array(
            "name" => "Group price importer",
            "author" => "Dweeves,bepixeld,Jason",
            "version" => "0.0.1",
            );
    }

    

    public function processItemAfterId(&$item,$params=null)
    {

        $pid=$params["product_id"];

        $tpn=$this->tablename("catalog_product_entity_group_price");
        $tpcol=array_intersect(array_keys($this->_tpcol),array_keys($item));
        //do nothing if item has no group price info or has not change
        if(count($tpcol)==0  )
        {
            return true;
        }
        else
        {

         //it seems that magento does not handle "per website" tier price
// on single store deployments , so force it to "default"
          //so we test wether we have single store deployment
// or not.
          //bepixeld patch : check pricescope from general config
          if($this->_singlestore==0 && $this->_pricescope!=0)
          {
            $wsids=$this->getItemWebsites($item);
          }
          else
          {
            $wsids=array(0);
          }
          $wsstr=$this->arr2values($wsids);
            //clear all existing tier price info for existing customer groups in csv
           $cgids=array();
            foreach($tpcol as $k)
            {
                $tpinf=$this->_tpcol[$k];
                if($tpinf["id"]!=null)
                {
                    $cgids[]=$tpinf["id"];
                }
                else
                {
                    $cgids=array();
                    break;
                }

            }

            //if we have specific customer groups
            if(count($cgids)>0)
            {
                //delete only for thos customer groups
                $instr=$this->arr2values($cgids);

                //clear tier prices for 
//selected tier price columns
                $sql="DELETE FROM $tpn WHERE entity_id=? AND customer_group_id IN ($instr) AND website_id IN ($wsstr)";
                $this->delete($sql,array_merge(array($pid),$cgids,$wsids));
            }
            else
            {
                //delete for all customer groups
                $sql="DELETE FROM $tpn WHERE entity_id=? AND website_id IN ($wsstr)";
                $this->delete($sql,array_merge(array($pid),$wsids));
            }
        }

        foreach($tpcol as $k)
        {

        //get tier price column info
          $tpinf=$this->_tpcol[$k];
          //now we've got a customer group id
          $cgid=$tpinf["id"];
          //add tier price
          $sql="INSERT INTO $tpn
            (entity_id,all_groups,customer_group_id,value,website_id) VALUES ";
          $inserts=array();
          $data=array();

          if($item[$k]=="")
          {
            continue;
          }
          $tpvals=explode(";",$item[$k]);

          foreach($wsids as $wsid)
          {
                //for each tier price value definition
                foreach($tpvals as $tpval)
                {
                    $tpprice=str_replace(",",".",$tpval);
                    if($tpprice=="")
                    {
                        continue;
                    }
                    if(substr($tpprice,-1)=="%")
                    {
                        //if no reference price,skip % tier price
                        if(!isset($item["price"]))
                        {
                            $this->warning("No price define, cannot apply % on group price");
                            continue;
                        }
                        $fp=(float)(str_replace(",",".",$item["price"]));
                        $pc=(float)(substr($tpprice,0,-1));
                        $m=($pc<0?(100+$pc):$pc);
                        $tpprice=strval(($fp*($m))/100.0);
                    }
                    $inserts[]="(?,?,?,?,?)";
                    $data[]=$pid;
                    //if all , set all_groups flag
                    $data[]=(isset($cgid)?0:1);
                    $data[]=(isset($cgid)?$cgid:0);
                    $data[]=$tpprice;
                    $data[]=$wsid;
                }
          }
          if(count($inserts)>0)
          {
            $sql.=implode(",",$inserts);
            $sql.=" ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)";
            $this->insert($sql,$data);
          }
         }
        return true;
    }

    public function processColumnList(&$cols,$params=null)
    {
       //inspect column list for getting tier price columns info
        foreach($cols as $col)
        {
            if(preg_match("|group_price:(.*)|",$col,$matches))
            {
                $tpinf=array("name"=>$matches[1],"id"=>null);

                //if specific tier price 
                 if($tpinf["name"]!=="_all_")
                 {
                    //get tier price customer group id
                    $sql="SELECT customer_group_id from ".$this->tablename("customer_group")." WHERE customer_group_code=?";
                    $cgid=$this->selectone($sql,$tpinf["name"],"customer_group_id");
                    $tpinf["id"]=$cgid;
                }
                else
                {
                    $tpinf["id"]=null;
                }
                $this->_tpcol[$col]=$tpinf;
            }
        }
        return true;
    }

    public function initialize($params)
    {
     $sql="SELECT COUNT(store_id) as cnt FROM ".$this->tablename("core_store")." WHERE store_id!=0";
     $ns=$this->selectOne($sql,array(),"cnt");
     if($ns==1)
     {
      $this->_singlestore=1;
     }
     //bepixeld patch : check pricescope from general config
     $sql = "SELECT value FROM ". $this->tablename('core_config_data') ." WHERE path=?";
     $this->_pricescope = intval($this->selectone($sql, array('catalog/price/scope'), 'value')); //0=global, 1=website    

    }
}

Tuesday 2 June 2015

How to replace word in database in mysql PHP


UPDATE student SET firstname = replace(firstname, 'jaydip', 'Kansagra');




 How to create multilingual static block in controller

$deliveryBlock = Mage::getModel('cms/block')->load('delivery_returns'); echo $deliveryBlock->getTitle(); echo $deliveryBlock->getContent(); 

Search does not return results in magento


Open your file Mage_CatalogSearch_Model_Layer and in method

public function prepareProductCollection($collection)
 
before return $this;

Add following rows:

Mage::log($collection->getSelectSQL(1), false, 'search.log', true);
Mage::log((array)Mage::getConfig()->getNode()->global->models->catalogsearch, false, 'search.log', true)

 OR

Goto -> admin->attributs->manage attribute-> search sku - open it -> Frontend Properties-> Use in Quick Search (YES )

Saturday 10 August 2013

How to Configure Magento for Development / Debug Mode

1. Disable Cache
System > Cache Management > Select All [check-boxes] > Actions = Disable > Submit
2. Re-Index All
System > Index Management > Select All [check-boxes] > Actions = Reindex Data > Submit
3. Disable Compilation
System > Tools > Compilation > Disable
Note: By default compilation mode is disabled. So just check if the Compiler Status is Enabled or not.
4. Turn on Error Reporting
a> Open index.php and un-comment the following line
1
#ini_set('display_errors', 1);
b> Open .htaccess and add the following line at the end
1
SetEnv MAGE_IS_DEVELOPER_MODE "true"
5. Turn on Logging
System > Configuration > Advanced > Developer > Log Settings > Enabled => Yes
6. Configuring Mangeto Error Page
rename errors/local.xml.sample to errors/local.xml

7. Install ‘Easy Template Path Hints’
Install Easy Template Path Hints for turning on/off the template path hints for frontend and backend easily & securely.

Friday 9 August 2013

Custom search engine friendly (SEF) URL In Magento.


Custom SEF helper method

class <Namespace>_<Module>_Helper_Data extends Mage_Core_Helper_Abstract
{
function custom_sef_url($id_path, $request_path, $target_path, $store_id ="0", $is_system=false){
$isrewrite = Mage::getModel('core/url_rewrite')->load($id_path,id_path);
    if($isrewrite->url_rewrite_id !=""){
      throw new Exception("Your Id path must be unique, given id path already in use !");
    }
      $rewrite = Mage::getModel('core/url_rewrite');
      $rewrite->setStoreId($store_id)
        ->setIdPath($id_path)
        ->setRequestPath($request_path)
        ->setTargetPath($target_path)
        ->setIsSystem($is_system)
        ->save();       
return;
}
}

Where should I call Custom SEF helper method?

Normally we need to create the custom URL once the new item is created, so we need to call this method in your “saveAction()” function after saving process. Let’s take FAQ items as example.

public function saveAction()
{

// .... faq saving process

try{
  $id_path = "faq/".$id;  // Id path must be unique
  $request_path = "fag/".$fag_title;
  $target_path  = "fag/index/index/id/".$id;

   Mage::helper('<module>')-&gt;custom_sef_url($id_path, $request_path, $target_path);
}
catch (Exception $e) {

 Mage::getSingleton('adminhtml/session')-&gt;addError($e-&gt;getMessage());

}

}