2016-09-14 4 views
0

나는 드루팔 (Drupal을 처음 사용하는데, 나는 그것을 아주 좋아한다. 나는 혼자서 그것을 배우고 있지만, 나는 지금 당장 문제에 봉착하고있다.드루팔 (Drupal 8 - 링크에 클래스 추가하기

제목과 링크 목록을 표시하는 맞춤 블록을 만들었습니다. 따라서 해당 블록의 유일한 필드는 유형 링크입니다. 내 꼬리말 영역을위한 블록입니다. 따라서 사용자가 클릭하면 새 탭에 새 웹 사이트가 열립니다.

난 그냥이 블록 유형에 대한 HTML 출력을 변경하려면, 그래서 나는이 주제 제안 꺼내 : 필드 - 블록 - 내용 - 필드 링크 - 바닥 글 - links.html.twig을

내 문제는 모든 <a> 태그에 클래스를 추가하는 방법입니다.

'링크 클래스'모듈을 사용해 보았습니다. 그것은 버그가 있습니다. 모듈을 설치하기 전에 이미 css에있는 클래스 만 읽습니다. 모듈을 설치 한 후에 생성 된 새로운 클래스는 읽지 않습니다. 나는 여러 가지 일을 시도하고 캐시를 여러 번 지워 봤지만 이상했다. 모듈없이 클래스를 추가하는 더 좋은 방법이 있어야합니다.

누구나 나를 도울 수 있고 내 <a> 태그에 수업을 추가하는 가장 좋은 방법을 보여줄 수 있습니까?

감사합니다 :)

여기 그것은 당신이 사용자 정의 블록을 구축하는 방법에 따라 달라

{% if label_hidden %} 
    {% if multiple %} 
    <div{{ attributes }}> 
     {% for item in items %} 
     <div{{ item.attributes }}>{{ item.content }}</div> 
     {% endfor %} 
    </div> 
    {% else %} 
    {% for item in items %} 
    {{ item.content }} -------------> add class here 
    {% endfor %} 
    {% endif %} 
{% else %} 
    <div{{ attributes }}> 
    <div{{ title_attributes }}>{{ label }}</div> 
    {% if multiple %} 
     <div> 
    {% endif %} 
    {% for item in items %} 
     <div{{ item.attributes }}>{{ item.content }}</div> 
    {% endfor %} 
    {% if multiple %} 
     </div> 
    {% endif %} 
    </div> 
{% endif %} 

답변

0

의 기본 템플릿입니다. 하지만 일부 수업을 추가하기 위해 새 템플릿을 만드는 것은 다소 과잉이라고 말했듯이 말입니다. 가 https://drupal.stackexchange.com/questions/144992/how-do-i-create-a-link

이 서로 다른 상황에 대한 약간 다른 답변, 그래서 자신을보고 무슨 일이 당신을 맞는 :

그래서 여기에 그들에게 클래스와 같은 속성을 추가하는 방법도 좋은 일반적으로 링크를 만드는 방법에 대한 답변입니다 최고의 케이스.

3

교체 {{item.content}} 하드 링크 :

<a href="{{ item.content['#url']|render }}" {% if item.content['#options']['external'] %} target="_blank" {% endif %} class="some class here">{{ item.content['#title'] }}</a> 

또는 당신은 당신이 클래스 옵션을 병합 할 수 있습니다 원하는 경우 :

{{ item.content|merge({'#options': {'attributes': {'class': ['some', 'class', 'here']}}}) }} 
0

나도 문제가 링크를 연장해야 Drupal 8에서. 드루팔 (Drupal은 시스템 링크 값을 렌더링하려고합니다.

내 시도는 대개 다음 패턴으로 이루어집니다. 1. 필드를 사용할 때 나뭇 가지를 재정 의하여보기에 클래스를 추가합니다.

  1. 그럴 수 없다면 테마 훅을 확인하고 속성을 통해 클래스를 추가하십시오. (Chrome Drupal 템플릿 도우미 확장이 도움이됩니다.) 클래스를 상위 UL에 추가 할 수 있었지만 A는 추가 할 수 없었습니다.

  2. 나뭇 가지 템플릿의 키를 확인하고 {{var.name [#url]}}을 명시 적으로 사용하여 렌더링합니다. (부트 스트랩 드루팔 테마는 menu.html.twig에서이 작업을 수행합니다!) 예 :

     a href="{{ item.url }}" class="dropdown-toggle" data-target="#" data-toggle="dropdown">{{ item.title }}
  3. 이 3 개 시도가 실패하면 ...Javascript를 통해 속성을 추가합니다.

    jQuery ('. 주석 금지'). parent(). addClass ('list-unstyled');

나는 노드 링크에 클래스를 추가 (로그인이나 의견 게시 등록) node.html.twig에서을 시도하고 오류가 표시되었다하십시오 #lazy_builder 콜백 인 경우

$variables['content']['links']['#attributes']['class'][] = 'list-unstyled'; 

지정된 속성은 존재할 수 없습니다. 모든 속성은 #lazy_builder 콜백에 의해 생성되어야합니다. #attributes 속성을 지정했습니다. Drupal \ Core \ Render \ Renderer-> doRender()

1

PHP를 사용하여 html 렌더링 요소를 만드는 것을 선호하는 사람들을 위해. 매우 일반적인 링크 :

$elements[$delta] = [ 
    '#type'  => 'link', 
    '#title'  => $value, 
    '#url'  => Url::fromUri('mailto:' . $value), 
    '#attributes' => [ 
     'class' => ['myClass'] 
    ] 
    ]; 
관련 문제