2013-02-20 3 views
0

Я написал следующую функцию PHP, чтобы вернуть текущую категорию на основе URL-адреса сегмента 3.Expressionengine PHP-вызов

<?php 
$this->EE =& get_instance(); 
$seg3 = $this->EE->uri->segment(3); 
$categoriess = getCategory($seg3); 

function getCategory($string) 
    { 
    switch ($string) 
     { 
     case "test1": return '16'; 
     case "test2": return '52'; 
     case "test3": return '18'; 
     case "test4": return '29'; 
     case "test5": return '37'; 
     } 
    return '11'; 
    } 
?> 
<?php echo $categoriess; ?> 

Ну, функция выполняет задание и возвращает правильный номер. Проблема заключается в вызове возвращаемого числа в теге категории.

{exp:channel:entries channel=“news” dynamic=“no” category=”<?php echo $categoriess; ?>” orderby=“entry_date” disable=“member_data|trackbacks” sort=“desc” limit=“5”} 

Все выглядит правильно для меня, но это просто не работает ... я действительно ценю вашу помощь!

Спасибо!

+0

Wtf - это те цитаты? '" Test5 "', ''37''? Напишите как: 'case" test5 ": return 37;' – vikingmaster

+0

синтаксическая ошибка, неожиданный T_LNUMBER, если я удалю цитаты из возвращаемого значения – user2090983

+0

С какого времени предполагается, что нормальное целое число является ошибкой? – vikingmaster

ответ

0
<?php 
    function getCategory($string) 
    { 
     $data = array(
      "test1" => 16, 
      "test2" => 52, 
      "test3" => 18, 
      "test4" => 29, 
      "test5" => 37 
     ) ; 
     return (isset($data[$string])) ? $data[$string] : 11 ; 
    } 
    $this->EE =& get_instance(); 
    $seg3 = $this->EE->uri->segment(3); 
    $categoriess = getCategory($seg3); 
?> 
+0

Такая же проблема. Подробная страница с номером возвращена. – user2090983

+0

И что вы хотите отобразить? – vikingmaster

+0

Содержание страницы. Все дело в том, что если category = test1, то отображать только записи для этой категории. У меня есть индексная страница, отображающая основную категорию, но если URL-адрес похож на индекс/maincateogory/test1, отображаются только записи для категории test1 – user2090983

1

Проверьте порядок синтаксического анализа: Set "PHP Синтаксический Stage" к "Input" в настройках шаблона.

Значение по умолчанию - «Выход», и это хорошо работает, если вы хотите получить значение от короткого кода EE и сделать его доступным для PHP как переменной.

Но в этом случае вы хотите запустить функцию в PHP, а затем «подать» возврат в EE.

Так что в этом случае EE будет принимать «вход» от PHP, и это означает, что PHP Синтаксического Stage под Preferences для , что конкретный шаблон (не общие предпочтения или где-либо еще) должны быть установлены в Input.

Я вижу, что это старый вопрос, но я надеюсь, что кто-то будет использовать этот ответ в любом случае. Я просто потратил целый день на то, чтобы попытаться сделать что-то, что займет менее 5 минут, если бы я решил сначала проверить порядок разбора.

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