템플릿의 첫 페이지인지 확인하십시오.


14

Drupal 8 테스트 웹 사이트의 첫 페이지에있을 때 내용을 표시하려고하지만 모든 페이지에 내용이 표시됩니다.

{% if front_page %}
  <header role="banner">
    {% if logo %}
      <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home">
        <img src="{{ logo }}" alt="{{ 'Home'|t }}"/>
      </a>
    {% endif %}
    <h1 style="color:black">TESTTESTTESTESTAET</h1>
<h1>test</h1

    {{ page.header }}
  </header>
{% endif %}

왜 이것이 작동하지 않으며 어떻게 작동시킬 수 있습니까?

답변:


24

찾고있는 변수는 is_front다음과 같습니다.

{% if is_front %}

템플릿에 사용 가능한 변수는 .html.twig 파일 상단에 문서화되어 있지만 모든 템플릿에 사용 가능한 기본 변수 세트도 있습니다 (모든 단일 템플릿에 문서화되어 있지는 않음). _template_preprocess_default_variables () 에서 찾을 수 있습니다 .


고마워요! 이 if 문 뒤에 {{elseif}}를 추가하는 방법이 있습니까?
Stefan

예, Twig 문서에 자세한 내용이 있습니다. twig.sensiolabs.org/doc/tags/if.html
Cottser

21

$variables['is_front']그렇지 않은 템플릿 을 제공하려는 경우 관련 전처리 기능에 추가 할 수 있습니다.

function themename_preprocess_menu(&$variables) {
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    $variables['is_front'] = FALSE;
  }
}

그것은 동일한 방식으로 이루어집니다 template_preprocess_page 를 들어 page.html.twig.

여기에 같은 대답


1
"is_front는"html.html.twig에서 기본적으로 사용할 수 없습니다 이것은, template_preprocess_html에서 나를 위해 유용
ben.hamelin

url.path.is_front캐시 컨텍스트로 추가해야한다고 생각합니다 . 이 의견을 참조하십시오 .
Andy

4

사용중인 템플릿이 page.html.twig라고 가정하면 찾고자하는 변수는 is_front; 다음 코드로 front_page초기화 된 첫 페이지의 URL을 포함합니다 template_preprocess_page().

$variables['front_page'] = \Drupal::url('<front>');

다른 템플릿 파일의 경우 Drupal은 사용자가 첫 페이지를 방문하고 있는지 알려주는 변수를 제공하지 않습니다. 에서 사용한 코드와 유사한 코드를 사용하여 사용 template_preprocess_page()중인 템플릿의 전처리 기능에서 해당 변수를 설정할 수 있습니다.

function mymodule_preprocess_HOOK(&$variables) {
  // An exception might be thrown.
  try {
    $variables['is_front'] = \Drupal::service('path.matcher')->isFrontPage();
  }
  catch (Exception $e) {
    // If the database is not yet available, set the default value.
    $variables['is_front'] = FALSE;
  }  
}

HOOK템플릿 유형 (예 : field.hmtl.twig 템플릿의 필드)으로 교체하십시오 .


4

root_path를 사용하여 html.html.twig에서 직접 가져올 수 있습니다. 본문 클래스를 설정하기 위해 이미 31 행에 출력됩니다.

{root_path %가 아닌 경우 %}

암호

{% endif %}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.