Php Magento中的动态条款和条件
我使用Php Magento中的动态条款和条件,php,magento,Php,Magento,我使用Admin->Sales->Terms&Conditions创建了两个签出条款和条件。 如何根据结帐总额仅显示其中一个? 例如,如果总计少于2000美元,则显示第一个条款和条件。如果总计超过2000美元,则显示第二个。 第二个问题是如何在条款和条件文本中插入金额?筛选协议的代码位于Mage\u Checkout\u Block\u agreements类中: public function getAgreements() { if (!$this->hasAgreements
Admin->Sales->Terms&Conditions
创建了两个签出条款和条件。
如何根据结帐总额仅显示其中一个?
例如,如果总计少于2000美元,则显示第一个条款和条件。如果总计超过2000美元,则显示第二个。
第二个问题是如何在条款和条件文本中插入金额?筛选协议的代码位于Mage\u Checkout\u Block\u agreements类中:
public function getAgreements()
{
if (!$this->hasAgreements()) {
if (!Mage::getStoreConfigFlag('checkout/options/enable_agreements')) {
$agreements = array();
} else {
$agreements = Mage::getModel('checkout/agreement')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addFieldToFilter('is_active', 1);
}
$this->setAgreements($agreements);
}
return $this->getData('agreements');
}
这只返回允许的存储范围内的活动协议集合。模板文件调用此方法(checkout/onepage/agreements.phtml):
如果要按名称筛选在admin中配置的条款和条件,则需要更改Mage Checkout Block Agreements类中的getAgreements函数和Mage Checkout Helper数据类中的GetRequiredAgreementId函数
例如,如果您需要零售客户群的术语和批发客户群的术语,您可以在“管理”中的术语名称中使用“零售”和“批发”创建术语,然后执行以下操作,我们将根据名称筛选术语
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
if ($groupId == 1)
{
$agreements = Mage::getModel('checkout/agreement')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addFieldToFilter('is_active', 1)
->addFieldToFilter('name', array('like' => '%RETAIL%'));
}
如果第1组是零售组,请复制其他组的代码。对于遇到此解决方案的任何人,建议都是正确的,只是更改前端模板只会更改结帐时显示的条款和条件。您还需要通过mage/checkout/helper/data.php中的helper函数getRequiredAgreementId过滤要使用的术语。否则,您将显示正确的术语,但使用帮助器的提交函数逻辑将抱怨在您也更改帮助器函数之前,术语未得到满足。
$total = Mage::getSingleton('checkout/cart')->getQuote()->getGrandTotal();
$agreement_name = ($total < 2000) ? 'lt2000' : 'gt2000';
$agreements = Mage::getModel('checkout/agreement')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addFieldToFilter('is_active', 1)
->addFieldToFilter('name', $agreement_name);
}
<?php foreach ($agreements as $_a): ?>
....
$custom_vars = array('total'=>$total);
$filter = Mage::getModel('core/email_template_filter');
$filter->setVariables($custom_vars);
...
<?php echo $filter->filter($_a->getContent()) ?>
...
<?php echo nl2br($this->htmlEscape($filter->filter($_a->getContent()))) ?>
$groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
if ($groupId == 1)
{
$agreements = Mage::getModel('checkout/agreement')->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addFieldToFilter('is_active', 1)
->addFieldToFilter('name', array('like' => '%RETAIL%'));
}