真的很快速和简单的问题,但我找不到一个合适的答案 - 什么是从控制器传递数据到Magento块的最佳方法.
如果它有所不同,我正在加载布局如下:
$this->loadLayout(array('default', 'myModule_default'));
$this->_initLayoutMessages('customer/session')
->_initLayoutMessages('catalog/session')
->renderLayout();
Run Code Online (Sandbox Code Playgroud)
我应该补充一点,我一直在使用注册表如下:
在控制器中:
Mage::register('data', $data);
Run Code Online (Sandbox Code Playgroud)
在块中:
$data = Mage::registry('data');
Run Code Online (Sandbox Code Playgroud)
不知道这是否是最好的方法.
我正在尝试为在magento主页中弹出时事通讯的用户设置一个cookie
当用户订阅时事通讯时,我在magento主页上有一个popletter订阅时事通讯选项卡设置为时事通讯不会在下次访问时显示
这是代码如何设置cookie
<?php
$value=$_POST['newslettertext'];
setcookie("EmailCookie", $value);
setcookie("EmailCookie", $value , time()+86400,"/");
function gotopage($url)
{
echo "<script language=\"javascript\">";
echo "window.location = '".$url."'; \n";
echo "</script>";
}
$url="http://abc.com";
gotopage($url);
?>
Run Code Online (Sandbox Code Playgroud)
上面的代码设置了一个coookie
订阅后,用户重定向到同一页面,我检查是否设置了cookie,然后执行弹出代码,否则会出现非弹出窗口
但它仍然显示了订阅后的弹出窗口
我正在使用此代码来检查cookie
<?php
if(!isset($_COOKIE['EmailCookie'] ) )
{
//popup code goes here
}
?>
Run Code Online (Sandbox Code Playgroud)
哪里做错了?
我有一个程序,我们用它通过API将我们的Magento商店连接到我们的后端库存控制系统.目前它所做的是查询Magento API以获取处于Pending状态的所有订单,将它们插入后端系统,然后将其状态设置为Magento中的Processing.由于我们的库存系统存在限制,我们一次只能插入有限数量的订单.我们通过if循环运行整个过程来控制它,如下所示(仅供参考,代码已被编辑下来,仅显示此问题的关键部分):
//The maximum number of orders to download
$iMaxCount = 10 ;
try {
$proxy = new SoapClient($wsdl_url);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
$sessionId = $proxy->login($login, $password);
//fetch the pending orders from the site
$field = array(array('status'=>array( 'pending') ));
$arr = $proxy->call($sessionId, 'sales_order.list', $field);
$iCnt = 0;
foreach($arr as $key => $value){
//only down up to the max count
if ($iCnt < $iMaxCount) {
[... Do the updating and insertion part of …Run Code Online (Sandbox Code Playgroud) 在magento我试图获得当前的主题或包名但没有找到任何东西.我使用了getSkinUrl('),但它的返回皮肤路径不是包或主题名称.请帮助我如何获取主题或包名称.
我正在编写一个Magento Admin扩展,其中包含一些ajax回调.到目前为止,我一直在回应json,我正在通过ajax调用反馈控制器中的一个简单的echo语句.它"工作",但我在我的日志文件中得到了一堆这样的错误:
2010-12-14T15:37:05 + 00:00调试(7):标题已发出:
[0] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Response/Http.php:44 [1] /home/simplifiedsafety/www/store/lib/Zend/Controller/Response/Abstract.php:727 [2] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Response/Http.php:75 [3] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Controller/Varien/Front.php:188 [4] /home/simplifiedsafety/www/store/app/code/core/Mage/Core/Model/App.php:304 [5] /home/simplifiedsafety/www/store/app/Mage.php:599 [6] /home/simplifiedsafety/www/store/index.php:104
我想要避免这种情况,我需要通过某种方式将其推出.有人可以给我一点指导吗?
正如标题所暗示的,我想检查Magento生成的完整配置XML树.
我查看了配置对象,看不到这样做的方法.
如何才能做到这一点?
有没有办法为Magento搜索的"无结果"视图定义自定义模板?
问题是如果没有搜索结果我想使用1 col布局,如果匹配则我想使用2 col.
干杯!
我想覆盖/扩展Mage_Core_Encryption_Model来处理旧版密码.
我正在将旧网站数据迁移到magento.我的旧网站加密方法是Sha-1.但magento在核心加密方法中使用md5 +文本.我已手动更改核心模块并正确迁移但现在我想为此创建一个自定义模块(迁移后无需加密,迁移后通过sha-1覆盖md5方法)
如何为覆盖我已更改的核心代码创建自定义模块?
我有一个静态块,我想通过脚本更新,通过cron运行.
我已经找到了如何以编程方式创建或检索块,但不知道如何编辑现有块.
这适用于检索块:
// Retrieve the layout object
$layout = Mage::getSingleton('core/layout');
// Generate a CMS block object
$block = $layout->createBlock('cms/block');
// Set the block ID of the static block
$block->setBlockId('my_block_id');
// Write the static block content to screen
echo $block->toHtml();
Run Code Online (Sandbox Code Playgroud)
我想我在这里缺少一些简单的东西,但是在这个块上执行setContent()然后save()只会导致"Invalid method Mage_Cms_Block_Block :: save"
magento是否缓存没有magento文件夹和文件?我在magento根文件夹中有一些wordpress博客,magento会尝试缓存它们吗?
我试图customer_save_after在客户尝试创建新帐户或编辑其帐户时使用事件(基于某些自定义注册字段)为客户创建或更新默认送货地址.
这是Observer模型代码的一部分:
...
$customer = $observer->getEvent()->getCustomer();
if ($customer->getId() && $otherConditionIsValid){
$dataShipping = array(
'firstname' => $someFixedFirstName,
'lastname' => $someFixedLastName,
'street' => array($someFixedStreetLine),
'city' => $someFixedCity,
'region' => $someFixedState,
'region_id' => '',
'postcode' => $someFixedZipcode,
'country_id' => $someFixedCountry,
'telephone' => $someFixedTelephone,
);
$customerAddress = Mage::getModel('customer/address');
if($defaultShippingId = $customer->getDefaultShipping()){ //if customer already has default shipping address
$customerAddress->load($defaultShippingId);
}
$customerAddress->setData($dataShipping)
->setCustomerId($customer->getId())
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
$customer->addAddress($customerAddress); #setting Shipping Address to be added/updated
//When i try to use below commented code, script gets called …Run Code Online (Sandbox Code Playgroud) magento ×12
php ×6
ajax ×1
api ×1
ccavenue ×1
magento-1.4 ×1
model ×1
static-block ×1
variables ×1