翻译yagendoo的复杂php代码

时间:2014-10-23 10:36:55

标签: php

<?php if( !empty($YagProduct->prices->salesPrice) ) :   ?>
<?php echo YagendooTmplGlobal::getProductPriceHtml($YagProduct); ?>

此代码来自Yagendoo Suite和Joomla for Eshops的插件。 这是我第一次看到类似的东西,我不知道如何调用它,在谷歌搜索5小时后我什么都没发现。我可以理解的是,$ YagProduct是一个全局类var,在类中有许多其他变量。 echo发布4个html div。我想删除其中的2个,所以我需要一些如何翻译得到回显的变量并获得它的值,以便我可以编辑它。

我试过了:

<?php 
$testvar= YagendooTmplGlobal::getProductPriceHtml($YagProduct);
print_r($testvar);
die();
?>

没有结果。有没有人知道如何翻译这个?

检查元素:

<div class="yagVmHomePriceWrap">

    <div class="PricesalesPrice" style="display : block;"></div>
    <div class="yagVmProdPriceAdditional">
        <div class="PricediscountAmount" style="display : block;"></div>
        <div class="PricepriceWithoutTax" style="display : block;"></div>
        <div class="PricetaxAmount" style="display : block;">
            <span class="PricetaxAmount"></span>
        </div>
        <div class="PricediscountedPriceWithoutTax" style="display : block;"></div>
    </div>
    <div class="yagVmFlyProdPriceOld"></div>

</div>

PHP:

<?php if( YagParams::get('showPrices') === '1' )    :   ?>
                            <div class="yagVmHomePriceWrap">
                                <?php if( !empty($YagProduct->prices->salesPrice) ) :   ?>


                                        <?php echo YagendooTmplGlobal::getProductPriceHtml($YagProduct); ?>

                                    <?php if( $YagProduct->prices->discountAmount != 0 )    :   ?>
                                        <div class="yagVmFlyProdPriceOld">
                                            <?php echo YagendooTmplGlobal::getProductOldPriceHtml($YagProduct); ?>
                                        </div>
                                    <?php endif; ?>
                                    <?php elseif( empty($YagProduct->prices->salesPrice) && YagParams::get('askPrice') === '1' ) : ?>
                                        <a class="yagVmCategoryAskQuestionLink" href="<?php echo $yagVmAskQuestionUrl; ?>" title="<?php echo YagLang::_('YAG_ASK_PRICE'); ?>">
                                            <?php echo YagLang::_('YAG_ASK_PRICE'); ?>
                                        </a>
                                <?php endif; ?>
                            </div>
                        <?php endif; ?>

1 个答案:

答案 0 :(得分:0)

可能是$testvar为NULL,在这种情况下,print_r不会显示任何内容,因此页面只会死()并且不会显示任何内容。

尝试使用var_dump()来回显它:

<?php 
  $testvar= YagendooTmplGlobal::getProductPriceHtml($YagProduct);
  var_dump($testvar);
  die();
?>

然后你可以看到你的$ testvar的确切内容,你将能够进一步调试。

使用爆炸

$exploded = explode(' ', $testvar);

从这里开始,$ explosion将是一个数组。如果你想继续删除第3和第5个位置,那么你的数组将是:

$exploded = Array
(
    [0] => 50,00
    [1] => EUR
    [2] => 25,00
    [3] => EUR
    [4] => 82,90
    [5] => EUR
    [6] => 9,35
    [7] => EUR
    [8] => 40,65
    [9] => EUR
)

因为数字和符号之间有空格。因此,当你从数组中消除时,你必须要小心。

unset($exploded[4]);
unset($exploded[5]);
unset($exploded[8]);
unset($exploded[9]);

这将取消设置位置4,5,8和9,因此您将删除数字和符号。 在此之后你只需要内爆...

$imploded = implode(' ', $exploded);

然后,echo $imploded;将产生:50,00€25,00€9,35€