특정 사용자 정의 컨텐츠 유형 항목의 후보 페이지 템플리트 파일 이름


11

Drupal 7 웹 사이트에서 작업하고 있습니다. 작품에 대한 사용자 정의 컨텐츠 유형을 작성했습니다. 많은 필드가 있으며 그중 일부는 각 항목의 특정 페이지 bg와 같은 페이지 레이아웃과 관련이 있습니다. 따라서이 특정 콘텐츠 유형에 대한 사용자 정의 page.tpl이 필요합니다.

그래서 테마 개발자 모듈을 활성화하고 열고 본문 영역을 클릭하여이 특정 컨텐츠 유형 페이지 항목의 후보 이름을 얻었습니다. 그리고 그것은 나에게 아무것도 의미하지 않는 아래 화면을 제공합니다 : / 노드 영역을 클릭하면 괜찮습니다. 노드 --work.tpl.php를 제공 하지만 페이지가 필요합니다. "page--work.tpl.php"를 시도했지만 작동하지 않았습니다.

내가 무엇을 놓치고 있습니까?

여기에 이미지 설명을 입력하십시오

답변:


12
function mytheme_process_page(&$variables) {
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}

머신이 읽을 수있는 컨텐츠 유형 이름이 "work"라고 가정하면 page--work.tpl.php가 작동합니다.

자세한 내용은 이 스레드 를 참조하십시오 .


와! 잘 작동했습니다! 나는 page.work.tpl.php로 주소를 지정할 수 있습니다 :) 비록 잘 작동하지만 d.pr/EaMa 와 같은 오류 메시지가 있습니다 . 시간 내 주셔서 감사합니다 !!
Drupal guy

오 테마 테마 모듈 때문인 것 같습니다. 나는 모듈을 비활성화하고 오류가 사라졌다 :) 고마워!
Drupal guy

2

template.php에서 다음을 추가하십시오.

function themeName_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--',    $vars['node']->type);
  }
}

생략 할 수 있습니다 str_replace(). 어떤 버전이 가장 적합한 지 테스트하십시오.

그런 다음 파일 이름이 page –- [content_type] .tpl.php 인 템플릿 파일을 만듭니다. ([content_type]을 컨텐츠 유형 머신 이름으로 바꾸십시오.)

http://drupal.org/node/1089656#comment-4426790을 참조 하십시오 .


1

노드 ID도 원하는 경우 이것을 사용하십시오.

function mytheme_process_page(&$variables) {
  if (isset($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
    $variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
  }
}

0

Drupal 직원들은 각 콘텐츠 유형마다 다른 템플릿을 사용하는 것은 좋지 않다고 말합니다. 이것이 page--work.tpl.php후보 템플릿 파일 목록에서 찾을 수없는 이유 입니다. 노드 템플릿 파일 만 달라야한다고 생각합니다. 그러나 해킹하고 싶다면 계속 진행하십시오.

컨텐츠 유형에 따라 경로를 설정하려면 경로 별명을 사용하십시오. 그런 다음이 코드를 삽입하십시오

 if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $vars['template_files'][] = $template_filename;
      }
    }
  }

테마 폴더에 있는 phptemplate_preprocess_page(&$vars)함수에template.php

코드를 약간 수정하여 더 효율적으로 만들 수 있습니다.

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