it-swarm-id.com

Saran templat halaman tidak berfungsi

Saya telah membuat tema dan memiliki file template saya dalam struktur ini

  • /templates/page/page.tpl.php
  • /templates/page/page--node-type.tpl.php

Saya telah membuat templat halaman khusus tetapi untuk beberapa alasan itu tidak diambil oleh Drupal. Saya sudah membersihkan cache dan juga mencoba menambahkan fungsi preprocessor ini dalam file theme.php theme tetapi masih tidak berfungsi.

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);
  }

Bantuan apa pun akan dihargai.

12
Paul Sheldrake

Seperti yang dilaporkan dalam Saran Template Drupal 7 , saran template yang digunakan secara default dari Drupal 7 untuk halaman adalah halaman - [depan | internal/path] .tpl.php .

Untuk halaman yang terlihat di http://www.example.com/node/1/edit , Drupal akan mencari file templat berikut:

  • halaman - simpul - edit.tpl.php
  • halaman - simpul - 1.tpl.php
  • halaman - node.tpl.php
  • page.tpl.php

Untuk menambahkan saran tambahan, tema Anda harus menerapkan template_preprocess_page () dan menambahkan saran baru di $variables['theme_hook_suggestions'] ($variables adalah variabel yang diteruskan oleh referensi ke fungsi).

Jika Anda melakukannya, maka satu-satunya alasan file templat yang disarankan tidak digunakan adalah karena file tersebut tidak diberi nama dengan benar: dalam kasus ini halaman menampilkan halaman buku, misalnya, file templat tersebut harus berupa halaman - book.tpl .php. Anda dapat mengubah kode untuk tema Anda, dan membiarkannya menggunakan halaman - template node-type.tpl.php, jika tidak menemukan template seperti halaman - book.tpl.php.

Untuk memperhatikan juga bahwa, di theme_get_suggestions () (yang merupakan fungsi yang dipanggil oleh template_preprocess_page () ) tanda hubung diganti dengan _, dan bukan sebaliknya. Alasan yang dilakukan dijelaskan dalam komentar yang dilaporkan dalam kode fungsi.

// When we discover templates in drupal_find_theme_templates(),
// hyphens (-) are converted to underscores (_) before the theme hook
// is registered. We do this because the hyphens used for delimiters
// in hook suggestions cannot be used in the function names of the
// associated preprocess functions. Any page templates designed to be used
// on paths that contain a hyphen are also registered with these hyphens
// converted to underscores so here we must convert any hyphens in path
// arguments to underscores here before fetching theme hook suggestions
// to ensure the templates are appropriately recognized.
$arg = str_replace(array("/", "\\", "\0", '-'), array('', '', '', '_'), $arg);
14
kiamlaluno

Saya menggunakan Drupal 7.4, dan saya memiliki masalah yang sama dan satu-satunya hal yang membantu adalah postingan ini: Bagaimana cara menambahkan custom page.tpl berdasarkan tipe konten =

Dari pos:

<?php
/**
* Variables preprocess function for the "page" theming hook.
*/
function THEME_NAME_preprocess_page(&$vars) {

  // Do we have a node?
  if (isset($vars['node'])) {

    // Ref suggestions cuz it's stupid long.
    $suggests = &$vars['theme_hook_suggestions'];

    // Get path arguments.
    $args = arg();
    // Remove first argument of "node".
    unset($args[0]);

    // Set type.
    $type = "page__type_{$vars['node']->type}";

    // Bring it all together.
    $suggests = array_merge(
      $suggests,
      array($type),
      theme_get_suggestions($args, $type)
    );

    // if the url is: 'http://domain.com/node/123/edit'
    // and node type is 'blog'..
    //
    // This will be the suggestions:
    //
    // - page__node
    // - page__node__%
    // - page__node__123
    // - page__node__edit
    // - page__type_blog
    // - page__type_blog__%
    // - page__type_blog__123
    // - page__type_blog__edit
    //
    // Which connects to these templates:
    //
    // - page--node.tpl.php
    // - page--node--%.tpl.php
    // - page--node--123.tpl.php
    // - page--node--edit.tpl.php
    // - page--type-blog.tpl.php          << this is what you want.
    // - page--type-blog--%.tpl.php
    // - page--type-blog--123.tpl.php
    // - page--type-blog--edit.tpl.php
    //
    // Latter items take precedence.
  }
}
?>
5
Bob Rivers

Saya telah menghabiskan waktu terlalu lama untuk mencoba mengikuti contoh di atas menggunakan ganti string dalam Drupal 7.22. Ini sepertinya tidak berfungsi untuk saya. Menariknya beberapa jenis konten tampaknya disarankan secara otomatis, sementara yang lain tidak Ini adalah kode yang pada akhirnya berhasil bagi saya.

if (isset($variables['node'])) {
   // $variables['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $variables['node']->type);
   //cannot get above working for some reason?
     $variables['theme_hook_suggestions'][] = 'page__' . $variables['node']->type;
  }

jadi saran template untuk tipe konten front_page ini akan menjadi:

halaman - front_cover.tpl.php

Menariknya saran templat kode untuk tipe konten 'masalah' muncul sebagai halaman - issue.tpl.php tanpa perlu skrip preprosesor !? Ini untuk tujuan saya tampaknya menimpa tampilan template yang menggunakan jalur yang sama.

yaitu.

lihat jalur =/masalah/# saran template berdasarkan tipe konten yaitu/isu/#/front_cover

2
Daniel