2012-02-19 7 views
-2
  • もしEDITED * *

こんにちは、私はPHPに新しいですし、Joomlaのモジュールのためのハックを把握しようとしています。他ENDIFのPHPのトラブル

何らかの理由で 'else'ステートメントが機能していません。私は理由を理解していません...

 <? if (KRequest::get('get.view', 'string') != 'event' || isset($module)) : ?> 
     <? $desc = $event->description; ?> 
     <? $desc = preg_replace("/\{[^\)]+\}/","", $desc) ?> 

     <? $desc = substr(strip_tags($desc, '<p><ul><li><b><i><strong><br>'), 0, 180)?> 
     <? if (strlen($desc) == 180) $desc .= '...'; ?> 
     <div itemprop="description" class="ohanah-event-short-description"> 
     <?=$desc?> 
     </div> 
    <? else : ?> 
    <!--here is where I want to end it --!>No description. 


     <? 
     $description = $event->description; 

     // Create temporary article 
     $item =& JTable::getInstance('content'); 
     $item->parameters = new JParameter(''); 
     $item->text = $description; 

     $joomlaVersion = JVersion::isCompatible('1.6.0') ? '1.6' : '1.5'; 
     if ($joomlaVersion == '1.5') { 
      $results = JFactory::getApplication()->triggerEvent('onPrepareContent', array (&$item, &$params, 1)); 
     } else { 
      $dispatcher = JDispatcher::getInstance(); 
      JPluginHelper::importPlugin('content'); 
      $results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$params, 1)); 
     } 
     $description = $item->text;  
     ?> 
     <div style="display:none"><span itemprop="name"><?=$event->title?></span></div> 
     <div itemprop="description" class="full-description"> 
     <?=$description?> 
     </div> 
    <? endif ?> 
+0

ここには「endif」はありません。これはすべて関連するコードだと確信していますか? – kapa

+0

「動作していません」は、期待されている動作と観察された動作の説明ではなく、あなたの投稿のタイトルはまったくごみです。 –

答えて

0

中括弧が間違っています。このようなものでなければなりません($ descを必要とする場所についてはわかりません):

if (strlen($desc) == 180) 
{ 
    $desc .= '...'; 
    echo '<div itemprop="description" class="short-description">'; 
    echo $desc; 
    echo '</div>'; 
} 
else 
{ 
    echo 'No description.'; 
} 
+0

大変感謝しています!完璧に動作します! :) – Sarah

0

それはあなたのコードですか?あなたは終わりの端を必要とします。

しかし、中括弧の構文を考えてみると、エラーを避ける方がずっと簡単です。

すべての行がPHPの場合、<?php?>をすべての行に含める必要はありません。複数の行にまたがってphpブロックを開いたままにすることができます。

<?php 
if (...) { 
    // stuff 
} else { 
    // other stuff 
} 
?> 

私はあなたのコードの流れを理解していれば、それはこの

<?php 
if (KRequest::get('get.view', 'string') != 'event' || isset($module)) { 
    $desc = $event->description; 
    $desc = preg_replace("/\{[^\)]+\}/","", $desc) 

    $desc = substr(strip_tags($desc, '<p><ul><li><b><i><strong><br>'), 0, 180) 
    if (strlen($desc) == 180) { 
     $desc .= '...'; 
    } 
?> 
    <div itemprop="description" class="short-description"> 
<?php echo $desc; ?> 
    </div> 
<?php } else { ?> 
    No description. 
<?php } ?> 
+0

私はあなたのグラバターが好きです。 –

+0

あなたはそれが正しいと思いますか?しかし、我々はJoomlaのコーダーについて話している。 Ewww! * Shudder * – PaulM

+0

申し訳ありませんが、私は元のコードから完全なセクションを逃しました。 完全なことがあります.... – Sarah

0

ようになり、私はちょうど種類の推測だけど、あなたが伝えるためにIF文でセミコロンを削除する必要はありませんパーサにはまだelseブロックがある、つまり

if (strlen($desc) == 180) $desc .= '...' 
+0

いいえ、論理を勉強することから、「else」は最初の 'if'と一緒に行なわれるはずです。 2番目の 'if'ちょうど(壊れた)長い記述を切り詰めて肯定する試み(切り捨てることを忘れている) –

関連する問題