Magento Set Multiple Currencies - magento

I have a problem with Magento currency: My code is working fine otherwise, now I want to redirect the page after a change of currency.
Suppose my current URL is http://www.example.com/women/?color=black.
Now, When I change currency it will redirect to: http://www.example.com/women/; so it removes ?color=black.
Code:
if($this->getCurrencyCount()>1): ?>
<div class="block block-currency">
<div class="block-title">
<strong><span><?php echo $this->__('Select Your Currency') ?></span></strong>
</div>
<div class="block-content">
<select name="currency" title="<?php echo $this->__('Select Your Currency') ?>" onchange="setLocation(this.value)">
<?php foreach ($this->getCurrencies() as $_code => $_name): ?>
<option value="<?php echo $this->getSwitchCurrencyUrl($_code) ?>"<?php if($_code==$this->getCurrentCurrencyCode()): ?> selected="selected"<?php endif; ?>>
<?php echo $_name ?> - <?php echo $_code ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<?php endif;
Updated Code:
<?PHP $currentParams = $this->getRequest()->getParams(); ?>
<div style="float:left; margin-top:10px; color:#727478;">
<!--Change 1 to 0 if you wish to output selector always-->
<?php if($this->getCurrencyCount() > 1): ?>
<span>Select Currency:</span>
<select name="custom-currency-selector" id="custom-currency-selector">
<?php foreach ($this->getCurrencies() as $_code => $_name):
$currencyUrl = $this->getSwitchCurrencyUrl($_code);
foreach ($currentParams as $_param) {
$currencyUrl = $this->helper('core/url')->addRequestParam($currencyUrl, $_param);
}
?>
<option value="<?php echo $currencyUrl; ?>"
<?php if($_code == $this->getCurrentCurrencyCode()): ?>
selected="SELECTED"
<?php endif; ?>>
<?php echo $_code ?>
</option>
<?php endforeach; ?>
</select>
<?php endif;?>
Updated Code:
<!--Change 1 to 0 if you wish to output selector always-->
<?php if($this->getCurrencyCount() > 1):
$currentParams = $this->getRequest()->getParams();
?>
<span>Select Currency:</span>
<select name="custom-currency-selector" id="custom-currency-selector">
<?php foreach ($this->getCurrencies() as $_code => $_name):
$currencyUrl = $this->helper('core/url')->addRequestParam($this->getSwitchCurrencyUrl($_code),$currentParams)
?>
<option value="<?php echo $currencyUrl ?>"
<?php if($_code == $this->getCurrentCurrencyCode()): ?>
selected="SELECTED"
<?php endif; ?>>
<?php echo $_code ?>
</option>
<?php endforeach; ?>
</select>
<?php endif; ?>

You should add these params to the new url:
$currentParams = $this->getRequest()->getParams();
$currencyUrl = $this->helper('core/url')->addRequestParam(
$this->getSwitchCurrencyUrl($_code),
$currentParams
)
Then use $currencyUrl as url for redirect.

Related

Magento Payment Method Drop Down Menu

I am trying to change the payment method radio buttons to a drop down menu.
/app/design/frontend/default/modern/template/checkout/onepage/payment/methods.phtml
This method below works to a degree but while Sagepay processes the order via the radio buttons, it doesn't seem to process successfully when on the drop down menu.
Please could you take a look and let me know what needs to be called? Many thanks in advance!
<dl class="sp-methods" id="checkout-payment-method-load">
<?php
$methods = $this->getMethods();
$oneMethod = count($methods) <= 1;
?>
<?php
$txtArr = array();
$txt ="<select name='payment[method]' onchange='payment.switchMethod(this.value)'>";
foreach ($methods as $_method):
$_code = $_method->getCode();
?>
<!-- <dt>-->
<?php $txt = $txt."<option value='".$_code."' id='p_method_".$_code."'>".$this->htmlEscape($_method->getTitle())."</option>" ?>
<?php if(!$oneMethod): ?>
<!--<input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" title="<?php echo $this->htmlEscape($_method->getTitle()) ?>" onclick="payment.switchMethod('<?php echo $_code ?>')"<?php if($this->getSelectedMethodCode()==$_code): ?> checked="checked"<?php endif; ?> class="radio" />-->
<?php else: ?>
<!--<span class="no-display"><input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" checked="checked" class="radio" /></span>-->
<?php $oneMethod = $_code; ?>
<?php endif; ?>
<!-- <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($this->getMethodTitle($_method)) ?> <?php echo $this->getMethodLabelAfterHtml($_method) ?></label>-->
<!--</dt>-->
<?php if ($html = $this->getPaymentMethodFormHtml($_method)): ?>
<!-- <dd>-->
<?php //echo $html; ?>
<!--</dd>-->
<?php $txtArr[] = $html;?>
<?php endif; ?>
<?php endforeach; ?>
<?php $txt = $txt."</select>" ?>
<dt>
<?php echo $txt;?>
</dt>
<?php for($i=0;$i<count($txtArr);$i++){?>
<dt><?php echo $txtArr[$i];?></dt>
<?php } ?>
</dl>
<?php echo $this->getChildChildHtml('additional'); ?>
<script type="text/javascript">
//<![CDATA[
<?php echo $this->getChildChildHtml('scripts'); ?>
payment.init();
<?php if (is_string($oneMethod)): ?>
payment.switchMethod('<?php echo $oneMethod ?>');
<?php endif; ?>
//]]>
</script>

Get a category in magento

I have this kind of categories in magenta:
-MotoCross
->Parts1 ->sub-parts
->Parts2 ->sub-parts
->Parts3 ->sub-parts
-Quad
->Parts1 ->sub-parts
->Parts2 ->sub-parts
->Parts3 ->sub-parts
For now i have MotoCross and Quad printed on screen and their child (parts1,2,3) but I would like to have Part1 and them sub parts printed on screen.
I don't know how to do, see my code bellow:
---------------------------EDIT---------------------------
Now I have the current category categories, but i don't know how two have current category categories categories. You're still here ? :P
<?php
$object = new Mage_Catalog_Block_Navigation();
$actualCategoryId = $object->getCurrentCategory()->getId();
$actualCategory = Mage::getModel('catalog/category')->load($actualCategoryId);
$subCategories = explode(',', $actualCategory->getChildren());
?>
<div id="categories_list">
<ol>
<?php
foreach ( $subCategories as $subCategoryId )
{
$category = Mage::getModel('catalog/category')->load($subCategoryId);
if ( $category->getIsActive() )
{ ?>
<li class="second_level_cat">
<?php
echo ''.$category->getName().' ';
?>
</li>
<?php
}
}
?>
</ol>
</div>
Thanks for your help.
It's something like this.
<div id="categories_list">
<ol>
<?PHP foreach ($catIds as $cid): ?>
<?PHP $_category = Mage::getModel('catalog/category')->load($cid); ?>
<?PHP if($_category->getLevel() == 2 ) : ?>
<li class="second_level_cat">
<a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a>
</li>
<?php
$cat = Mage::getModel('catalog/category')->load($_category->getId());
$childrens = $cat->getChildren();
if($childrens)
{
$childs=explode(",",$childrens);
foreach($childs as $child){
$cat_child = Mage::getModel('catalog/category')->load($child);
?>
<li class="third_level_cat">
<a href="<?php echo $this->getCategoryUrl($cat_child) ?>"<?php if ($this->isCategoryActive($cat_child)): ?> class="current"<?php endif; ?>><?php echo ucfirst(strtolower($this->htmlEscape($cat_child->getName()))) ?></a>
</li>
<?php
}
}
?>
<?php endif; ?>
<?php endforeach ?>
</ol>
</div>
Here is code
$cats = Mage::getModel('catalog/category')->load(2)->getAllChildren(); // 2 = Root Category
$catIds = explode(',',$cats);
Select Category :
<select id="_cid" name="_cid">
<?PHP foreach ($catIds as $cid){ ?>
<?PHP $_category = Mage::getModel('catalog/category')->load($cid); ?>
<?PHP if($_category->getLevel() == 3 ) { ?>
<option value="<?PHP echo $_category->getId() ?>"> <?PHP echo $_category->getName() ?></option>
<?PHP } ?>
<?PHP if($_category->getLevel() == 4 ) { ?>
<option value="<?PHP echo $_category->getId() ?>"> <?PHP echo $_category->getName() ?></option>
<?PHP } ?>
<?PHP } ?>
</select>

magento mobileshoppe theme - Fatal error: Call to a member function getSize() on a non-object in

I am using mobileshoppe magento theme for our store, when i installed magento it was showing latest products on home page using the code below.
{{block type="catalog/product_new" name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml"}}
Then we customized the theme and it stopped to display latest products on home page even the code above is as it is in admin.
It shows the error -
Fatal error: Call to a member function getSize() on a non-object in D:\wamp\www\magento\app\design\frontend\default\mobileshoppe\template\catalog\product\list\toolbar_top.phtml on line 34
toolbar_top.phtml
<?php if($this->getCollection()->getSize()): ?>
<div class="toolbar">
<?php if( $this->isExpanded() ): ?>
<div class="sorter">
<?php if( $this->isEnabledViewSwitcher() ): ?>
<p class="view-mode">
<?php $_modes = $this->getModes(); ?>
<?php if($_modes && count($_modes)>1): ?>
<label><?php echo $this->__('View as') ?>:</label>
<?php foreach ($this->getModes() as $_code=>$_label): ?>
<?php if($this->isModeActive($_code)): ?>
<strong title="<?php echo $_label ?>" class="<?php echo strtolower($_code); ?>"><?php echo $_label ?></strong>
<?php else: ?>
<?php echo $_label ?>
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
</p>
<?php endif; ?>
<div class="limiter">
<label><?php echo $this->__('Show') ?></label>
<select onchange="setLocation(this.value)">
<?php foreach ($this->getAvailableLimit() as $_key=>$_limit): ?>
<option value="<?php echo $this->getLimitUrl($_key) ?>"<?php if($this->isLimitCurrent($_key)): ?> selected="selected"<?php endif ?>>
<?php echo $_limit ?>
</option>
<?php endforeach; ?>
</select> <?php echo $this->__('per page') ?>
</div>
<div class="sort-by">
<label><?php echo $this->__('Sort By') ?></label>
<select onchange="setLocation(this.value)">
<?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
<option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
<?php echo $this->__($_order) ?>
</option>
<?php endforeach; ?>
</select>
<?php if($this->getCurrentDirection() == 'desc'): ?>
<img src="<?php echo $this->getSkinUrl('images/i_desc_arrow.gif') ?>" alt="<?php echo $this->__('Set Ascending Direction') ?>" class="v-middle" />
<?php else: ?>
<img src="<?php echo $this->getSkinUrl('images/i_asc_arrow.gif') ?>" alt="<?php echo $this->__('Set Descending Direction') ?>" class="v-middle" />
<?php endif; ?>
</div>
</div>
<?php endif; ?>
can anyone please help me on this? Thanks...
Hello Guys I had the same issue on my Mobileshoppe Template. I tried to add products of a category and it didn't work for me.
In the end the solution was to use as mentioned on the official Mobileshoppe page "readme" file: http://magresponsive.devdemoz.com/readme.html
I used the code where it says: 2) Create cms page (home page) step bellow.
Hope it helps somebody.

magento set Switch Currency Url

I have problem with Currency URL.
Suppose my URL is www.example.com/by_women/?color=black
Now i want to redirect same page after change currency.
Here is my code.
<?php if($this->getCurrencyCount() > 1): ?>
<span>Select Currency:</span>
<select name="custom-currency-selector" id="custom-currency-selector">
<?php foreach ($this->getCurrencies() as $_code => $_name): ?>
<option value="<?php echo $this->getSwitchCurrencyUrl($_code)?>"
<?php if($_code == $this->getCurrentCurrencyCode()): ?>
selected="SELECTED"
<?php endif; ?>>
<?php echo $_code ?>
</option>
<?php endforeach; ?>
</select>
<?php endif;

Change gender dropdown to radio button in magento

Today i started working in registration form in magento site. As you know by default it's having gender drop down. I need to change that to checkbox.
So far i went to register.phtml file, and tried to add <input type="radio" ...../> select files, but this didn't worked.
Did anyone know how to solve this !
please give me some suggestions to so this....
Do not forget the validation!
<div class="input-box">
<?php
$options = Mage::getResourceSingleton('customer/customer')->getAttribute('gender')->getSource()->getAllOptions();
$value = $this->getGender();
$_last = count($options);
$_index = 0;
?>
<?php foreach ($options as $option):?>
<?php if($option['value'] != ''): ?>
<input id="<?php echo $this->getFieldId('gender')?>-<?php echo $option['value'] ?>"
class="radio<?php if ($this->isRequired() && $_index == $_last - 1):?> validate-one-required<?php endif; ?>"
type="radio" title="<?php echo $option['label'] ?>"
value="<?php echo $option['value'] ?>" name="<?php echo $this->getFieldName('gender')?>"
<?php if ($option['value'] == $value) echo ' checked="checked"' ?>>
<label for="<?php echo $this->getFieldId('gender')?>-<?php echo $option['value'] ?>">
<?php echo $option['label'] ?>
</label>
<?php endif; ?>
<?php $_index++; ?>
<?php endforeach;?>
</div>
Magento uses widgets on registration form. In fact in template register.phtml you can see lines:
<?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
<?php if ($_gender->isEnabled()): ?>
<li><?php echo $_gender->setGender($this->getFormData()->getGender())->toHtml() ?></li>
<?php endif ?>
This particular widget can be found in template/customer/widget directory. So in order to change select into radio buttons, copy it (template) to your theme and modify, e.g.:
<div class="input-box">
<label><?php echo $this->__('Gender'); ?></label>
<?php $options = Mage::getResourceSingleton('customer/customer')->getAttribute('gender')->getSource()->getAllOptions();?>
<?php $value = $this->getGender();?>
<?php foreach ($options as $option):?>
<input type="radio" name="<?php echo $this->getFieldName('gender')?>" value="<?php echo $option['value'] ?>"<?php if ($option['value'] == $value) echo ' selected="selected"' ?> /><?php echo $option['label'] ?>
<br />
<?php endforeach;?>
</div>
Hope didn't make any typo.

Resources