ExpressionEngine -> Включение шаблона - PullRequest
0 голосов
/ 28 марта 2012

Код шаблона ExpressionEngine:

<div class="container_16">
  <div class="grid_16">
{if "{segment_1}" == "home"}
  {embed="include/title" title="welcome"}
{if:elseif "{segment_1}" == "login"}
  {embed="include/title" title="login"}
{if:else}
<?php
  if(isset($_SESSION['loggedin'])) {
    if($_SESSION['loggedin']) {
?>
      {embed="include/title" title="welcome"}
<?php
    } else {            
?>    
      {embed="include/title" title="login"}
<?php 
    }
  }
?>          
{/if}
  </div> <!-- grid_16 -->
</div> <!-- container_16 -->

Проблема, с которой я столкнулся в приведенном выше коде, заключается в том, что когда сегмент_1 пуст, Я хочу, чтобы он показывал шаблон заголовка со встроенным заголовком = логин, только если $ _SESSION ['loggedin'] не соответствует действительности.

Я ЗНАЮ , что переменная сеанса даже не установлена, поэтому она должна показывать заголовок шаблон с логином, но он не показывает ничего, кроме этого:

<div class="container_16">
  <div class="grid_16">

  </div> <!-- grid_16 -->
</div> <!-- container_16 -->

Если у меня есть home как сегмент_1, он показывает шаблон заголовка с заголовком вставки = welcome.

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 29 марта 2012

Разве вы не можете использовать переменные {logged_in} и {logged_out}?

В любом случае добавьте дополнительные условия:

{if "{segment_1}" == "home"}
  {embed="include/title" title="welcome"}
{if:elseif "{segment_1}" == "login" && logged_out}
  {embed="include/title" title="login"}
{if:else}
  {if logged_in}
    {embed="include/title" title="welcome"}
  {if:else}
    {embed="include/title" title="login"}
  {/if}
{/if}

В более старых версиях EE у меня были проблемы с условием if: else, не работающим с условным выражением logged_in, поэтому вам может потребоваться просто заменить на:

{if logged_in}
{/if}
{if logged_out}
{/if}

Если вам нужно использовать переменную сеанса, убедитесь, что в шаблоне включен PHP, а синтаксический анализ задан до EE. И вам нужно немного изменить условное выражение:

{if:elseif "{segment_1}" == "login" && "0" == "<?= (isset($_SESSION['loggedin'])) ? "1" : "0"; ?>"}

Хотя вам, возможно, удастся сойти с рук (вам нужно проверить, чтобы подтвердить):

... && <?= (isset($_SESSION['loggedin'])) ? true : false; ?>}
...