Hi I need to implement a multiple product chooser widget in magento. For this I am using the below code. With this a I can put a multiple sku for the products in the field in admin. But I need to implement a product chooser with a checkboxes so that I can check those and submit. Please check the screenshot here http://www.awesomescreenshot.com/0035hy791a
app/code/community/Speroteck/SelectedProductsBlock/etc/config.xml
<config>
<modules>
<Speroteck_SelectedProductsBlock>
<version>0.1.0</version>
</Speroteck_SelectedProductsBlock>
</modules>
<global>
<helpers>
<speroteck_selectedproductsblock>
<class>Speroteck_SelectedProductsBlock_Helper</class>
</speroteck_selectedproductsblock>
</helpers>
<blocks>
<speroteck_selectedproductsblock>
<class>Speroteck_SelectedProductsBlock_Block</class>
</speroteck_selectedproductsblock>
</blocks>
</global>
<frontend>
<layout>
<updates>
<speroteck_selectedproductsblock>
<file>speroteck/selectedproductsblock.xml</file>
</speroteck_selectedproductsblock>
</updates>
</layout>
</frontend>
</config>
app/code/community/Speroteck/SelectedProductsBlock/etc/widget.xml
<?xml version="1.0"?>
<widgets>
<Speroteck_SelectedProductsBlock type="speroteck_selectedproductsblock/list" module="speroteck_selectedproductsblock">
<name>Display selected products</name>
<description>Display list of selected products</description>
<parameters>
<block_name translate="label">
<label>Block Name</label>
<type>text</type>
<required>1</required>
<visible >1</visible>
</block_name>
<template translate="label">
<label>Frontend Template</label>
<visible>1</visible>
<required>1</required>
<type>select</type>
<values>
<grid translate="label">
<value>speroteck/selectedproductsblock/default.phtml</value>
<label>Default template</label>
</grid>
</values>
</template>
<products_limit translate="label">
<label>Products Limit</label>
<type>text</type>
<required>1</required>
<visible >1</visible>
<value>4</value>
</products_limit>
<selected_products>
<label>Product sku's</label>
<description>Product sku's separated by comma</description>
<type>textarea</type>
<required>1</required>
<visible >1</visible>
</selected_products>
</parameters>
</Speroteck_SelectedProductsBlock>
</widgets>
app/code/community/Speroteck/SelectedProductsBlock/Helper/Data.php
<?php
class Speroteck_SelectedProductsBlock_Helper_Data extends Mage_Core_Helper_Abstract
{
}
Please suggest me how can I implement a multiple product chooser in my plugin.
Thanks
Related
friends
i have created custom module ,in which i have crated blocks .i want use this block in template but this is not work.
This is my config file :-
<?xml version="1.0"?>
<config>
<modules>
<CustomModule_SocialLogin>
<version>1.0.0</version>
</CustomModule_SocialLogin>
</modules>
<frontend>
<routers>
<customer>
<args>
<modules>
<CustomModule_SocialLogin before="Mage_Customer">CustomModule_SocialLogin_Customer </CustomModule_SocialLogin>
</modules>
</args>
</customer>
<sociallogin>
<use>standard</use>
<args>
<module>CustomModule_SocialLogin</module>
<frontName>sociallogin</frontName>
</args>
</sociallogin>
</routers>
<layout>
<updates>
<CustomModule_SocialLogin module="CustomModule_SocialLogin">
<file>CustomModule/sociallogin.xml</file>
</CustomModule_SocialLogin>
</updates>
</layout>
</frontend>
<global>
<blocks>
<CustomModule_SocialLogin>
<class>CustomModule_SocialLogin_Block</class>
</CustomModule_SocialLogin>
</blocks>
<models>
<CustomModule_SocialLogin>
<class>CustomModule_SocialLogin_Model</class>
</CustomModule_SocialLogin>
</models>
<helpers>
<CustomModule_SocialLogin>
<class>CustomModule_SocialLogin_Helper</class>
</CustomModule_SocialLogin>
</helpers>
</global>
</config>
My block file -:
class CustomModule_SocialLogin_Block_Qa extends Mage_Core_Block_Template{
public function getText()
{
$name='test';
return $name;
}
}
custom module layout update file :-
<layout version="0.1.0">
<default>
<reference name="content" translate="label">
<block type="custommodule_sociallogin/qa" name="SocialLogin.qa" template="CustomModule/SocialLogin/questionans.phtml" />
</reference>
</default>
</layout>
my template file :-
<?php
echo $this->getText()->toHtml();
//echo $this->getText();
?>
Please help me to solve this error .
You need to correct your module layout file. I have corrected the block type.
<layout version="0.1.0">
<default>
<reference name="content" translate="label">
<block type="sociallogin/qa" name="SocialLogin.qa" template="CustomModule/SocialLogin/questionans.phtml" />
</reference>
</default>
In template file :-
<?php
echo $this->getText();
?>
I'm using custom block to show my module logo over each product, now since catalog_product_view tag it shows the logo at product details page only, the problem is that I want to show the icon on each page on each product, whether it is home page, product list, detail, etc. how to achieve this using blocks
Here is the code
Module Configuration (app\etc\modules\NS_Mymodule.xml)
<config>
<modules>
<NS_Mymodule>
<active>true</active>
<codePool>community</codePool>
</NS_Mymodule>
</modules>
</config>
Configuration XML (app\code\community\NS\Mymodule\etc\config.xml)
<config>
<modules>
<NS_Mymodule>
<version>1.0.1</version>
</NS_Mymodule>
</modules>
<global>
<helpers>
<Mymodule>
<class>NS_Mymodule_Helper</class>
</Mymodule>
</helpers>
<blocks>
<mymodule>
<class>NS_Mymodule_Block</class>
</mymodule>
</blocks>
</global>
<frontend>
<layout>
<updates>
<mymodule>
<file>mymodule.xml</file>
</mymodule>
</updates>
</layout>
</frontend>
</config>
Block Class ( app\code\community\NS\Mymodule\Block\Showicon.php )
class Ns_Mymodule_Block_Showicon extends Mage_Core_Block_Template
{
public function myfunction()
{
return "Hello tuts+ world";
}
}
Layout XML ( app\design\frontend\rwd\default\layout\mymodule.xml)
<layout version="1.0.1">
<catalog_product_view>
<reference name="product.info">
<block type="mymodule/showicon" as="ns_media" name="mymodule_showicon" template="mymodule/showicon.phtml" />
</reference>
</catalog_product_view>
</layout>
Template File (app\design\frontend\rwd\default\template\mymodule\showicon.phtml)
<h1>SHOW ICON HERE</h1>
and in the app\design\frontend\rwd\default\template\catalog\product\view.phtml
<?php echo $this->getChildHtml('ns_media') ?>
right after
<?php echo $this->getChildHtml('media') ?>
i'm using Magento 1.9.0.1 and right now i am working on a new extension and i want to add new module with tab in the admin panel.
Here is what i've done so far:
/app/code/community/VivasIndustries/SmsNotification/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<VivasIndustries_SmsNotification>
<version>0.1.0</version>
</VivasIndustries_SmsNotification>
</modules>
<global>
<models>
<smsnotification>
<class>VivasIndustries_SmsNotification_Model</class>
</smsnotification>
</models>
<events>
<sales_order_save_after>
<observers>
<vivasindustries_smsnotification>
<class>smsnotification/observer</class>
<method>orderSaved</method>
</vivasindustries_smsnotification>
</observers>
</sales_order_save_after>
</events>
</global>
<adminhtml>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<system>
<children>
<config>
<children>
<vivas>
<title>Vivas - All</title>
</vivas>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
Here is what i have in:
/app/code/community/VivasIndustries/SmsNotification/etc/system.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<tabs>
<vivas translate="label" module="vivasindustries_smsnotification">
<label>Vivas Extensions</label>
<sort_order>100</sort_order>
</vivas>
</tabs>
<sections>
<vivas translate="label" module="vivasindustries_smsnotification">
<label>Extension Options</label>
<tab>vivas</tab>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<vivas_group translate="label" module="vivasindustries_smsnotification">
<label>My Extension Options</label>
<frontend_type>text</frontend_type>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<vivas_input translate="label">
<label>My Input Field: </label>
<comment>My Comment</comment>
<frontend_type>text</frontend_type>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</vivas_input>
<vivas_select translate="label">
<label>My Dropdown: </label>
<comment>Source model provider Magento's default Yes/No values</comment>
<frontend_type>select</frontend_type>
<sort_order>90</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<source_model>adminhtml/system_config_source_yesno</source_model>
</vivas_select>
</fields>
</vivas_group>
</groups>
</vivas>
</sections>
</config>
Here is what i have in: /app/code/community/VivasIndustries/SmsNotification/Helper/Data.php:
<?php
class VivasIndustries_SmsNotification_Helper_Data extends Mage_Core_Helper_Abstract
{
}
With this done i receive the following error when i open my admin panel:
Fatal error: Class 'Mage_Vivasindustries_Smsnotification_Helper_Data' not found in /home/superweb/public_html/store/app/Mage.php on line 547
When i change the name of the FOLDER SmsNotification to Smsnotification this error is gone, but there is any new tab in the System->Configuration...
So guys can you help me out to create a new tab in the Admin panel ?
Thanks in advance!
You forgot to define the helper alias for your module in config.xml. It should be in the same form as for the models:
<global>
<helpers>
<smsnotification>
<class>VivasIndustries_SmsNotification_Helper</class>
</smsnotification>
</helpers>
...
Also, you have to use the same alias in system.xml when specifying the module used for translation:
module="smsnotification"
To explain what has happened: Magento doesn't find a helper with the alias "vivasindustries_smsnotification", so it falls back to the Mage namespace and the given alias with capitalized letters as module (no, I have never seen a case where this would have been the desired behavior, but this is how it works). This results in Mage_Vivasindustries_Smsnotification_Helper_Data as helper class name which cannot be found.
As a general rule: If Magento tries to load classes from your module with "Mage_" prefix, your module configuration is either incomplete, has errors or is cached with an old version and the configuration cache must be cleared.
I am working on creating my very first community extension. It is a very simple one and is already working. I would like to learn how to add my extension to the admin area that will allow the customer to disable or enable it. What do I need to add to my module to be able to do this? Any help would be great!
Here is my code:
app/etc/modules/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Module_Name>
<!-- Whether our module is active: true or false -->
<active>true</active>
<!-- Which code pool to use: core, community or local -->
<codePool>community</codePool>
</Module_Name>
</modules>
</config>
etc/system.xml
<?xml version="1.0"?>
<config>
<sections>
<module translate="label" module="modulename">
<label>Your Module Name</label>
<tab>tab_id_where_you_want_to_add_your_section</tab>
<frontend_type>text</frontend_type>
<sort_order>980</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
<groups>
<modulename>
<label>Your Group Title</label>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
<fields>
<comment translate="label comment">
<label>Your Field Title</label>
<comment>Your Comment</comment>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
</comment>
</fields>
</modulename>
</groups>
</your_module>
</sections>
</config>
etc/adminhtml.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<menu>
<modulename translate="title" module="shipping">
<title>Module</title>
<sort_order>15</sort_order>
<children>
<modulename translate="title" module="modulename">
<title>Drop Down Shipping</title>
<sort_order>1</sort_order>
<action>adminhtml/shipping/index</action>
</example>
</children>
</modulename>
</menu>
<layout>
<updates>
<modulename>
<file>shipping.xml</file>
</modulename>
</updates>
</layout>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<modulename translate="title" module="shipping">
<title>Your Module Name</title>
</modulename>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>
etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Module_Name>
<version>0.0.1</version>
</Module_Name>
</modules>
<frontend>
<layout>
<updates>
<modulename>
<file>shipping.xml</file>
</modulename>
</updates>
</layout>
</frontend>
<global>
<helpers>
<modulename>
<class>Module_Name_Helper</class>
</modulename>
</helpers>
</global>
</config>
My theme Layout XML File:
<?xml version="1.0"?>
<layout version="0.1.0">
<checkout_cart_index>
<reference name="head">
<action method="addCss"><stylesheet>css/module/shipping.css</stylesheet></action>
</reference>
<reference name="checkout.cart.shipping">
<action method="setTemplate"><template>module/shipping.phtml</template></action>
</reference>
</checkout_cart_index>
</layout>
Helper/Data.php
<?php
class Module_Name_Data extends Mage_Core_Helper_Abstract
{
}
It is not quite clear from your question if you want to add node to main admin menu (horizontal one with fly-out sub-menus) or sidebar menu of System\Configuration screen. Below are instructions how to add section, group and field to Magento configuration screen.
First you need the etc/system.xml file to your module:
<?xml version="1.0"?>
<config>
<sections>
<your_module translate="label" module="your_module_shortcode">
<label>Your Module Name</label>
<tab>tab_id_where_you_want_to_add_your_section</tab>
<frontend_type>text</frontend_type>
<sort_order>980</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
<groups>
<your_group_name>
<label>Your Group Title</label>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
<fields>
<your_field_name translate="label comment">
<label>Your Field Title</label>
<comment>Your Comment</comment>
<frontend_type>text</frontend_type>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>0</show_in_store>
</your_field_name>
</fields>
</your_group_name>
</groups>
</your_module>
</sections>
</config>
And then add the following section to your etc/adminhtml.xml. It adds your newly created section to ACL so you will be able to control admin roles that can access it:
<config>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<your_module translate="title" module="your_module_shortcode">
<title>Your Module Name</title>
</your_module>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>
The enable and disable module feature is already exist in System >> Configuration >> ADVANCE >> Advance.
BTW if you want to add Menu in the System >> Configuration page, this article may help you http://alanstorm.com/custom_magento_system_configuration.
And if you got an error, check again whether everything is ok or not.
I am simply trying to build an extension that if it is enabled it will override the original cart/shipping.phtml file with my own template file..
When I click on Enable it does not enable the extension. I know the extension actually works b/c if I manually change my layout block theme it works. However, I don't want to do that. Can you please have a look at my code and let me know what I am doing wrong? I am assuming it has something to do with my block file not being right. P.S. if you see what is wrong and how to fix it could you also tell me how to set a CSS file for the extension as well if it is enabled?
Here are all of my files :)
etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Module_Name><version>1.0.0</version></Module_Name>
</modules>
<global>
<blocks>
<modulename>
<class>Module_Name_Block</class>
</modulename>
</blocks>
<helpers>
<modulename>
<class>Module_Name_Helper</class>
</modulename>
</helpers>
</global>
<modulename>
<settings>
<enable>1</enable>
</settings>
</modulename>
<frontend>
<layout>
<updates>
<modulename>
<file><!-- shipping.xml --></file>
</modulename>
</updates>
</layout>
<routers>
<modulename>
<use>standard</use>
<args>
<module>Module_Name</module>
<frontName>modulename</frontName>
</args>
</modulename>
</routers>
</frontend>
<adminhtml>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<modulename>
<title>Shipping Extension</title>
</modulename>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
etc/system.xml
<?xml version="1.0"?>
<config>
<tabs>
<module translate="label">
<label>Custom Extensions</label>
<sort_order>100</sort_order>
</module>
</tabs>
<sections>
<modulename translate="label">
<label>Shipping</label>
<tab>module</tab>
<frontend_type>text</frontend_type>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<settings translate="label">
<label>Settings</label>
<frontend_type>text</frontend_type>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<enable translate="label">
<label>Enable</label>
<comment>
<![CDATA[Enable or Disable this extension.]]>
</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>1</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</enable>
</fields>
</settings>
</groups>
</modulename >
</sections>
</config>
Helper/Data.php
<?php
class Module_Name_Helper_Data extends Mage_Core_Helper_Abstract
{
}
Block/Cart/Shipping.php
<?php
class Module_Name_Block_Cart_Shipping extends Mage_Checkout_Block_Cart_Shipping
{
protected function _beforeToHtml()
{
if(Mage::getStoreConfig('modulename/settings/enable'))
$this->setTemplate('module/name/shipping.phtml');
return $this;
}
}
For checking boolean config data it's more appropriate to use Mage::getStoreConfigFlag() [link]. In this case, there's a hook to do just this purely in layout XML without the need to do a block class rewrite.
Configure a custom layout update file for your module, and in that file simply do the following:
<?xml version="1.0"?>
<layout>
<checkout_cart_index>
<action method="setTemplate" block="checkout.cart.shipping" ifconfig="dropdownshipping/settings/enable">
<template>beckin/dropdownshipping/drop_down_shipping.phtml</template>
</action>
<action method="addCss" block="head" ifconfig="dropdownshipping/settings/enable">
<template>css/beckin/dropdownshipping.css</template>
</action>
</checkout_cart_index>
</layout>
As long as your module is also configured with <depends /> on the Mage_Checkout this layout XML update will be merged in after the core instruction, thus overriding the core template.
The only reason to take the approach which you have taken is to thoroughly force that the template will be set to your module's template just prior to rendering - thereby overriding any potential conflicting layout XML instruction - assuming that there is no cache hit, a behavior which is ... debatable.