Views 3을 사용하여 용어 및 노드가 포함 된 중첩 트리를 작성하는 방법


22

나는 이와 비슷한 것을 만들어야합니다 :

색상 (어휘)

  • 레드 (용어)
    • 어두운 (용어)
      • 노드 1
      • 노드 2
    • 빛 (용어)
      • 노드 3
      • 노드 4
  • 파란색 (용어)
    • 노드 5
    • 노드 6
  • 녹색 (용어)
    • 노드 7
    • 노드 8

(글 머리 기호는 들여 쓰기입니다.)
Drupal 7 및보기 3에서이를 수행 할 수있는 방법이 있습니까? 그렇지 않은 경우 다른 방법이 있습니까?


명확히하기 위해-아마도 귀하의 질문을 오해했을 것입니다-당신은 이와 같은 구조를 한 페이지에 표시하고 싶습니까?
Maciej Zgadzaj

1 페이지 만 예
iStryker

답변:


15

refino 덕분에 다음 모듈을 사용하여 멋진 솔루션을 찾았습니다.

아래에 설명이 있습니다.

  1. 먼저 새 분류 체계를 작성하십시오 ( "폴더"라고 함).
  2. 그런 다음 "폴더"분류법에 대한 용어 참조 필드를 사용하여 새 컨텐츠 유형 ( "요소"라고 함)을 작성하십시오.
  3. 새로운 "콘텐츠"보기를 작성하십시오 ( "요소보기"라고 함).
  4. 필드 표시를 선택하십시오
  5. 용어 참조 필드에 상황 별 필터 추가
  6. 새로운 "Taxonomy"보기를 작성하십시오 ( "폴더 트리"라고 함).
  7. 2 개의 필드를 추가하십시오 (용어 이름 및 용어 ID). 두 번째 필드는 표시에서 제외 할 수 있습니다
  8. 관계 : "부모"추가
  9. 세 번째 필드 (용어 ID)를 추가하고 상위 관계에 지정하십시오. 이 필드는 표시에서 제외 할 수 있습니다
  10. "트리 (인접 모델)"형식을 선택하고 매개 변수에서 정렬 된 목록 + 기본 필드 (첫 번째 ti), 상위 필드 (상위 관계에 할당 된 ti)를 ​​선택하십시오. 이제 모든 용어가 중첩 된 멋진 트리가 있어야합니다.
  11. 네 번째 필드 인 "Global : View"(Views Field View와 함께 제공)를 추가하고 "Element view"를 선택한 다음 Arguments 텍스트 필드에 Master add [tid]를 표시하십시오.

이 도움을 바랍니다

건배

iStryker 편집 : 이것이 내가 얻은 것입니다. 내가 변경 한 유일한 것은 Element View 를 테이블 뷰로 만들고 기본 (행 및 스트립) 클래스를 제거하는 것입니다.

iStryker의 최종 제품 이미지


이 의견에서 큰 도움이됩니다. VT 설정 드롭 다운에서 "Term ID"필드를 구분할 수 없기 때문에 필드 이름을 변경하고 싶을 수도 있습니다 (관리 제목).
Artur

이 답변은 저에게 90 %를 얻었습니다. 각 필드에서 기본 클래스를 제거해야했습니다. '요소보기'보기에서 테이블 클래스를 제거하십시오. 약간 테마
iStryker

콘텐츠보기에서 중복을 줄이는 단계를 추가했습니다. 또한 Global : View의 "인수"필드에 "컨텍스트 필터"라는 레이블이 지정되고 사용할 토큰은 "[! tid]"입니다.
othermachines

Taxonomy 대신 Organic Groups 로이 작업을 수행 할 수 있습니까?
IamOnStage

14

Drupal 7.8 및 Views 3 + Views Field에서 Include View를 사용하여 하나의 뷰를 다른 뷰에 중첩하여 세 개의 뷰를 만들었으며 결과가 첨부되었습니다. 여기에 이미지 설명을 입력하십시오

단계별 방법 :

  1. 어휘 "색상"을 작성하고 태그로 채 웁니다.

  2. 분류 노드의 색상을 새로 만듭니다. 색상- "노드 색상"이라고합니다.

2.1 형식 테이블, 설정 : 그룹화 필드 : 분류 용어 : 이름

2.2 고급 상황 별 필터 : 분류 용어 : 상위 용어

2.3 고급 관계 : 분류 용어 : 색상을 사용한 컨텐츠

2.4 필드 설정 : 분류 용어 : 용어 ID, 분류 용어 : 이름, (field_color) 내용 : 제목

2.5 필터 기준 : 분류 용어 : 어휘 (= 색상)

2.6 용어 ID, 분류 용어에 대해 "표시에서 제외"를 설정할 수도 있습니다. 이름

2.7 경로 설정 : / 색상 / %

2.8 결과 없음 동작 설정 : 전체 :보기 영역 (나중에 다시옵니다) 2.9 저장

3. 분류 노드의 색상을 새로 만듭니다. 색상- "노드 색상 2"라고 부릅니다.

3.1 형식 테이블, 설정 : 그룹화 필드 : 없음

3.2 고급 상황 별 필터 : 분류 용어 : 용어 ID

3.3 고급 관계 : 분류 용어 : 색상을 사용하는 컨텐츠

3.4 필드 설정 : 분류 용어 : 용어 ID, 분류 용어 : 이름, (field_color) 내용 : 제목

3.5 필터 기준 : 분류 용어 : 어휘 (= 색상)

3.6 용어 ID, 분류 용어에 대해 "표시에서 제외"를 설정할 수도 있습니다. 이름

3.7 경로 설정 : / 색상 노드 -2 / %

3.8 결과 없음 동작 설정 : 전역 : 없음

3.9 저장

돌아가서 "색상 노드"를 다시 편집하십시오.

4.1 결과 없음 동작 설정 : 전역 :보기 영역으로 이동하십시오.

4.2 삽입 할보기 설정 :보기 : nodes_of_colors2 표시 : 페이지

4.3 컨텍스트 필터 상속

4.4 저장

5 다시보기로 이동 (Type Term)

5.1 분류 노드의 새로운 뷰 생성 색상- "컬러 트리"라고 부릅니다.

5.1 형식 표, 설정 : 그룹화 필드 : 없음

5.2 고급 상황 별 필터 : 없음

5.3 고급 관계 : 분류 용어 : 상위 용어

5.4 필드 설정 : 분류 용어 : 용어 ID, 분류 용어 : 용어 ID, 분류 용어 : 이름,보기 :보기 포함 (보기 포함)

5.5 필터 기준 (1) : 분류 용어 : 어휘 (= 색상)

5.6 필터 기준 (2) : (부모) 분류 용어 : 용어

5.7 원하는 경우 용어 ID 및 포함보기 레이블에 대해 "표시에서 제외"를 설정할 수도 있습니다.

5.8 경로 설정 : / 색상 트리

5.9 결과 없음 동작 설정 : 없음

5.10 저장

... 그리고 이것이 마지막이되어야합니다.


"5.4 set fields ... view : include view"를 조금 더 설명 할 수 있습니다. 나는 어디서나 옵션을 볼 수 없습니다. 감사합니다
uwe

글을 쓰지 않아서 죄송합니다. Views 7.x-3.0-rc1 + Views Field 7.x-1.0-rc1
Refineo

알았어 고마워 내가 잘 그들의 문제 큐에 대한 몇 가지 지침에 따라 drupal.org/node/1171604
우베

와우,이 답변은 7 일 동안 엄청난 찬사를 받았습니다. @Refineo가 가장 자세한 답변을 제공했기 때문에 누군가 이것을 테스트 했습니까?
iStryker

이 연습을 다시 시도했지만 작동하지 않았습니다.
지난주이


3

URL에서 vid를 얻으려면 다음 코드를 사용하십시오.

$vid = $_GET['vid'];
$tid = 0;
$level = 0;
print taxonomy_tree($vid, $tid, $level);
function taxonomy_tree($vid, $tid = 0, $level) {
  $children = taxonomy_get_children($tid, $vid);
  $output = '';
  if ($children) {
    $output .= '<ul>'; 
    foreach ($children as $child) {
      $level++;
      $output .= '<li class="taxonomy-tree-lvl' . $level . ' ">'; 
print $level;
      $output .= l($child->name, 'taxonomy/term/'. $child->tid) . '(' . taxonomy_term_count_nodes($child->tid) . ')'; 
      $output .= taxonomy_tree($vid, $child->tid, $level);
      $output .= '</li>';

      $level--; 
    }
    $output .= '</ul>'; 
  }

  return $output;

}

또는 다음 코드를 사용하십시오.

$vocabulary = taxonomy_vocabulary_load(2);//Here pass the vid
print $vocabulary->name;
$vid1 = $_GET['vid'];
if(!$vid1) {
$vid1 = 2;
print 'empty';
}
$vid = 2;
$parent = 0;
print get_child_terms($parent, $vid1);
 function get_child_terms($parent, $vid) {
      $sql = "SELECT td.tid, td.vid, td.name"
         . "  FROM {term_data} td"
         . "  JOIN {term_hierarchy} th on th.tid = td.tid"
         . " WHERE th.parent = %d"
         . "   AND td.vid = %d"
         . " ORDER BY td.weight, td.name";
    $terms = db_query($sql, $parent, $vid);
    $output = "";
    while ($aterm = db_fetch_object($terms)) {
        $output .= "<li>";
        $output .= l("$aterm->name", "taxonomy/term/$aterm->tid/all") . " ("
                .  taxonomy_term_count_nodes($aterm->tid) . ")</li>\n"
                .  get_child_terms($aterm->tid, $vid);
    }
    return ($output != "") ? "<ul style='list-style-type: none;
  margin: 0px 0px 0px 20px;
  padding: 0px;'>\n". $output ."</ul>\n" : "";
  }

2

물론 있습니다 :

  1. 계층 구조 어휘를 설정하십시오.
  2. 선택한 콘텐츠 유형에 추가하고
  3. 컨텍스트 필터를 사용 하여 해당 컨텐츠 유형에서 노드를 나열하는보기를 작성하십시오 .

    • "컨텐츠 : 분류 용어 ID가 있음"-특정 용어에 지정된 노드 만 나열하려는 경우,
    • 또는 "컨텐츠 : 분류 용어 ID (깊이 포함)"-특정 용어 및 하위 용어에 지정된 노드를 나열하려는 경우.

      이 경우 필터 구성에서 깊이를 설정해야합니다.이 필터를 작동시키려는 레벨의 수 (또는 그 이상).

그런 다음 뷰의 URL을 가정 것은 http://mysite.com/myview 당신이 갈 경우 '레드'TID = 1, http://mysite.com/myview/1 그것은 당신에게 중 하나에 할당 된 모든 노드를 나열합니다 '빨간색', '어두운'및 / 또는 '빛'이라는 용어.


특정 용어에 대한 답변을 찾고 있지 않습니다. 나는 전체 어휘에 대한 견해를 찾고 있습니다
iStryker

그것이 바로 제가 설명한 내용입니다.
Maciej Zgadzaj

2

분류법 메뉴 모듈을 사용할 수 있습니다 . 다음은 모듈의 프로젝트 페이지에서 인용 한 것입니다.

분류 어휘를 메뉴로 쉽게 변환합니다!

풍모:

  • 어휘 당 사용자 정의 메뉴
  • 기본 분류법 용어 경로 또는 사용자 정의 경로를 사용합니다.
  • 뷰와 통합
  • Pathauto와 통합 : URL / 경로 별명 사용
  • 다른 메뉴 모듈을 방해하지 않습니다

Drupal SE에 오신 것을 환영합니다! taxonomy_menu는 멋진 프로젝트이며이 작업을 훌륭하게 수행 할 수 있습니다. OP는 뷰에서 그렇게하고 싶습니다.
AyeshK

0

나는 같은 것을 달성하려고 노력하고 있지만 D7에서 많은 것을 사용할 수는 없습니다. 분류 블록 모듈은 뷰가 아닌 블록으로 수행합니다.


0

나는이 문제를 해결할 수있는 또 다른 방법을 찾았으며 다른 솔루션보다 간단하다고 생각합니다. 추가 모듈은 필요하지 않으며 하나의보기 만 필요합니다.

두 레벨의 계층 적 어휘 (색상)와 해당 어휘에 대한 용어 참조가있는 컨텐츠 유형을 작성했다고 가정하면 다음을 수행하십시오.

  1. "Taxonomy 어휘 : 기계 이름 (= 색상)"으로 새보기 및 필터 작성
  2. 관계 추가 : (1) Taxonomy term: Content using Color및 (2)Taxonomy term: Parent term
  3. 보기에 필드를 추가하십시오. (1) Title( field_color"관계"에서 선택 하고이 관계가 필요합니다. ), (2) Taxonomy term name(관계를 사용하지 않고 표시에서 제외) (3) Taxonomy term name(예, 이번에 Parent는 관계를 선택 하고 제외하십시오. 디스플레이에서).
  4. 이제 형식 설정을 클릭하여 그룹화하십시오 : (1) 그룹화 1 : (Parent) Taxonomy term: Name, (2)Taxonomy term: Name

끝난. 레벨이 두 개 이상인 경우 부모를 관계의 관계로 사용하여 다른 부모 관계를 추가하십시오.

편집 : 관계가 필요하지 않으면 속임수로 끝납니다. 노드에 의해 참조되는 하위 용어가있는 경우 상위가 두 번 나열됩니다. 따라서 이것은 참조하지 않는 노드가없는 최상위 용어의 답변을 약간 제한합니다. 또한 정렬이 중요 할 수 있으므로 최상위 용어를 참조하는 콘텐츠가 있으면 디스플레이 요구에 따라 잠재적으로 문제가 발생할 수 있습니다.


관계를 추가 할 때까지 "Taxonomy 어휘 : 기계 이름 (= 색상)"필터가 없습니다. 첫 번째 단계는 두 번째 단계 인 것 같습니다. 또한 "관계"에서 field_color를 선택할 때 필드 제목을 추가하는 방법을 이해할 수 없었습니다.
치수
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.