Magento: How to include a php call in the CMS pages - php

Following the instructions from this page:
http://www.magento.cc/how-to-use-php-on-a-cms-page.html
1) i declared the module in the app/etc/modules :
<?xml version="1.0"?>
<config>
<modules>
<Stock_status>
<active>true</active>
<codePool>local</codePool>
</Stock_status>
</modules>
</config>
2) Then i created the config.xml in app\code\local\Stock\status\Custom\etc with these contents in it:
<?xml version="1.0"?>
<config>
<global>
<blocks>
<Stock_status>
<class>Stock_status_Block</class>
</Stock_status>
</blocks>
</global>
</config>
3) afterwards i created a test.php in app/code/local/Stock/status/Custom/Block file with these contents in it:
<?php
class Stock_status_Block_Test extends Mage_Core_Block_Abstract
{
protected function _toHtml()
{
.Mage::helper('customstockstatus')->getListStatus($_product->getId()).
return $html;
}
}
and finally
4) i went in a cms page to see if it works by putting this value in:
{{block type="Stock_status_Custom/test" ListStatus="02"}}
This line of code should return me the stock status of a specific product (in this example, the product with the ID 02)
BUT it doesn't work. What have i done incorrectly? Can someone please help me?

These are an unnecessary works, you can simply call the php file by adding the following line into that cms page content
{{block type="core/template" template="page/urfile.phtml"}}
Then create file under the page directory

go to Magento Admin->CMS->Pages
Click Add New Page
Input Page Title
Input URL Key
Right Content inside (body)
paste your code.
Hope this help

Related

Rewrite Sales Order Print Block in magento

I'm trying to rewrite sales order print block. to retrieve store vat number. But the field for the vat number is blank. this works fine when I create my function on the core.
here is my config.xml
app/code/local/Company/Sales/Block/etc/config.xml
<config>
<global>
<blocks>
<sales>
<rewrite>
<order_print>Invent_Sales_Block_Order_Print</order_print>
</rewrite>
</sales>
</blocks>
</global>
</config>
and here is my print.php
app/code/local/Company/Sales/Block/Order/Print.php
class Invent_Sales_Block_Order_Print extends Mage_Sales_Block_Order_Print
public function getVatNumber()
{
$storeVAT = Mage::getStoreConfig("general/store_information/merchant_vat_number");
return $storeVAT;
}
here is my print.phtml
app/design/frontend/theme/package/template/sales/order/print.phtml
<?php echo "VAT Number:".' '.$this->getVatNumber(); ?>
Your help would be appreciated. Thanks
I manged to fix this. I misplaced the etc directory. I placed in inside Block, instead of making it to be on the same level.
Thank you

Magento Block Not Working - 1.9.2.2

I've created a custom extension and I'm trying to render a custom block. However, I see nothing.
My code is as follows;
app/code/local/Gdaze/Megamenu/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Gdaze_Megamenu>
<version>0.1.0</version>
</Gdaze_Megamenu>
</modules>
<global>
<blocks>
<megamenu>
<class>Gdaze_Megamenu_Block</class>
</megamenu>
</blocks>
</global>
</config>
app/code/local/Gdaze/Megamenu/Block/Customblock.php
<?php
class Gdaze_Megamenu_Block_Customblock extends Mage_Core_Block_Template
{
}
?>
app/design/frontend/rwd/site/gdaze/megamenu.phtml
<?php echo "Works"; ?>
My method of calling the block.
<?php $this->getLayout()->createBlock('megamenu/customblock')->setTemplate('gdaze/megamenu.phtml')->toHtml(); ?>
I don't really understand what's happening here. I've tried whitelisting the block (a new problem since 1.9.2.2) by adding megamenu/customblock. I've googled the cr*p out of this, but everything suggested just doesn't seem to work. Am I missing something really obvious? Any ideas?
Turns out, I was a bit of an idiot. In my calling statement, I neglected to echo the results.
<?php ***echo*** $this->getLayout()->createBlock('megamenu/customblock')->setTemplate('gdaze/megamenu.phtml')->toHtml(); ?>

Magento: Check if product is already in cart

Using magento for my shopping cart system. I have mini cart on top menu, when I added product it will show product title with price in mini cart. Currently have product quantity edit link but I need quantity box in mini cart to update quantity with ajax. I have followed this link http://ceckoslab.com/magento/magento-check-if-product-is-in-cart/, but getting following error
Fatal error: Class 'Mage_Smartview_Helper_Data' not found in /app/Mage.php on line 547
can anyone help me to resolve above error ?
When Magento is trying to look to Mage_Somemodule_ instead of your own module, it does means that it did not found your own file or your own module.
Three possible reasons :
Your module is not recognized at all, maybe something is wrong in your module definition
Something is wrong/mistyped in your config.xml
Something is wrong/mistyped in your class name
Be sure you have everything right from the tutorial and/or copy paste your code here so we can help further
In this case the two xml are wrong in the way that it should not ignore case sensitivity
CeckosLab_SmartView.xml
<?xml version="1.0"?>
<config>
<modules>
<CeckosLab_SmartView>
<active>true</active>
<codePool>local</codePool>
</CeckosLab_SmartView >
</modules>
</config>
config.xml
<?xml version="1.0"?>
<config>
<modules>
<CeckosLab_SmartView>
<version>1.0.0</version>
</CeckosLab_SmartView>
</modules>
<global>
<helpers>
<smartview>
<class>CeckosLab_SmartView_Helper</class>
</smartview>
</helpers>
</global>
</config>
please check it the Answer of stackoverflow
Click Here
In this link check this answer with 20 votes
Please check the releasenotes:
It will help you guide how to solve this issue
If your helper error contains Mage_ before your module, it means your helper is either not defined or defined incorrectly in your module's xml or you are calling it incorrectly.
If it is defined correctly this should work:
Mage::helper('smartview')->doSomething();
or try:
Mage::helper('ceckoslab_smartview')->doSomething();
Also, make sure you clear the cache as xml is cached heavily.
Hope this helps
Make enrty in config.xml
<global>
......
<helpers>
<test>
<class>Module_Test_Helper</class>
</test>
</helpers>
......
</global>
Create a Data.php file inside Helper folder and write following code
<?php
class Module_Test_Helper_Data extends Mage_Core_Helper_Abstract
{
}
Thats it you need to do now if you call this code it will not throw any error:
<?php Mage::helper("test")->actionname(); ?>

Magento translate.csv file not loading

I created a new package/theme/skin from scratch in Magento 1.9.1.
The theme and skin load fine. I tried adding translations and cannot get them to load. All cache settings are disabled.
I've added the CSV file here:
/app/design/frontend/{my_package}/{my_theme}/locale/en_US/translate.csv
translate.csv:
"testing123","Translation Worked"
header.phtml
<?= $this->__('testing123') ?>
I added {my_theme}, which for me is named "responsive" to the admin at the :
The result is the header displaying 'testing123' instead of the translated 'Translation Worked'. What have I missed? How do I troubleshoot this?
Update:
I've also added translate.csv to config.xml (and it still does not work). However, It DOES work if I move the translate.csv to app/locale/en_US but it DOES NOT work in app/design/frontend/{my_package}/{my_theme}/locale/en_US/translate.csv where I want it. How can I tell it to load from the theme folder?
config.xml:
<?xml version="1.0"?>
<config>
<modules>
<MyModule_Templates>
<version>0.1.0</version>
</MyModule_Templates>
</modules>
<frontend>
<translate>
<modules>
<MyModule_Templates>
<files>
<default>translate.csv</default>
</files>
</MyModule_Templates>
</modules>
</translate>
</frontend>
<global>
<page>
<layouts>
<mymodule_default translate="label">
<label>MyModule Default Layout</label>
<template>page/default.phtml</template>
<layout_handle>mymodule_default</layout_handle>
</mymodule_default>
</layouts>
</page>
</global>
</config>
Seems, You forgot to add translate.csv to your module's config.xml.
Please take a look.
http://inchoo.net/magento/how-to-add-your-own-translations-to-custom-modules/
i struggled with the same problem. Solution for me was to change the translation Source in the Admin Area.
Go to : Configuration -> select your Store view ( new Translation ) -> General -> under "options for localisation" uncheck the box and choose which translation you want to use. Afterwards, the translate.csv gets loaded and the translation works.
Cheers,
moktor

Shopping Cart Page title change in Magento

I need to change shopping cart page title. but i could not find it. where i should change it. so any help appreciated.
thanks
Changing the XML will have no effect because the title is set by the controller at app/code/core/Mage/Checkout/controllers/CartController.php.
$this
->loadLayout()
->_initLayoutMessages('checkout/session')
->_initLayoutMessages('catalog/session')
->getLayout()->getBlock('head')->setTitle($this->__('Shopping Cart'));
It's never a good idea to modify core files, and overriding controllers can be tedious. Therefore, the correct and quickest place to change this is in your translation file, located at app/locale/YOUR_LANGUAGE/Mage_Checkout.csv. If you do not have this file in your relevant directory you may create it and just add this line:
"Shopping Cart","NEW TITLE HERE"
If you do have the file then simply edit that line, ensuring your new title follows the original title and comma and is enclosed in double quotes.
The right way to do it, is making an override on the checkout controllers, is so easy.
First:
Add a new module with two subdirectories: controllers and etc.
Mynamespace/Checkout/controllers
Mynamespace/Checkout/etc
Then, in the etc directory add the file: CartController.php with the next content:
require_once 'Mage/Checkout/controllers/CartController.php';
class Mynamespace_Checkout_CartController extends Mage_Checkout_CartController
{
public function indexAction()
{
$cart = $this->_getCart();
if ($cart->getQuote()->getItemsCount()) {
$cart->init();
$cart->save();
if (!$this->_getQuote()->validateMinimumAmount()) {
$minimumAmount = Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())
->toCurrency(Mage::getStoreConfig('sales/minimum_order/amount'));
$warning = Mage::getStoreConfig('sales/minimum_order/description')
? Mage::getStoreConfig('sales/minimum_order/description')
: Mage::helper('checkout')->__('Minimum order amount is %s', $minimumAmount);
$cart->getCheckoutSession()->addNotice($warning);
}
}
// Compose array of messages to add
$messages = array();
foreach ($cart->getQuote()->getMessages() as $message) {
if ($message) {
// Escape HTML entities in quote message to prevent XSS
$message->setCode(Mage::helper('core')->escapeHtml($message->getCode()));
$messages[] = $message;
}
}
$cart->getCheckoutSession()->addUniqueMessages($messages);
/**
* if customer enteres shopping cart we should mark quote
* as modified bc he can has checkout page in another window.
*/
$this->_getSession()->setCartWasUpdated(true);
Varien_Profiler::start(__METHOD__ . 'cart_display');
$this
->loadLayout()
->_initLayoutMessages('checkout/session')
->_initLayoutMessages('catalog/session')
->getLayout()->getBlock('head')->setTitle($this->__('Here it go the new title!!!!'));
$this->renderLayout();
Varien_Profiler::stop(__METHOD__ . 'cart_display');
}
}
and then, the config.xml file:
<config>
<modules>
<Mynamespace_Checkout>
<version>0.1.0</version>
</Mynamespace_Checkout>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<mynamespace_sales before="Mage_Checkout">Mynamespace_Checkout</mynamespace_sales>
</modules>
</args>
</checkout>
</routers>
</frontend>
And last, the module activator: app/etc/modules/Mynamespace_Checkout.xml
<config>
<modules>
<Mynamespace_Checkout>
<active>true</active>
<codePool>local</codePool>
</Mynamespace_Checkout>
</modules>
</config>
This was tested in a Magento Enterprise 1.13.
Greetings
The title is actually set in the XML for that page. You should open the checkout.xml file in the app/design/frontend/packagename/themename/layout/ directory and place this code inside of the node in the XML:
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>
By default, I believe it grabs the label associated of the handle if the page title is not assigned explicitly (right now the label is "Shopping Cart" which is why you are getting that title).
Here is what my code looks like:
<checkout_cart_index translate="label">
<label>Shopping Cart</label>
<remove name="right"/>
<remove name="left"/>
<!-- Mage_Checkout -->
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<!-- More Below -->
</checkout_cart_index>
One other thing to mention, you can also make these changes in a local.xml (which is what I would recommend). The local.xml file will load on top off all the other XML files and your changes in that file will override any other XML files in the layout directory. A pretty good tutorial can be found here.
Here is a short example how to overwrite the title.
Force title
You can change the variable and overwrite the title in the specified layout.xml files.
Try this :
<reference name="head">
<action method="setTitle"><title>My New Checkout Title</title></action>
</reference>

Categories