We are doing custom Magento themes, Magento design, custom Magento extensions and creative services through Magento designers & developers for worldwide shop owners.

Last News
Magento admin get Customer online by store view or website

Magento admin get Customer online by store view or website

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

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*