dougu5886 2015-03-26 07:04
浏览 30

在Magento中使用PHP函数中的include方法

Let's keep it simple so I have my code in View.phtml to display javascript element

    $Abowl = '<p id="finalprice"></p>';
    echo $Abowl; 

And now i want to pass this to another PHP name's DATA.php, I tried but it's not working

 public function formatPrice($price)
{
    include'view.phtml';
    return $this->getQuote()->getStore()->formatPrice($Abowl); 
}

UPDATE 1: I tried something like this :

public function formatPrice($price)
{
    require_once(Mage::getBaseDir() . '\app\design\frontend
eighborhood\default\template\catalog\product\view.‌​phtml');
    return $this->getQuote()->getStore()->formatPrice($Abowl); //this is the source
}

UPDATE 2 : I had asked a question which said DATA.php do not accept any outsource variable in here : How can I get access to modify this price function in Magento Does it affect me?

UPDATE 3 : I have modified the function under \magento\js\varien\product.js in order to satisfy my client's requirement. It works fine, the discount will apply due to the users information from our database. enter image description here

But when the customer add an item to cart, it only shows the original price which is $549.47 in this example.

enter image description here

Therefore, i want to pass the javascript result to the DATA.php as well since It is contain the formatPrice function which apply to the shopping cart section

Here's part of my javascript codes(\magento\js\varien\product.js) which generate the discounted price:

var subPrice = 0; //is the price inside the option
            var subPriceincludeTax = 0;
            var discountRate = discountRateUrl; //discount base on database
            var price = priceUrl;//get the product price
            var discountedPrice = price*discountRate; // price * ourdiscount
            //var discountedSubPrice = subPrice*((100-test)/100); // custom option addition price * ourdiscounted prices
            //console.log(discountedPrice); //display the prices as int
            //console.log(discountedSubPrice);
            //console.log(test);
            Object.values(this.customPrices).each(function(el){
                if (el.excludeTax && el.includeTax) {
                    subPrice += parseFloat(el.excludeTax); // use the var factor && this will affect the price when changing option *important
                    subPriceincludeTax += parseFloat(el.includeTax);

                } else {
                    subPrice += parseFloat(el.price);
                    subPriceincludeTax += parseFloat(el.price);

                }
                var finalprice = (subPrice*discountRate+discountedPrice);//checking if getting the php
                var fomattedprice = finalprice.toFixed(2); //Convert a number into a string, keeping only two decimals
                console.log(finalprice); //tester of the final prices
                console.log(discountRate);//tester discount rate in string
                document.getElementById("finalprice").innerHTML = "<small>Your price is </small>"+ "$" + fomattedprice + "*" +"<br/><small><em>*Discount will be applied during check out</em></small>";
          });

You can ignore these bunch of codes, i just want to know where should i pass my document.getElementById("finalprice"); result in order to show the discounted price.

The follow is my view.html for reference:

  <?php 
        //SQL to identify ones email and discount
        $prices = Mage::helper('core')->currency($_product->getPrice(), $formatPrice, $html);
        echo $this->getChildHtml('product_type_data');
        if(Mage::getSingleton('customer/session')->isLoggedIn()) {
        $customerData = Mage::getSingleton('customer/session')->getCustomer();

        $conn = Mage::getModel('core/resource')->getConnection('core_read');

        //need to change this sql statment to other table, took up and sl.is_active = 1 for test only
        //it won't work by now because method is changed and not connecting to the right DB table
        $sql = 'select sl.discount_amount, scg.customer_group_id, sl.stop_rules_processing from salesrule sl
                join salesrule_customer_group scg on scg.rule_id = sl.rule_id
                join customer_entity ce on ce.group_id = scg.customer_group_id
                where ce.email = "'.$customerData->getemail().'" 
                order by sl.discount_amount desc';
        //and sl.is_active = 1

        //'select sl.discount_amount from salesrule sl 
                //  join salesrule_customer_group scg on scg.rule_id = sl.rule_id
                //  join customer_entity ce on ce.group_id = scg.customer_group_id
                //  where ce.email = "'.$customerData->getemail().'";';

        $results = $conn->fetchAll($sql);

        $Abowl = '<p id="finalprice"></p>';
        echo $Abowl; //only applied when not logged in

        $discountRate = 1;
        foreach ($results as $result)
        {   

            $currentRate = $result['discount_amount'];
            //print_r($currentRate);
            $discountRate = $discountRate*(100 - $currentRate)/100;

            if($result['stop_rules_processing']==1){
                break;
            }

        }

        }   ?>
  • 写回答

1条回答 默认 最新

  • doutu4335 2015-03-26 07:11
    关注

    you can do this by the folloeing code

    require_once(Mage::getBaseDir() . 'path to your file');
    

    Mage::getBaseDir() this will give you the magento base directory url

    评论

报告相同问题?

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测