>

내가 제거한 양방향 D9 사이트입니다.dir = rtl내 테마에서html.html.twigif 문을 사용하면 정상적으로 작동합니다. MS 브라우저 버그 무시를 피하기 위해 그렇게했습니다.위치 : 끈적 끈적한html 또는 body 태그에 dir = "rtl"이 있으면 CSS에서. 나는 그렇게했다html.html.twig이 코드로 :

{% if html_attributes['dir'] == 'rtl' %}
  <html{{ html_attributes|without('dir') }}>
{% elseif html_attributes['dir'] == 'ltr' %}
  <html{{ html_attributes }}>
{% endif %}

이제 사이트가 영어 (또는 LTR 언어) 인 경우 html 태그에는 dir = "ltr"속성이 있지만 dir이 rtl 인 경우에는 html 태그가 없습니다. 잘 작동하고 있습니다.

나는dir에 속성page.html.twig다음과 같이 # page-warpper :

{% apply spaceless %}
{% if html_attributes['dir'] == 'ltr' %}
  <div id="page-wrapper" dir="ltr"> 
{% else %}
  <div id="page-wrapper" dir="rtl"> 
{% endif %}
{% endapply %}  
  <div id="page"> ......

작동하지 않습니다. 사이트의 방향/언어에 관계없이 rtl 방향 만 # page-wrapper에 적용됩니다. 들여 쓰기 문제 일지 모르지만 여전히 변경 사항이 없다고 생각하면서 공백없는 필터를 나중에 추가했습니다.

나는 또한 이것을 시도했지만 작동하지 않았다 :

{% if html_attributes['dir'] %}
  <div id="page-wrapper" dir="ltr"> 
{% else %}
  <div id="page-wrapper" dir="rtl"> 
{% endif %}

의견을 보내 주셔서 감사합니다. 그리고 확실히돌진 cr각 나뭇 가지 편집 후.


  • 답변 # 1

    변수 html_attributes 페이지 템플릿에서 사용할 수 없습니다. 사용 가능하게하려면이 코드를 template_preprocess_html ()에서 페이지 전처리 후크로 복사하십시오.

    use Drupal\Core\Template\Attribute;
    /**
     * Implements hook_preprocess_page().
     */
    function mytheme_preprocess_page(&$variables) {
      $variables['html_attributes'] = new Attribute();
      $language_interface = \Drupal::languageManager()->getCurrentLanguage();
      $variables['html_attributes']['lang'] = $language_interface->getId();
      $variables['html_attributes']['dir'] = $language_interface->getDirection();
    }
    
    

관련 자료

  • 이전 drupal - Azure SDK 설치 및 사용
  • 다음 drupal - 동일한 경로를 사용하여 두보기에서 승리하는보기를 어떻게 변경합니까?