2009-10-08 6 views
10

편집 할 템플릿을 테마로하거나 특정 콘텐츠 유형에 노드를 추가하고 싶습니다.
예를 들어, 모든 콘텐츠 형식 양식을 테마로 사용하려면 파일을 page-node-{add|edit}.tpl.php (내가 추가 또는 편집해야하는 내용에 따라 다름)을 사용하십시오.템플릿을 테마로 편집하거나 특정 컨텐트 유형에 노드를 추가하는 방법은 무엇입니까?

그러나 제품과 같이 사용자 지정 노드 유형의 템플릿 이름을 찾지 못했습니다.

제품에만 테마가 필요하지만 다른 콘텐츠 유형에는 필요하지 않습니다.

나는 page-node-edit-product.tpl.phppage-node-product-edit.tpl.php으로 시도했지만 행운은 없습니다.

답변

16

흠. 더 좋은 방법이있을 수 있지만 전처리 기능은 어떨까요?

나는 여전히 드루팔 정말 새로운, 그래서 어쩌면 [작동하지 않을 수 있습니다 코드] 이런 식으로 뭔가를 시도 할 것입니다 :

<?php 
function themeName_preprocess_page(&$vars, $hook) { 
    if ((arg(0) == 'node') && (arg(1) == 'add' && arg(2) == 'product')) { 
    $vars['template_files'][] = 'page-node-add-product'; 
    } 
} 
?> 

새로운 전처리 기능을 한 후 캐시 및 테마 레지스트리를 삭제해야합니다.

0

나는 드루팔 (drupal) 멍청한 녀석이지만,이 작품처럼 뭔가 (조금 더 필요할지도 모른다)?

function phptemplate_node_form($form) 
{ 
    switch ($form['#node']->type) { 
    case 'product': 
    return theme_render_template(path_to_theme().'/node-edit-product.tpl.php', array('form' => $form)); 
    default: 
    return theme_node_form($form); 
} 
} 
1

이것이 올바른 방법이라고 생각합니다. 노드 모듈에서

:

$form['#theme'] = array($node->type .'_node_form', 'node_form'); 

그래서 드루팔 그래서 당신이 구현하는 모듈을 만들 수 있습니다 테마 'product_node_form'

하려고합니다.

[hook_theme] [1]을 구현하고 함수 또는 템플릿을 제공해야합니다.

[hook_form_alter] [2]를 사용하여 일부 클래스와 일반 CSS를 추가하여 모양을 변경하는 것이 더 쉽습니다.

+0

아,하지만 주제가 아닌 완전한 다른 템플릿을 사용하고 싶습니다. –

+0

게시 한 것처럼 할 수 있지만, OP가 원하는 내용인지는 확실하지 않습니다. 이것은 실제 양식 (현재는 사용하지 않음)의 템플리트 만 변경하며, 사용중인 페이지 템플리트는 변경되지 않습니다. 그의 예에서 보면 그가 원하는 것 같습니다. 두번째 비교 – googletorp

0

나에게도 같은 문제가 발생합니다. - | -example.tpl.php {편집 추가}

<?php 
function themeName_preprocess_page(&$vars, $hook) { 
    if ((arg(0) == 'node') && (arg(1) == 'add' || arg(2) == 'product')) { 
    $vars['template_files'][] = 'page-node-add-product'; 
    } 
} 
?> 

이 그것은 template.php 또는 페이지 노드에 입력 : 코드를 삽입 할 위치를 프롬프트?

+0

는 그것이 && 대신 ||이어야 오류있다 : 모든 콘텐츠 '추가'에 적용됩니다. –

0

는 내 테마의 디렉토리에 내 template.php 파일에 넣고 :

function MYTHEMENAME_theme($existing, $type, $theme, $path) { 
    return array(
    // tell Drupal what template to use for the edit form 
    family_individual_node_form' => array(
     'arguments' => array('form' => NULL), 
     'template' => 'node-family_individual-edit' 
    ) 
); 
1
function themename_preprocess_page(&$vars) { 
    // Add per content type pages 
    if (isset($vars['node'])) { 
    // Add template naming suggestion. It should alway use hyphens. 
    // If node type is "custom_news", it will pickup "page-custom-news.tpl.php". 
    $vars['template_files'][] = 'page-'. str_replace('_', '-', $vars['node']->type); 
    } 
} 

그런 다음 TPL 파일의 몇을 만들

template.php

에 위의 코드를 추가

1) page-contenttype.tpl.php

콘텐츠를 표시하고 편집 할 때 사용합니다.

2) page-node-add-contenttype.tpl.해당 콘텐츠 유형을 추가 할 때 PHP

이 사용됩니다.

drupal과 작동합니다.

관련 문제