10

特定のコンテンツ タイプのノードを編集または追加するために、テンプレートのテーマを設定したいと考えています。
たとえば、すべてのコンテンツ タイプ フォームのテーマを設定するには、ファイルを使用しますpage-node-{add|edit}.tpl.php(追加または編集する必要がある内容によって異なります)。

しかし、Products などのカスタム ノード タイプのテンプレート名が見つかりませんでした。

製品だけにテーマを設定する必要があり、他のコンテンツ タイプにはテーマを設定する必要はありません。

私はandで試しましpage-node-edit-product.tpl.phppage-node-product-edit.tpl.phpが、運がありません。

4

6 に答える 6

16

うーん。より良い方法があるかもしれませんが、前処理関数はどうでしょうか。

私はまだ Drupal に本当に慣れていないので、次のようなことを試してみます [コードが機能しない可能性があります]:

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

新しい前処理関数を作成した後は、必ずキャッシュとテーマ レジストリをクリアしてください。

于 2009-10-08T15:49:25.873 に答える
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);
  }
}

上記のコードを template.php に追加します

次に、いくつかの tpl ファイルを作成します

1) page-contenttype.tpl.php

コンテンツの表示および編集時に使用

2) page-node-add-contenttype.tpl.php

そのコンテンツ タイプを追加するときに使用されます。

drupal 6 で動作します。

于 2011-01-31T00:33:02.737 に答える
1

これが「適切な」方法だと思います。

ノードモジュールから:

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

したがって、Drupal は「product_node_form」をテーマにしようとします。

これを実装するモジュールを作成できます。

[hook_theme][1] を実装し、関数またはテンプレートを提供する必要があります。

[hook_form_alter][2] を使用していくつかのクラスを追加し、通常の CSS を使用して外観を変更する方が簡単であることに気付くかもしれません。

于 2009-10-08T16:14:24.217 に答える
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'
    )
  );
于 2010-12-23T11:20:52.263 に答える
0

私にとっては同じ問題です。コードを挿入する場所を確認する:

<?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 または page-node に入力されます - {add|edit}-example.tpl.php?

于 2009-11-04T15:38:47.340 に答える
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);
}
}
于 2009-10-08T15:49:38.870 に答える