如何输出大量HTML标记 -- 7 领域 drupal 相关 的问题

How to output a large amount of html markup


1
vote

问题

中文

我需要从自定义模块中输出页面的整个区域。

我知道我可以用以下代码输出标记:

  $page['region'] = array(     '#type' => 'markup',     '#markup' => t('markup here'), );   

这对少量标记有益,但有没有更好的方法来从我的模块内输出大量的HTML?

英文原文

I need to output an entire region of a page from within my custom module.

I know I can output markup to be rendered with this code:

$page['region'] = array(     '#type' => 'markup',     '#markup' => t('markup here'), ); 

This is good for small amount of markup but is there a better way to output a large amount of html from within my module?

  

回答列表

2
 
vote

您不应使用模块输出大量标记而不使用主题图层(除非您的标记实际上是可编辑的内容或大块静态内容)。所以,最好的可能是为标记定义主题功能或Templat E,并将其从模块中使用。这样,任何主题都可以在不影响模块逻辑的情况下更改标记。即使这应该是一个项目的自定义模块,可能会有一天,您或其他人必须更新本网站。从其演示文稿中正确分离您的模块逻辑将使将来更容易。

  // Rendering code   $page['region'] = array(       '#theme' => 'custom_foo',       '#foo' => t('foo)',       '#bar' => t('bar'),       '#count' => 42   );  /**  * Implements hook_theme().  */ function custom_theme() {   return array(     'custom_foo' => array(        'variables' => array('foo' => NULL, 'bar' => NULL, 'count' => NULL),      )   ); }  /**  * Default theme implementation for custom_foo.  */ function theme_custom_foo($variables) {   $output[] = '';   for ($i = 0; $i < $variables['count']; $i++) {     $output[] = array(       'type' => '#markup',       'markup' => ($i % 2 == 0) ? $variables['foo'] : $variables['bar'],     )   }   return $output; }   

对于静态内容,您可以使用模板(.tpl.php)而不是主题函数。这允许您将其保留在您的.module(或.inc)文件代码之外。再次,这将更容易在未来维护。

也,大多数时候你不应该将标记放入 t()。 t() 用于可翻译字符串,大多数标记都不会被翻译。一个常见的,可接受的,例外是(简单)链接标记。

 

You shouldn't output large amount of markup from your module without using the theme layer (unless your markup is actually editable content or large chunk of static content). So, the best is probably to define a theme function or template for your markup, and use it from your module. This way, any theme can change your markup without affecting your module logic. Even if this is supposed to be a single-project custom module, chances are that someday you, or somebody else, will have to update this site. Properly separating your module logic from its presentation will make things easier in the future.

// Rendering code   $page['region'] = array(       '#theme' => 'custom_foo',       '#foo' => t('foo)',       '#bar' => t('bar'),       '#count' => 42   );  /**  * Implements hook_theme().  */ function custom_theme() {   return array(     'custom_foo' => array(        'variables' => array('foo' => NULL, 'bar' => NULL, 'count' => NULL),      )   ); }  /**  * Default theme implementation for custom_foo.  */ function theme_custom_foo($variables) {   $output[] = '';   for ($i = 0; $i < $variables['count']; $i++) {     $output[] = array(       'type' => '#markup',       'markup' => ($i % 2 == 0) ? $variables['foo'] : $variables['bar'],     )   }   return $output; } 

For static content, you can use a template (.tpl.php) instead of a theme function. This allow you to keep it outside a your .module (or .inc) file code. Again, this will be easier to maintain in the future.

Also, most of the time you shouldn't put markup into t(). t() is for translatable strings and most markup are not to be translated. One common, an acceptable, exceptions is (simple) link markup.

 
 
   
   
0
 
vote

这样的东西?请务必逃脱双引号: " 或者如果可以,单引号更好地替换它们。

  $markup = "very very ... ...  long markup";  $page['region'] = array(     '#type' => 'markup',     '#markup' => $markup, );   
 

Something like this ? Be sure to escape double quotes: \" or better replace them by single quotes if you can.

$markup = "very very ... ...  long markup";  $page['region'] = array(     '#type' => 'markup',     '#markup' => $markup, ); 
 
 
0
 
vote

我建议不要将大量内容放入表单代码中,因为这基本上消除了内容作者编辑此内容的能力,并且任何内容更改都需要代码部署(坏)。

我的建议是使用

  • http://drupal.org/project/queryable_variables (这对于大块内容很棒并类似于替换变量()
  • http://drupal.org/project/templates (你可以创建'模板'您希望存储为节点的内容部分,而不是完美的解决方案,但也许您正在寻找的内容)。
 

I would suggest not placing a large amount of content into form code, as this basically removes the ability for your content authors to edit this content, and any content changes will require code deployments (bad).

My suggestion is to use either

  • http://drupal.org/project/queryable_variables (which is great for large pieces of content and acts like a replacement for variable_get()
  • http://drupal.org/project/templates (which you can create 'templates' for sections of content you would like to store as nodes, not a perfect solution but maybe what you are looking for).
 
 

相关问题

3  上传到Web-Server时的页面以外的页面错误的404错误  ( 404 errors for pages other than homepage when uploaded to web server ) 
我和新的php,我开始用drupal开始,这是我的演示网站 http://sugandha.net63。 net / 我的设置如下: $databases = array ( 'default' => array ( 'default' => array ( 'datab...

1  具有自定义参数的页面  ( A page with custom parameters ) 
我有一个页面要做这个: Boats/ Boats/Veterans Boats/Nine Boats/Used 其中['退伍军人','nine','使用']将是传递到网址的参数! 我想使用我的页面自定义 页面 - boats.tpl.php 这是一个页面主题。目前,我有一个白页。 我该怎么办? ...

1  Drupal 7 WEBForm设置:如何更改按钮中的默认文本“下一页”?  ( Drupal 7 webform settings how to change the default text in button next page ) 
我已经使用drupal 7创建了一个webform,其中两个页面与"pagebreak" 字段,但是当我进入MySite WebForm并在页面底部查看WebForm时,有一个按钮"下一页" :我必须更改此按钮中的文本......也可能在简单文本"下一页" 的地方设置图像。 谢谢! ...

5  如何双向链接两个来自不同内容类型的节点?  ( How to bi directional link two nodes from different content type ) 
你好,我是新的去德鲁佩尔。我很长时间和一些WordPress使用Joomla。 我想链接2个或更多节点双向。这意味着,如果我将a链接到b,则B必须也链接到。 我会给你一个简单的例子: 让我们说我想制作歌词网站。我将有2种内容类型。 1)艺术家/乐队 2)歌曲歌词 艺术家/乐队类型将有有关艺术家的信息,也可以...

4  为面板页面设置语言  ( Set language for a panel page ) 
如何在面板页面创建多个翻译?我的主页采用面板设计,我有英语和西班牙语内容。对于节点,一切都很好,但我无法弄清楚如何用面板做多种语言。 ...

6  Devel KPR,DPR,DPM等仅在缓存冲洗后打印  ( Devel kpr dpr dpm etc only print after cache flush ) 
我正在编写一个小模块并使用 devel 打印功能(DPR,KPR,DPM等)打印出一些值。 但是,我在刷新某些缓存后,我只能看到页面中的值。如果我只是重新加载页面或转到它,我什么都不看。这对于消息区域和常规调试打印功能是如此。这是预期的吗? 我已登录为admin,以便我认为普通页面缓存已关闭。 (这是d7。) ...

2  在按下按钮时,如何制作(CCK)字段的内容?  ( How to make content of a cck field visible when pressing a button ) 
我正在处理一个Drupal 7网站,我想创建一个特定(CCK)文本字段仅在按下按钮后显示的节点。 我想实现的效果是完全相同的你可以在职业生涯中找到2.0网站,在每个职位帖子的最后,有一个标题为"了解如何申请" 的按钮。单击此按钮时,"如何应用指令" 。要查看它的工作原理,您可以检查 http://职业生涯。 stac...

0  防止用户身份1编辑  ( Prevent user with id 1 edit ) 
我想防止管理站点(用户ID 2)用ID 1删除或更改密码用户,尽管我需要管理添加用户并编辑其他用户。 怎么办? ...

3  如何在具有公开过滤器的视图上显示所有记录  ( How to display all records by default on a view with exposed filters ) 
我已经托管(经过大量的斗争)来创建一个有四个暴露过滤器的视图(所有过滤器都是分类字段)。我的问题是,现在默认情况下,只有选择页面加载和数据时,才会向用户呈现给用户的问题。我正在尝试实现确切的对面:呈现所有数据,然后相应地过滤。我该怎么做? ...

1  如何在不同视图中为视频播放器选择不同的尺寸(视图和视频模块)  ( How to choose different dimensions for the video player in different views view ) 
我已经创建了一个带有视频的新内容类型。对于我选择的内容作为默认分辨率640 * 360。现在我需要使用视图模块创建网格,我希望能够选择不同(更小)的分辨率。 如何这样做?我是否需要以编程方式执行此操作,或者我可以通过界面进行这一点吗? ...

2  如何仅显示查找内容(管理)页面中用户创建的内容  ( How to show only content created by the user in the find content administrative ) 
我有一些允许创建内容的用户。在管理界面中,他们实际上看到了站点中所有内容列表,但仅编辑/删除它们创建的内容。是否有可能在此页面中仅显示他们创建的内容,并且不显示其他用户创建的内容? ...

5  Drupal 7 views 3上下文过滤器 - 预览按预期工作,实际页面不是,为什么?  ( Drupal 7 views 3 contextual filter preview works as expected the actual page ) 
背景: drupal 7.2,视图7.x-3.0-rc1 我有一个用单个上下文过滤器,'用户:全名'的视图。 ('User:全名'是添加到用户的字段,存储用户的全名,如"彼得杰克逊初" 。)在此过滤器的设置中,在"更多" ,"路径中" 的情况设置为"较低的'和"将空格转换为url" 中的破折号,因为路径的格式...

2  jquery进入drupal 7  ( Jquery into drupal 7 ) 
我正在尝试这个: http://jsfiddle.net/sghj5/ 在Drupal 7. 出于某种原因,当我将其粘贴到我的前面时 - Page.tpl(页脚)它不起作用。 我还尝试在我的template.php中包括js文件。 ...

12  我如何一次上传多个图像?  ( How can i upload multiple images all at once ) 
有没有办法在Drupal 7中同时上传多个图像? ...

4  D7中的个人资料字段?  ( Profile fields in d7 ) 
如何在Drupal 7中为用户添加字段,以便,名称和姓氏?我看到配置文件已弃用,在不使用内容配置文件的情况下有一种简单的方法? ...

3  从复选框获取变量  ( Get variables from checkboxes ) 
我正在创建我的第一个Drupal模块(Drupal 7,BTW),我几乎已经完成了它。有一个最后一件事,也就是说,我需要从多个复选框中获取值。 我的模块列出某些节点,每个节点都使用foreach $ nid获取复选框。所有使用表单API。 现在,当表单被提交时,只返回一个(1)个值 - as现在,甚至没有我检查的那...

2  Ajax表单提交后调用JavaScript函数  ( Call javascript function after ajax form submit ) 
如何在成功的Ajax表单提交后调用JavaScript函数?我想在我用 drupal_add_js() my_form_name_form($form, &$form_state) 中添加 998887661 的文件中调用函数。 ...

2  如何在表单中生成的值将函数提交到另一个函数?  ( How to pass value generated in the form submit function to another function ) 
我有一个与Drupal 7表格API和模块开发有关的问题。 我有一个非常简单的模块,函数如此。当访问某路径XYZ时,它会被Hook_Menu调用。 function myview_mainpage() { $content .= drupal_render(drupal_get_form('myview_f...

1  为节点保存/提交进程添加其他逻辑  ( Add additional logic to node save submit process ) 
在其中可以挂钩drupal以修改在插入数据库之前的特定字段的值? 例如,让我们说我想在节点插入数据库之前触发电子邮件或运行任意代码? 我一直在看Hook_node_PreSave,看起来它会尽我所需要,但我需要它只适用于一个内容类型。 ...

20  如何获得内容类型的名称?  ( How do i get the name of the content type ) 
在drupal 7中,我需要调用哪个函数来获取内容类型的名称?我有$ Node对象,如果我使用 $node->type ,我也有内容类型的ID。但我需要获取系统中设置的内容类型的名称,而不是像'name_of_the_content_type'的内容。我需要它作为'内容类型的名称'。 谢谢。 ...




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


Licensed under cc by-sa 3.0 with attribution required.