将JavaScript添加到特定内容类型中 -- 7 领域 和 javascript 领域 drupal 相关 的问题

Add JavaScript into a specific content type


9
vote

问题

中文

我想知道将JavaScript文件添加到基于内容类型上的特定页面中的最佳方法是什么。例如,我想添加这个:

  <script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>   

到目前为止,我所做的就是使用这种方式添加到我的特定内容类型中。对于map_page内容类型,我在页面 - map_page.tpl.php中添加以下两行代码。

  drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external'); $scripts = drupal_get_js();   

还有其他更好的方法吗?如果可能的话可以给出一些例子,目前不太了解...

英文原文

I would like to know what is the best way to add a JavaScript file into a specific page basing on the content type. For example, I want to add this:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script> 

So far, what I have done is using this way to add into my specific content type. For the map_page content type, I adde the below two line of code in page--map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external'); $scripts = drupal_get_js(); 

Is there any other better way? if possible can give some example, currently not really understand well...

     

回答列表

6
 
vote

我无法评论适当的drupal 7等价物,但在Drupal 6站点中,我在 template_preprocess_page

我将有一些逻辑来做出决定(基于 arg() page_manager_get_current_page() 从面板),然后用prepend 99887664 外部脚本。我预付请不要用任何本地脚本遇到依赖性问题。

我还将有时设置一个名为 $global_scripts 的新区域,因为我想从CDN中加载的Google API和SWFObject,并且在 $scripts 在页面模板中。

是诚实的,尽管我通常拥有所有页面上的所有JS,以便文件缓存。

 

I can't comment on the proper Drupal 7 equivalent, but in Drupal 6 sites I do this in a template_preprocess_page.

I will have some logic to make the decision (either based on arg() or page_manager_get_current_page() from panels), and then prepend $vars["scripts"] with the external script. I prepend so that I don't run into dependency trouble with any local scripts.

I will also sometimes set up a new region called $global_scripts for thinks like Google API and SWFObject that I want to load from a CDN, and this gets printed out before $scripts in the page template.

To be honest, though I normally have all JS on all pages so that the files get cached.

 
 
6
 
vote

由于Drupal不会让您重新定义 template_preprocess_node (因为它已经在node.module中定义),我在我的自定义模块中添加了一个预处理器函数:

  function mymodule_preprocess_node(&$vars) {   if ($vars['type'] == 'my-node-type') {     drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');   } }   

我使用 preprocess_node 而不是 /** * Implementation of hook_wysiwyg_plugin * */ function MYMODULE_wysiwyg_plugin($editor) { // if the editor is tinymce include the fullpage plugin so that embedded css is included $plugin_path = wysiwyg_get_path('tinymce'); switch ($editor) { case 'tinymce': $plugins = array( 'fullpage' => array( 'path' => $plugin_path . '/jscripts/tiny_mce/plugins/fullpage', 'buttons' => array('fullpage' => t('Full Page')), 'url' => 'http://www.tinymce.com/wiki.php/Plugin:fullpage', 'internal' => TRUE, 'load' => TRUE ) ); return $plugins; default: break; } } 0 ,因为它更容易到达节点类型。如果您实际上引用了JavaScript文件,那么它将自动缓存(参见参数部分)。

 

Since Drupal won't let you redefine template_preprocess_node (because it's already defined in node.module), I added a preprocessor function in my custom module:

function mymodule_preprocess_node(&$vars) {   if ($vars['type'] == 'my-node-type') {     drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');   } } 

I used preprocess_node rather than preprocess_page because it's easier to get to the node type. If you actually reference a javascript file, then it will be automatically cached (see Parameters section).

 
 
2
 
vote

您还可以使用Hook_Node_View检查内容类型,然后以您已执行的方式添加JS。

如果您有一个输出将使用js使用的信息的字段,则在那里使用预处理程序添加js,因此js包括依赖于显示地图而不是内容类型的字段。

 

you could also use hook_node_view check for the content type and then add the js in the way you are doing already.

OR

If you have a field which outputs the information which will use the JS use a preprocessor there to add the js, so the js include is dependent on the field displaying the map rather than the content type.

 
 
0
 
vote

一个简单的解决方案是放置add_js:

  /**  * Implementation of hook_wysiwyg_plugin  *  */ function MYMODULE_wysiwyg_plugin($editor) {   // if the editor is tinymce include the fullpage plugin so that embedded css is included   $plugin_path = wysiwyg_get_path('tinymce');   switch ($editor) {     case 'tinymce':       $plugins = array(         'fullpage' => array(           'path' => $plugin_path . '/jscripts/tiny_mce/plugins/fullpage',           'buttons' => array('fullpage' => t('Full Page')),           'url' => 'http://www.tinymce.com/wiki.php/Plugin:fullpage',           'internal' => TRUE,           'load' => TRUE         )       );       return $plugins;     default:       break;   } } 1  

在页面/节点template.php中。

 

A simple solution is to just place the add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js'); 

in the page/node template.php.

 
 

相关问题

3  第一个ajax请求正好工作,接下来需要太多时间  ( First ajax request is working very well next takes too much time ) 
我现在在jaxing我的网站上工作了很长时间。 我发现了一种为我工作的方法,但只有第一个ajax请求就是正确的方式工作;下一个请求至少需要两次。 我想,它的行为如此,因为我使用每个请求从模板文件加载整个脚本。从该模板文件中删除了 998887661 ;结果是,请求采用之前采取的时间。 这是我正在使用的文件的内容。 ...

0  自定义视图中为foreach()错误提供的参数无效  ( Invalid argument supplied for foreach error in a custom view ) 
我想垂直显示一个表,我发现一些代码这样做,但我收到以下错误: 警告:站点/模块/视图/主题/视图-Paints.tpl.php提供的foreach()提供的无效参数。 第35行包含以下代码: columns large-3 medium-4 small-64 。 如果我注释出该行,则表将停止垂直显示。我读到Dru...

3  在我网站上的每个页面中包含JavaScript / jQuery onload的最佳方式  ( Best way for including javascript jquery onload in every page on my site ) 
目前,在我的主题中.info文件我包括2个脚本: scripts[] = js/backstretch.js scripts[] = js/scripts.js backstretch是一个jQuery插件,允许扩展背景图像覆盖整个页面。 我目前正在使用此代码来自动加载js: (function ($...

3  根据坐标设置地点国家/地区  ( Set location country based on coordinates ) 
有没有一种方法来拥有位置根据纬度/经度选择适当的国家/地区节点已保存? ...

4  哪个库更好的图像处理,GD2或ImageMagick?  ( Which library is better for image processing gd2 or imagemagick ) 
是imageMagick由Drupal 7支持?如果答案是正面的,这对图像处理更好,在GD2和ImageMagick之间? 是Drupal 7的任何其他替代品? ...

1  不要缓存自定义块  ( Do not cache custom block ) 
我有一个在代码中创建的自定义块。我不想缓存块。我知道我需要使用block_no_cache,但我不确定在哪里使用它。 function mymod_block($op = 'list', $delta = 0) { // set up an empty array which will contain t...

1  将Drupal复制到WebHosting服务  ( Copying drupal to a webhosting service ) 
将数据库复制(传输)一个完整的Drupal Web复制到Web托管服务是什么?可能发生的问题是什么?我想从localhost到domainname更改网站名称。似乎其他一切都会是一样的。我正在使用Ubuntu和Drupal 7.0,Apache,MySQL。我应该考虑网络托管的操作系统及其服务器,数据库和类似的东西吗...

8  如何隐藏用户页面中的“视图”选项卡?  ( How to hide the view tab in user page ) 
在用户页面(www.example.com/user)中,有 [View | Edit] 选项卡。是否可以隐藏 99887661 标签,并在那里离开 Edit 选项卡? ...

0  在暴露视图下使用令牌筛选  ( Using tokens under exposed views filter ) 
我已经创建了一个有曝光过滤器的视图。在我的显示中,我有一个使用我不想显示的令牌部分: 使用主题开发人员这是我可以到达的最接近的: 所以它似乎是批量运营的一部分。如何摆脱此文本? ...

4  具有评论的节点  ( Nodes with comments in view ) 
我想创建一个返回x类型的所有节点的视图。在每个节点下,我想要返回该节点的注释。 节点1 评论1 评论2 评论3 节点2 评论1 节点3 评论1 评论2 上面的东西。是可能的吗? ...

8  过滤分类学 - 别名而不是术语ID?  ( Filter with taxonomy term alias instead of term id ) 
我的视图通过分类学期ID过滤。 http://aelasoca.cat/web/ (在主菜单中,我链接到分类ID的3到8)。如何使用分类学期别名来过滤,而不是它的ID ?? (不确定它是否与以下内容相同:观点,分类,块和背景......我做错了什么?) ...

2  nodequeue中的每个项目的元数据  ( Metadata per item in a nodequeue ) 
nodequeue 中的项目是对nid的引用。在某些情况下,您要将一些元数据添加到此队列项,例如更好地满足特定列表的替代标题或描述。 这样做的方式是创建一个具有 nodeReference 的"nodequeue项目" 内容类型到实际节点。虽然这将解决问题,但在管理时不是最好的用户体验。 有更好的方法吗? ...

5  如何隐藏/删除特定菜单标题tittle  ( How to hide remove a specific menu heading tittle ) 
我已经使用 superfish 包含以下项目:"菜单1," 菜单2,"" 菜单3"和" 联系"。 当我单击每个菜单时,将显示标题标题。我想隐藏联系人菜单标题。我试图将其隐藏在块中,但每个菜单没有块标题。 如何只隐藏"联系人" 菜单标题标题? ...

0  CCK NodeReference单个Imagefields  ( Cck nodereference individual imagefields ) 
是否有一种方法可以在节点中的每个单个图像上使用NodeRefere字段?图像是CCK Imagefields。 ...

2  嵌入式图像未在Google Chrome中显示  ( Embedded images not shown in google chrome ) 
我刚才意识到我的嵌入式图像来自外部来源,在Google Chrome中没有显示,但他们在Safari和Firefox中工作正常。 我甚至无法单击我用标记生成的链接,因为它不可点击。 也许有人对为什么发生这种想法。 <a href="content/httpwwwgooglede#content-top" tit...

0  查看不同日期之间的行样式节点  ( Views row style node heading between different dates ) 
我需要一个显示全节点的视图。所以我已经将行风格设置为节点。所以我有。 节点1 节点2 节点3 我想要的是 11/05/2010 节点1 10/05/2010 节点2 节点3 我想在特定日期的每组节点之间放置标题。这可以完成吗? ...

1  手动Ubercart查看分类令(D6)  ( Manual ubercart views taxonomy order d6 ) 
客户希望父分类视图页面以手动安排订购,只要他的信仰最受欢迎(这不是数据库中的字段;我们也没有在数据库中拥有此信息)。 无论如何都是有基于重量订购视图页面? ...

1  私人文件系统和用户访问  ( Private file system and user access ) 
有没有办法保护Drupal文件可以通过文件路径访问(putting http:/ /www.domain.com/files/image.jpg )在浏览器URL中从用户播放? ...

5  只允许某些用户类型创建帐户  ( Allow only certain user type to create account ) 
我必须为用户添加新角色,而不是可以为他人创建帐户。 我创建新角色并添加创建配置文件内容权限。 但是当我是匿名链接"清除新帐户" 仍然出现,我可以创建帐户。我只想创建某些角色来创建帐户,而不是每个人。 有人可以给我任何建议吗? ...

3  如何在表格中制作每个标题可点击并添加图表?  ( How to make each header in a table clickable and add a chart to it ) 
我使用了视图模块以显示外部数据库(这是正常的),但我想让每个标题点击并添加图表。 是否有一个模块来执行此操作,或者有没有办法我可以做到这一点? 我发现了一些图表模块;有些很好,但他们要求我手动创建每个图表,使用样式,数据动态地对它进行馈送。问题是我的表有很多标题;我翻转行和列,但它有超过100个标题。 ...




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


Licensed under cc by-sa 3.0 with attribution required.