drupal 7 自定义内容类型和模板

问题描述 投票:0回答:2

...好吧...所以...我只需要“清除缓存”。我想因为我没有缓存(网站正在开发中),所以我不需要清除它。错了。

解决方案是:

添加文件node--my-content-type.tpl.php并转到管理»配置»开发,然后单击清除缓存按钮。

我希望这可以帮助人们不要花几个小时来解决同样的问题!

使用 Drupal 7.2,我创建了一个自定义内容类型“my_custom_type”,但我一生都无法弄清楚如何为我的自定义类型创建自定义模板。 我的模板文件目前只打印“hello world”,但没有运气显示它。 我尝试过这些组合:

  1. 将node--my-custom-type.tpl.php放入我的主题的模板目录中。 那行不通。 因此,经过研究,我将其添加到 templates.php 中的 THEME_preprocess_page() 函数中:

    if (isset($variables['node'])) {
    
        $variables['template_files'][] = 'node--'. 
                                         str_replace('_', 
                                                     '-',
                                                     $variables['node']->type);
    
    }
    
  2. 将相同的代码放入 THEME_preprocess_node() 中,而不使用 if,所以:

        $variables['template_files'][] = 'node--'. 
                                         str_replace('_', 
                                                     '-',
                                                     $variables['node']->type);
    
  3. 以上两者,但我的 tpl.php 文件位于基本模板目录中:/modules/node/

任何帮助将不胜感激。 我完全迷失了。

另外,我在 /modules/node/node.tpl.php 中添加了打印“什么是什么”并打印了..也许这是因为内容类型不是节点? 但如何为内容类型创建默认模板?

php templates drupal-7 content-type
2个回答
4
投票

不建议修改核心文件。请参阅http://drupal.org/best-practices/do-not-hack-core。 我不确定这是否是你正在做的事情,但如果你是......

您应该做的是创建一个子主题。请参阅 http://drupal.org/node/225125http://drupal.org/node/171194

的指南

通常您会将自定义主题文件放在

/sites/all/themes/custom/subtheme_name/ node--my-custom-type.tpl.php
中。

请记住在

http://yoursite.com/admin/config/development/performance
清除缓存,以便识别您的新模板文件。


0
投票

如果您想避免一直清除缓存,可以安装 http://drupal.org/project/devel 并选择在每次请求时重建主题注册表。

请务必在您的网站上线之前将其关闭,因为保持启用状态会产生巨大的性能。

© www.soinside.com 2019 - 2024. All rights reserved.