Magento: Checking customer/admin is logged in or not
The most important part in magento development is to check whether customer is logged in or not in the system. So that you can show specific features and extra privileges to your customers. There are many things that are restricted to the guests, while members can see the special privilege things.
Also if the customer is not logged in, we can show a link like “Log in”; while for logged in customers, we can show link like “Log out”, “My account”, etc. This is already present in Magento, but we may want to add more features to our customers. So here is the code where you can check customer is logged in or not.
This will check whether the customer is logged in the magento system or not.
1 2 3 4 5 6 7 | $session=Mage::getSingleton('customer/session', array('name'=>'frontend') );
if ($session->isLoggedIn()) {
echo "Welcome, ".$session->getCustomer()->getName();
} else {
echo "Not logged in";
} |
This will check whether admin is logged in or not in a magento site.
1 2 3 4 5 6 7 | $adminsession = Mage::getSingleton('admin/session', array('name'=>'adminhtml'));
if($adminsession->isLoggedIn()) {
echo "Welcome Admin";
} else {
echo "Not logged in";
} |
Magento get file paths and URLs
Get URL paths of your magento folder structure – Absolute URL Path
Mage::getBaseUrl() => Gets base url path e.g. http://my.website.com/
Mage::getBaseUrl(‘media’) => Gets MEDIA folder path e.g. http://my.website.com/media/
Mage::getBaseUrl(‘js’) => Gets JS folder path e.g. http://my.website.com/js/
Mage::getBaseUrl(‘skin’) => Gets SKIN folder path e.g. http://my.website.com/skin/
Get DIRECTORY paths (physical location of your folders on the server) – Relative URL Path
Mage::getBaseDir() => Gives you your Magento installation folder / root folder e.g. /home/kalpesh/workspace/magento
Mage::getBaseDir(‘app’) => Gives you your Magento’s APP directory file location e.g. /home/kalpesh/workspace/magento/app
Mage::getBaseDir(‘design’) => Gives you your Magento’s DESIGN directory file location e.g. /home/kalpesh/workspace/magento/design
Mage::getBaseDir(‘media’) => Gives MEDIA directory file path
Mage::getBaseDir(‘code’) => Gives CODE directory file path
Mage::getBaseDir(‘lib’) => Gives LIB directory file path
Get Current URL – whole URL path
Mage::helper(‘core/url’)->getCurrentUrl()
Override/Rewrite Magento core blocks and controllers
After spending many hours in rewriting block and controller of Magento core module, I finally came up with a solution.
Here I am going to rewrite block: Mage/Adminhtml/Block/Sales/Shipment/Grid.php
and controller: Mage/Adminhtml/controllers/Sales/ShipmentController.php
First you will need to make a xml file for your new module at app/etc/modules directory
CompanyName_Adminhtml.xml
1 2 3 4 5 6 7 8 9 | <?xml version="1.0"?>
<config>
<modules>
<CompanyName_Adminhtml>
<active>true</active>
<codePool>local</codePool>
</CompanyName_Adminhtml>
</modules>
</config> |
Then, make folders in your app/code/local directory as follows:
– CompanyName
-> Block
—> Sales
—-> Shipment
——> Grid.php
-> controllers
—> Sales
—-> ShipmentController.php
-> etc
—> config.xml
In etc/config.xml, your code should look like below:
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 | <?xml version="1.0"?>
<config>
<modules>
<CompanyName_Adminhtml>
<version>0.1.0</version>
</CompanyName_Adminhtml>
</modules>
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_shipment_grid>CompanyName_Adminhtml_Block_Sales_Shipment_Grid</sales_shipment_grid>
</rewrite>
</adminhtml>
</blocks>
<routers>
<adminhtml>
<rewrite>
<sales_shipment>
<from><![CDATA[#^/admin/sales_shipment/$#]]></from>
<to>/admin/sales_shipment/</to>
</sales_shipment>
</rewrite>
</adminhtml>
</routers>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<CompanyName_Adminhtml before="Mage_Adminhtml">CompanyName_Adminhtml</CompanyName_Adminhtml>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config> |
In ShipmentController.php, you should start like this:
1 2 3 4 5 | require_once("Mage/Adminhtml/controllers/Sales/ShipmentController.php");
class CompanyName_Adminhtml_Sales_ShipmentController extends Mage_Adminhtml_Sales_ShipmentController
{
//controller methods goes here..
} |
require_once is necessary as magento is not going to load controllers as it does for blocks and models
In block Grid.php, start the file like below:
1 2 3 4 | class CompanyName_Adminhtml_Block_Sales_Shipment_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
// block methods goes here..
} |
That’s it! Now you should get your local Grid.php and ShipmentController.php loading instead of core’s.
Welcome to my Blog
Certifications
Honor
Recognition
Contributions
Categories
- Apache (2)
- ChatGPT (1)
- Domain name (2)
- eCommerce (2)
- htaccess (1)
- Humor (3)
- Instagram API (1)
- jQuery (4)
- JSON (1)
- Linux (10)
- Magento (142)
- Magento admin (58)
- Magento Certification (5)
- Magento error (13)
- Magento frontend (68)
- Magento Imagine (2)
- Magento Interview (5)
- Magento Master (2)
- Magento2 (10)
- Mobile (1)
- MySQL (7)
- OpenAI (1)
- OroCRM (2)
- Performance (2)
- PHP (8)
- Prototype JS (3)
- Security (4)
- Wordpress (3)
- XML (2)