hi guys in magento the grid of customer online get all user online without specify the customers by choosing store view , ok in arabgento we find cool solution it’s not in the web just here the code is clear and useful
in config.xml you need rewriting the grid of customer online (customer_online_grid) :
this is the code:
1 2 3 4 5 6 7 8 9 10 |
<blocks>
<module>
<class>Package_Module_Block</class>
</module>
<adminhtml>
<rewrite>
<customer_online_grid>Package_Module_Block_Customer_Online_Grid</customer_online_grid>
</rewrite>
</adminhtml>
</blocks>
|
don’t forget the declare you layout inside config.xml:
1 2 3 4 5 6 7 8 9 |
<adminhtml>
<layout>
<updates>
<module>
<file>module.xml</file>
</module>
</updates>
</layout>
</adminhtml>
|
and in your layout module.xml (app\design\adminhtml\default\default\layout\module.xml) you need :
1 2 3 4 5 6 7 |
<adminhtml_customer_online_index>
<reference name="content" >
<block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher">
<action method="setUseConfirm"><params>0</params></action>
</block>
</reference>
</adminhtml_customer_online_index>
|
here you see inside the code im adding the block of store view (website switcher)
1 2 3 |
<block type="adminhtml/store_switcher" name="store_switcher" as="store_switcher">
<action method="setUseConfirm"><params>0</params></action>
</block>
|
and inside your Grid.php (app\code\community\Package\Module\Block\Customer\Online\Grid.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
<?php
class Package_Module_Block_Customer_Online_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
/**
* Initialize Grid block
*
*/
public function __construct()
{
parent::__construct();
$this->setId('onlineGrid');
$this->setSaveParametersInSession(true);
$this->setDefaultSort('last_activity');
$this->setDefaultDir('DESC');
}
/**
* Prepare collection for grid
*
* @return Mage_Adminhtml_Block_Customer_Online_Grid
*/
protected function _prepareCollection()
{
$collection = Mage::getModel('log/visitor_online')
->prepare()
->getCollection();
$collection->addCustomerData();
$this->setCollection($collection);
$store=$this->getRequest()->getParam('store', 0);
if($store!=0)
{
$collection->addFieldToSelect('visitor_id')->addFieldToSelect('last_url')->addFieldToSelect('visitor_type')->addFieldToSelect('remote_addr')->addFieldToSelect('customer_id')->getSelect('*')->joinLeft( array('v' => Mage::getConfig()->getTablePrefix().'log_visitor'), '`main_table`.`visitor_id`=v.visitor_id')->where('v.store_id IN ('.$store .')');
}
parent::_prepareCollection();
return $collection;
}
/**
* Prepare columns
*
* @return Mage_Adminhtml_Block_Customer_Online_Grid
*/
protected function _prepareColumns()
{
$this->addColumn('customer_id', array(
'header' => Mage::helper('customer')->__('ID'),
'width' => '40px',
'align' => 'right',
'type' => 'number',
'default' => Mage::helper('customer')->__('n/a'),
'index' => 'customer_id'
));
$this->addColumn('firstname', array(
'header' => Mage::helper('customer')->__('First Name'),
'default' => Mage::helper('customer')->__('Guest'),
'index' => 'customer_firstname'
));
$this->addColumn('lastname', array(
'header' => Mage::helper('customer')->__('Last Name'),
'default' => Mage::helper('customer')->__('n/a'),
'index' => 'customer_lastname'
));
$this->addColumn('email', array(
'header' => Mage::helper('customer')->__('Email'),
'default' => Mage::helper('customer')->__('n/a'),
'index' => 'customer_email'
));
$this->addColumn('ip_address', array(
'header' => Mage::helper('customer')->__('IP Address'),
'default' => Mage::helper('customer')->__('n/a'),
'index' => 'remote_addr',
'renderer' => 'adminhtml/customer_online_grid_renderer_ip',
'filter' => false,
'sort' => false
));
$this->addColumn('session_start_time', array(
'header' => Mage::helper('customer')->__('Session Start Time'),
'align' => 'left',
'width' => '200px',
'type' => 'datetime',
'default' => Mage::helper('customer')->__('n/a'),
'index' =>'first_visit_at'
));
$this->addColumn('last_activity', array(
'header' => Mage::helper('customer')->__('Last Activity'),
'align' => 'left',
'width' => '200px',
'type' => 'datetime',
'default' => Mage::helper('customer')->__('n/a'),
'index' => 'last_visit_at'
));
$typeOptions = array(
Mage_Log_Model_Visitor::VISITOR_TYPE_CUSTOMER => Mage::helper('customer')->__('Customer'),
Mage_Log_Model_Visitor::VISITOR_TYPE_VISITOR => Mage::helper('customer')->__('Visitor'),
);
$this->addColumn('type', array(
'header' => Mage::helper('customer')->__('Type'),
'index' => 'type',
'type' => 'options',
'options' => $typeOptions,
// 'renderer' => 'adminhtml/customer_online_grid_renderer_type',
'index' => 'visitor_type'
));
$this->addColumn('last_url', array(
'header' => Mage::helper('customer')->__('Last URL'),
'type' => 'wrapline',
'lineLength' => '60',
'default' => Mage::helper('customer')->__('n/a'),
'renderer' => 'adminhtml/customer_online_grid_renderer_url',
'index' => 'last_url'
));
return parent::_prepareColumns();
}
/**
* Retrieve Row URL
*
* @param Mage_Core_Model_Abstract
* @return string
*/
public function getRowUrl($row)
{
return (Mage::getSingleton('admin/session')->isAllowed('customer/manage') && $row->getCustomerId())
? $this->getUrl('*/customer/edit', array('id' => $row->getCustomerId())) : '';
}
}
}
|
the code is very simple is the same inside the default grid (Mage_Adminhtml_Block_Customer_Online_Grid) but i get the store id from switcher :
1 |
$store=$this->getRequest()->getParam('store', 0);
|
and then if $store!=0 I add filter to request :
1 |
$collection->addFieldToSelect('visitor_id')->addFieldToSelect('last_url')->addFieldToSelect('visitor_type')->addFieldToSelect('remote_addr')->addFieldToSelect('customer_id')->getSelect('*')->joinLeft( array('v' => Mage::getConfig()->getTablePrefix().'log_visitor'), '`main_table`.`visitor_id`=v.visitor_id')->where('v.store_id IN ('.$store .')');
|
ok now you have cutomer online by website or store view