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%'));
    
    }