如何从自定义模块添加TPL文件到块 -- 7 领域 和 theming 领域 和 blocks 领域 drupal 相关 的问题

How to add a tpl file to a block from a custom module


3
vote

问题

中文

我有一个构建块的自定义模块。我正在尝试添加一个tpl文件,但我什么都不是。 这是我的代码:

  <?php /**  * Implements hook_block_info().  *  * This hook declares what blocks are provided by the module.  */ function tados2_block_info() {   $blocks = array();    $blocks['block_with_tpl'] = array(     // info: The name of the block.     'info' => t('Tados2 example: block with tpl'),     'status' => TRUE,   );    return $blocks; } /**  * Implements hook_block_view().  *  * This hook generates the contents of the blocks themselves.  */ function tados2_block_view($delta = '') {   switch ($delta) {     case'block_with_tpl':       // The subject is displayed at the top of the block. Note that it       // should be passed through t() for translation. The title configured       // for the block using Drupal UI supercedes this one.       $block['subject'] = t('Tados2 block with tpl');       // The content of the block is typically generated by calling a custom       // function.       $block['content'] = t('Hola mundo');//_tados2_block_with_tpl_contents();     break;   }   return $block; } ?>   

我正在尝试将内容移动到tpl.php文件。

我正在尝试的内容:

  <?php /**  *  * Implementen hook_theme  *  */ function tados2_theme(){   return array(     'tados2_block' => array(       //'render element' => 'elements',       'template' => 'tados2_block',       'variables' => array('title' => NULL, 'content' => NULL),     ),   ); } /**  * preprocess function  *   */  function template_preprocess_tados2_block(&$variables) {   dpm($variables); } ?>   
英文原文

I have a custom module that build a block. I'm trying to add a tpl file, but I don't get nothing. This is my code:

<?php /**  * Implements hook_block_info().  *  * This hook declares what blocks are provided by the module.  */ function tados2_block_info() {   $blocks = array();    $blocks['block_with_tpl'] = array(     // info: The name of the block.     'info' => t('Tados2 example: block with tpl'),     'status' => TRUE,   );    return $blocks; } /**  * Implements hook_block_view().  *  * This hook generates the contents of the blocks themselves.  */ function tados2_block_view($delta = '') {   switch ($delta) {     case'block_with_tpl':       // The subject is displayed at the top of the block. Note that it       // should be passed through t() for translation. The title configured       // for the block using Drupal UI supercedes this one.       $block['subject'] = t('Tados2 block with tpl');       // The content of the block is typically generated by calling a custom       // function.       $block['content'] = t('Hola mundo');//_tados2_block_with_tpl_contents();     break;   }   return $block; } ?> 

I'm trying to move the content to a tpl.php file.

This what I'm trying:

<?php /**  *  * Implementen hook_theme  *  */ function tados2_theme(){   return array(     'tados2_block' => array(       //'render element' => 'elements',       'template' => 'tados2_block',       'variables' => array('title' => NULL, 'content' => NULL),     ),   ); } /**  * preprocess function  *   */  function template_preprocess_tados2_block(&$variables) {   dpm($variables); } ?> 
        

回答列表

3
 
vote
vote
最佳答案
 

您必须调用您的主题功能:

  $block['content'] = theme('tados2_block', array('title' => 'foo', 'content' => 'bar'));   
 

You have to call your theming function:

$block['content'] = theme('tados2_block', array('title' => 'foo', 'content' => 'bar')); 
 
 
 
 
3
 
vote

我试图在我的块中使用模板文件。这是我的解决方案。

  • 拳头步骤:您需要注册您的主题。在yourmodule.module中使用以下代码。

      function yourmodule_theme($existing, $type, $theme, $path){   return array(     'yourmodule_block' => array(       'template' => 'yourmodule',       'variables'=> array('var1' => NULL, 'var2' => NULL),     ),   ); }   
    注意,在 'template' => 'yourmodule'中'yourmodule'是模块文件夹中的模板文件名。
    检查 hook_theme() for更多细节。
  • secondnd步骤:使用您的主题进行块。

      function yourmodule_block_view($delta = '') {   switch ($delta) {     case 'yourmodule_block':       $block['subject'] = 'LinhNH-Training';       $block['content']['yourmodule'] = array(         '#theme' => 'yourmodule_block',         '#var1' => 'Module Title',         '#var2'=>'Content '       );        return $block;       break;   }    // return $block; }   
 

I have tried to use a template file in my block. This is my solution.

  • Fist step: You need to register your theme. Use the following code in yourmodule.module.

    function yourmodule_theme($existing, $type, $theme, $path){   return array(     'yourmodule_block' => array(       'template' => 'yourmodule',       'variables'=> array('var1' => NULL, 'var2' => NULL),     ),   ); } 

    Note that in 'template' => 'yourmodule' 'yourmodule' is the template filename in your module folder.
    Check hook_theme() for more details.

  • Secondnd step: Use your theme for a block.

    function yourmodule_block_view($delta = '') {   switch ($delta) {     case 'yourmodule_block':       $block['subject'] = 'LinhNH-Training';       $block['content']['yourmodule'] = array(         '#theme' => 'yourmodule_block',         '#var1' => 'Module Title',         '#var2'=>'Content '       );        return $block;       break;   }    // return $block; } 
 
 

相关问题

3  如何使用规则自动设置节点/实体引用?  ( How can i set node entity references automatically using rules ) 
用例:在我的网站上,当用户寄存器时,使用规则自动创建四种不同内容类型的四个节点。我希望使用用户配置文件中的节点/实体参考*字段存储这些节点的引用。我想使用规则自动将每个节点分配给用户配置文件中的各个字段。有没有办法配置规则来执行此操作? 我尝试使用规则"设置数据值" ,将用户配置文件字段设置为创建的节点,但不起作用 ...

1  编写规则时PHP变量  ( Php variables when writing rule ) 
我正在编写一些php代码以在订单完成后使用送货和计费信息更新外部数据库,因此我正在在结账完成上编写规则,将客户信息添加到数据库。我需要弄清楚我想要使用的变量中包含的内容(例如,$ commermes_order-&gt; ???)我如何弄清楚这一点,并且有没有我可以使用的参考列表? ...

0  Aggregator自定义模板文件未覆盖Drupal 7上的默认值  ( Aggregator custom template file is not overriding the default one on drupal 7 ) 
我在drupal 7中启用了聚合器模块。我有一个refile,我在块的前页上显示它。该块在Feed a'more-link'下面。 我想根据我显示的语言和饲料更改文本。 我将eggregator-summary-items.tpl.php副本添加到我的主题文件夹中并自定义文件。 我的问题仍然显示默认值。有什么东西我缺...

0  如何使用node_load与需要参数的模块创建的页面?  ( How can i use node load with a module created page that requires an argument ) 
我想加载页面的内容,如node_load()如何工作,虽然我尝试加载不是一个节点,但使用模块创建的页面。 hook_menu中的条目使用了需要在URL中传递的参数。这是用于一个弹出窗口(jQuery叠加层),我要重用代码已经为独立版本已经完成。 任何想法如何完成? (Drupal 6) ...

2  Ajax形式 - 多个选择元素  ( Ajax form multiple select elements ) 
我有一个带有多个选择元素的表单,其中包含#ajax回调。 Ajax正在运作,但问题是我无法弄清楚如何找到哪些SELECT触发了AJAX。所有Ajax回调点指向相同的功能。 关于如何找到哪些选择的任何想法? 谢谢。 ...

8  '添加更多'分类学期小部件  ( Add more taxonomy term widget ) 
我正在尝试创建一个类似于正常术语参考小部件的字段窗口小部件,其中一个键区别。用户需要同时添加多个新的分类术语,这可以更好地证明它: 我得出了功能类似于分类学/选项/列表模块提供的功能(即,复选框/无线电,保存等)。 这是我使用的代码的重要一点,我正在使用 hook_field_widget_form() : ...

4  如何停止WebForm发送电子邮件  ( How to stop webform from sending an email ) 
我正在使用drupal 7.12 / webform 3 如何在WebForm提交时停止发送电子邮件?我想在条件下做这个,所以我需要使用钩子。我仍然希望其他一切都经过正确的方式(即确认页面,提交的DB条目)。 我看到 function webform_client_form_submit($form, &$fo...

2  如何确定节点的图像字段的图像样式?  ( How to determine what image style an image field of a node has ) 
在D7中,有没有办法获得分配给图像字段的图像样式?如果我创建了图像样式,例如,通过覆盖默认图像样式(缩略图,中或am / admin / config / confirm / maved / maved / maved / maved / maveds-styles),然后将其分配给节点的字段_Image /类型/管...

36  如何避免检查特定模块的更新?  ( How do i avoid checking for updates for a specific module ) 
在当前项目中,我必须修补几个模块中的生命(节点层次结构,工作台访问等)。这些模块现在绝对适合项目的需求,并且不太可能与未来的核心更新突破。 所说,当应用程序交给客户端时,将有完整的(用户1)访问系统,因此当这些模块具有可用更新时,将被警告。他们将更新它们,无论我求多次求不要(哦,生活在没有客户的情况下!)。 有没有办...

0  内容类型配方的建议?  ( Suggestions for a content type recipe ) 
目前我正在构建两个内容类型,我想将它们巩固到一个中。这是场景。我有两个内容类型 - 餐厅和商店。这两个完全相同的字段除了"类别" ,这是一个分类列表。为餐厅,分类学列表包含餐厅食品类别(亚洲,意大利等)和商店的"商店类型" (时尚,电子产品等)。我有两个内容类型的唯一原因是我可以强制执行所需的类别字段。 但是,在我的...

6  多价字段的令牌?  ( Tokens for multi valued fields ) 
在D7中,它似乎是字段的令牌(例如, 99887668 )只是返回字段的呈现。因此,如果该字段是多值的,则此令牌将返回一起呈现的所有值。但是,我希望能够单独使用令牌分别访问该字段的特定增量值,例如,使用 [node:field_date:0] 或类似的语法。我也希望能够将令牌连锁,例如, $view->result...

0  我需要使用stronmarm导出哪些变量?  ( Which variables do i need to export with strongarm ) 
我有一个基于AdaptiveTheme的主题,它使用颜色选择器工具来允许一个通过UI编辑主题的颜色方案。 使用主题导出功能时,可以使用以下变量: color_themename_files color_themename_logo color_themename_palette (给出颜色列表)...

1  从自定义内容类型创建自定义表单并保存它  ( Create a custom form from custom content type save it ) 
我已经使用GUI接口创建了自定义 Content-Type 。 我需要自定义表单,它在创建 99887660 的内容时进行输入。我可以通过 hook_theme 实现但是我正在尝试创建一个全新的表单,并在数据库中保存内容的字段,以便它显示为全功能我的 content-type 。 如何创建表单(我知道如何在我的自定...

30  使用EntityFieldQuery查询条件时排除空(NULL)字段  ( Excluding emptynull fields when using entityfieldquery query condition ) 
是可以选择XYZ字段为空的所有实体? 我尝试了如此: ->fieldCondition('field_name', 'value', NULL, 'IS NOT NULL'); 然而,这似乎没有工作。 任何想法? ...

0  视图:如何显示通过术语参考字段附加分类学期的用户列表?  ( Views how can i show a list of users who have a taxonomy term attached via a te ) 
我正在使用视图模块的内置"分类术语" 视图,该视图覆盖Drupal默认情况下显示分类系统,并使您可以访问视图。但是,这仅适用于内容,而不是用户。 我尝试创建一个列出用户的新视图,但没有类似上下文过滤器,如"用户:具有分类学期" ,只是"内容:有分类项" 。但是,在我的情况下,我想要显示的一些字段是存储在用户配置文件上...

0  使用Fiverstar的多轴投票,视图,参考  ( Multi axes voting using fiverstar views reference ) 
我已经尝试了几个不同的教程,即如何完成此操作。大多数是Drupal 6,但Drupal 7少数人似乎没有似乎对目前使用的模块有意义,这些模块在开发或稳定上。节点审查模块似乎是我需要的最接近的事情,但需要一些黑客攻击以使其适用于特定使用。我有几个我尝试过的其他模块。速率7.x-1.3似乎有潜力。 如何使系统如下使用这...

1  如何获取node.tpl.php以显示不同节点的不同内容?  ( How to get node tpl php to display different content for different nodes ) 
我目前通过直接在多个节点的正文中写入的PHP代码显示一些数据库内容。 我想将此代码转移到node.tpl.php中(从zen示例中看到的,修改节点的代码应该是node.tpl.php)。但是,我有多个节点,每个节点显示不同类型的数据库内容。 如何构建节点中的代码。如果它是页a,那么我显示数据库内容a,然后是它是pa...

1  如何将user_filter_form隐藏到特定角色?  ( How hidden the user filter form to a specific role ) 
如何使用 alter_form 隐藏在用户列表页面中的 user_filter_form 以特定角色? ...

4  为什么所有的非值列索引,但值列不是?  ( Why are all of the non value columns indexed but the value column isnt ) 
我正在努力提高Drupal 7网站的性能,并注意到所有非值列(Entity_type,捆绑,删除等)被索引,但实际的值字段不是......这是什么对任何人都有意义? 我知道drupal使用其他字段加入其他表,但是正在寻找具有特定字段值的节点的任何视图/自定义查询都不会受到它们? 是否有一些原因默认情况下的值列未索引?...

0  块编辑消失了  ( Block editing disappeared ) 
直到上周,当我以管理员身份登录时,在节点的页面上, 我可以通过单击"编辑此块" 链接来编辑块,该链接出现在块的右上角。 但现在我看不到编辑块链接,所以每次想要编辑块我转到"/ admin / structs / block" ,这非常糟糕。 当我检查页面源时,我可以看到链接,如: <div class="cont...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.