2017-01-22 7 views
1

私はこれを試しましたが、何か不足していると思います。 このコードで何が問題になっていますか?私はそれを理解することはできません。誰でも助けることができるだろうか? 私はちょうど(年間/毎月のメンバーシップの)カテゴリータイトルを1回だけ表示したいだけですが、これはすべてのオプションで表示されます。私のスクリーンショットをご覧ください。これは主に各ループのためであることを理解していますが、移動して試してみると、私はホームページにリダイレクトされます。私はそれを正しく書いていないかもしれません。どんな助けもありがとうございます。foreachループでタイトルを1回だけ表示する

このオプションはすべてのオプションで表示されますが、これは私が望むものではありません。 enter image description here

<?php 
 
/** 
 
* @package  Joomla 
 
* @subpackage  Membership Pro 
 
* @author   Tuan Pham Ngoc 
 
* @copyright  Copyright (C) 2012 - 2016 Ossolution Team 
 
* @license  GNU/GPL, see LICENSE.php 
 
*/ 
 
// no direct access 
 
defined('_JEXEC') or die; 
 
?> 
 
<ul class="osm-upgrade-options"> 
 
    <?php 
 
    $upgradeOptionCount = 0; 
 
    $display_title = true; 
 
    foreach ($this->upgradeRules as $rule) 
 
    { 
 
     $checked = ''; 
 
     if ($upgradeOptionCount == 0) 
 
     { 
 
      $checked = ' checked="checked" '; 
 
     } 
 

 
     $upgradeOptionCount++; 
 
     $upgradeToPlan = $this->plans[$rule->to_plan_id]; 
 
     $symbol = $upgradeToPlan->currency_symbol ? $upgradeToPlan->currency_symbol : $upgradeToPlan->currency; 
 

 
     $taxRate = 0; 
 
     if ($this->config->show_price_including_tax) 
 
     { 
 
      $taxRate = OSMembershipHelper::calculateMaxTaxRate($rule->to_plan_id); 
 
     } 
 
     $db = JFactory::getDbo(); 
 
     $query = $db->getQuery(true); 
 
     $query->select('a.title') 
 
     ->from('#__osmembership_categories AS a') 
 
     ->innerJoin('#__osmembership_plans AS b ON a.id = b.category_id') 
 
     ->where('b.id = ' . $rule->to_plan_id); 
 
     $db->setQuery($query); 
 
     $categoryTitle = $db->loadResult(); 
 

 
     if ($categoryTitle == "Annual Membership Plan" && $display_title) { 
 
      echo 'Annual Membership'; 
 
      $display_title=false;   
 
     } 
 
     
 
     else { 
 
      echo 'Monthly Membership'; 
 
     } 
 

 
     ?> 
 
     <li class="osm-upgrade-option"> 
 
      <input type="radio" class="validate[required]" id="upgrade_option_id_<?php echo $upgradeOptionCount; ?>" name="upgrade_option_id" value="<?php echo $rule->id; ?>"<?php echo $checked; ?> /> 
 
      <label for="upgrade_option_id_<?php echo $upgradeOptionCount; ?>"><?php JText::printf('OSM_UPGRADE_OPTION_TEXT', $this->plans[$rule->from_plan_id]->title, $upgradeToPlan->title, OSMembershipHelper::formatCurrency($rule->price * (1 + $taxRate/100), $this->config, $symbol)); ?></label> 
 
     </li> 
 
     <?php 
 
    } 
 

 

 
    ?> 
 
</ul>

答えて

1

あなたは(あなたのデータは、foreachループ内にある場合)

<?php 
/** 
* @package  Joomla 
* @subpackage  Membership Pro 
* @author   Tuan Pham Ngoc 
* @copyright  Copyright (C) 2012 - 2016 Ossolution Team 
* @license  GNU/GPL, see LICENSE.php 
*/ 
// no direct access 
defined('_JEXEC') or die; 
?> 
<ul class="osm-upgrade-options"> 
    <?php 
    $upgradeOptionCount = 0; 
    $display_annual = true; 
    $display_month = true; 

    foreach ($this->upgradeRules as $rule) 
    { 
     $checked = ''; 
     if ($upgradeOptionCount == 0) 
     { 
      $checked = ' checked="checked" '; 
     } 

     $upgradeOptionCount++; 
     $upgradeToPlan = $this->plans[$rule->to_plan_id]; 
     $symbol = $upgradeToPlan->currency_symbol ? $upgradeToPlan->currency_symbol : $upgradeToPlan->currency; 

     $taxRate = 0; 
     if ($this->config->show_price_including_tax) 
     { 
      $taxRate = OSMembershipHelper::calculateMaxTaxRate($rule->to_plan_id); 
     } 
     $db = JFactory::getDbo(); 
     $query = $db->getQuery(true); 
     $query->select('a.title') 
     ->from('#__osmembership_categories AS a') 
     ->innerJoin('#__osmembership_plans AS b ON a.id = b.category_id') 
     ->where('b.id = ' . $rule->to_plan_id); 
     $db->setQuery($query); 
     $categoryTitle = $db->loadResult(); 

     if ($categoryTitle == "Annual Membership Plan") { 
      if($display_annual) 
      { 
       echo 'Annual Membership';  
       $display_annual=false; 
      } 
     } 

     else{ 
      if($display_month) 
      { 
       echo 'Monthly Membership'; 
       $display_month=false; 
      } 
     } 

     ?> 
     <li class="osm-upgrade-option"> 
      <input type="radio" class="validate[required]" id="upgrade_option_id_<?php echo $upgradeOptionCount; ?>" name="upgrade_option_id" value="<?php echo $rule->id; ?>"<?php echo $checked; ?> /> 
      <label for="upgrade_option_id_<?php echo $upgradeOptionCount; ?>"><?php JText::printf('OSM_UPGRADE_OPTION_TEXT', $this->plans[$rule->from_plan_id]->title, $upgradeToPlan->title, OSMembershipHelper::formatCurrency($rule->price * (1 + $taxRate/100), $this->config, $symbol)); ?></label> 
     </li> 
     <?php 
    } 


    ?> 
</ul> 
+0

ありがとう@Bをフラグ変数を使用してそれを行うことができます。しかし、どうすればelse文を追加できますか?私は試してみましたが、追加すると複数回表示され続けます。 –

+0

@Dilum Jayawardhanaがあなたのコードを更新するので、必要なものを手に入れることができます –

+0

オリジナルコードが更新されました。 –

関連する問題