2012-02-19 2 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's здесь». Вы уверены, что это все соответствующий код? – 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

Это все ваш код? Вам нужен заключительный endif.

Сказанное, рассмотрим синтаксис фигурного скобки, мне гораздо легче избежать ошибок.

На стороне примечания вам не обязательно иметь <?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

Мне нравится ваш gravatar, даже если это _is_ rip-off. –

+0

Вы бы так подумали? Но мы говорим о кодексе Joomla. Ewww! * Shudder * – PaulM

+0

Простите, я пропустил весь раздел из исходного кода. Полная вещь есть сейчас .... – Sarah

0

Я только отчасти угадывать, но вам не нужно, чтобы удалить точку с запятой в операторе IF сказать анализатор, что там еще есть какой-либо блок, то есть

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

Нет. Я считаю, что 'else' должен идти с _first_' if', от изучения логики. Вторая 'if' просто (сломанная) попытка усечения и префикса длинного описания (она забывает обрезать) –

Смежные вопросы