Drupal 7-분류 페이지에서 노드 출력 억제


10

모듈을 설치하지 않고도 (예 : template.php에) 분류 페이지에서 노드의 출력을 억제하는 방법이 있습니까?

분류 용어로 태그 ​​된 노드는 "Taxonomy Index 페이지"에 나타납니다 (예 : yoursite.com/taxonomy/term/[id]).

Drupal 7의 새로운 기능인 Taxonomy Index 페이지에 필드를 첨부 할 수 있습니다. 그러나보기로 분류법 페이지를 오버라이드하려고하면 (예를 들어, 노드가 표시되는 방법을 제어하기 위해) 분류법 색인 페이지의 필드가 나타나지 않습니다.

따라서 Taxonomy Index 페이지에서 Taxonomy View를 블록으로 배치했습니다. 이렇게하면 노드가 표시되는 방법을 제어하고 분류 색인 페이지 필드를 계속 사용할 수 있습니다.

이 때문에 분류 페이지는 여전히 노드를 출력합니다. 노드 티저를 숨김으로 설정하여 숨길 수는 있지만 여전히 노드를로드합니다 (따라서 노드가 표시되지 않더라도 노드에 연결된 CSS / Jquery). 이상적으로 template.php 내부에서 노드가 나타나지 않도록하려면 어떻게해야합니까?


모듈을 설치하고 싶지 않은 이유는 무엇입니까? 모듈을 사용하면 달성하기가 더 쉽습니다.
Martin Schlagnitweit 2016 년

답변:



8

http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/의 솔루션은 저에게 효과적입니다.

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

참고 : 사이트 캐시를 재설정해야합니다.


참고 :이가 목록 노드 비활성화됩니다 어떤 사이트에 분류 용어 페이지를.
Duncanmoo

@Peter Lozovitskiy 나는 이것을하고 "알림 : 정의되지 않은 상수 'taxonomy'"오류에 직면했습니다!
shekoufeh

@ shekoufeh, 코드를 수정했습니다 (쉼표로 교체)이 코드를 사용해보십시오.
피터 Lozovitskiy 7

2

$ page 변수에서 노드를 제거해야합니다.

에서 template.php 당신은 이런 식으로 작업을 수행 할 수 있습니다 :

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

당신에 page.tpl.php 이 코드를 사용 :

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

이것은 모든 어휘와 용어 에서 노드를 제거합니다 . 당신은 단지 어휘 사용의 특정 용어 나 모든 용어에 그들을 제거 할 경우 arg(2)포함 tid다음 용어를로드하고 if 문을 업데이트합니다.


작동하지만 여전히 호출기를 켜 둡니다. 이는 노드가로드되고 서버 자원을 낭비한다는 의미입니다. 어쨌든, 팁 주셔서 감사합니다, 나는 이미 당신의 방법을 사용하고 있습니다 :) 그러나 이론적으로 더 좋은 방법이 여전히 존재합니다.
int_ua

0

template.php에서 실제로 무엇이든 할 수 있지만 권장하지는 않습니다. CMS 사용의 요점은 데이터, 동작 및 모양을 분리한다는 것입니다. template.php 파일은 테마 레이어의 일부이므로 사이트의 시각적 스타일을 조정하는 데 사용해야합니다.

사이트의 동작을 조정하려면 (이 경우 : 특정 목록에 표시 할 항목 제어) 동작을 변경해야하므로 모듈을 설치하고 구성해야합니다. 사용자 정의 컨텐츠 목록을 작성하려면 정확히 보기 모듈이 필요합니다.

귀하의 경우 (정확하게 이해하는 경우) 분류 용어 필드가 해당 용어로 태그 ​​지정된 노드 목록 위에 표시되기를 원합니다. URL에서 용어 ID를 가져와 필요한 정보를 표시하는 views 블록을 작성하여 뷰에서이를 다시 작성할 수 있습니다.


답장을 보내 주셔서 감사합니다! 분류 페이지를 재정의하기 위해 이미 뷰를 사용하고 있습니다. 그러나 분류 페이지의 필드를 표시해야하므로 페이지 대신보기 재정의를 블록으로 사용하고 있습니다. 유일한 문제는 분류 페이지가 여전히 노드를로드한다는 점입니다. 이는 불필요한 것 같습니다.
big_smile

"분류 페이지의 필드"가 무슨 뜻인지 이해하지 못하지만 페이지 내용을 숨기고 블록으로 바꾸는 것이 올바른 해결책처럼 들리지 않습니다. 분류 페이지를 일반 페이지보기로 대체하는 경우 정확히 어떤 기능이 누락 되었습니까? (원래의 질문을 업데이트 할 수 있으며 이에 따라 답변을 개선하겠습니다.)
marcvangend

답변도 업데이트되었습니다.
marcvangend

불행히도 귀하의 답변이 효과가없는 것 같습니다. 분류 필드를보기로 가져 오려고하면 모든 단일 필드의 내용이 표시됩니다 (표시되는 특정 페이지에만 속하지는 않음).
big_smile

0

CSS를 사용하여 분류법을 숨기고 있지만 더 나은 옵션 인 것처럼 사용자 정의 및 공백으로 표시를 설정했습니다.

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