在保存节点之前将一些Charachter更改为所有字段 -- 7 领域 和 entities 领域 drupal 相关 的问题

Change some charachter in All field before saving node


2
vote

问题

中文

我想在保存节点中的每个字段上完成动作(更改一些charachter)。
我知道指定的字段可以使用 hook_node_presave ,但我希望在所有内容类型(接近300字段和40个内容类型)中的所有字段上执行此操作,其中OUT指定一个逐个。 有hook_filed_presave的drupal api或类似物的东西吗?

这是指定字段的工作

  field_text0  
英文原文

I want done a action (change some charachter) on every field in saving node.
I know for specified field can use hook_node_presave ,but I want do this on all field in all content type (proximity 300 field and 40 content types) with out specify one by one . Have drupal api for hook_filed_presave or something like it?

This is work for specified field

function custom_changes_node_presave($node){      if ($node->type ==='designer_background_images'){          $filename =$node->original->field_db_image['und']['0']['filename'];         $uri       =$node->original->field_db_image['und']['0']['uri'];          $filename    = str_replace (" ", "_", $filename);         $uri        = str_replace (" ", "_", $uri);          $node->original->field_db_image['und']['0']['filename']= $filename;         $node->original->field_db_image['und']['0']['uri']       = $uri;          //field_attach_presave('node', $node);              // And the actual field change for the given node (e.g. entity).          //field_attach_update('node', $node);          // echo "<pre>";             // print_r($node);         // exit;         // print $node->original->field_db_image['und']['0']['filename'];         // print $node->original->field_db_image['und']['0']['uri'];     } } 
     

回答列表

5
 
vote

你可能正在寻找 hook_entity_presave() < / code>

在即将创建或更新之前的实体上。

它相当于 hook_node_presave() ,但由于名称建议为所有实体类型运行。

从那里你可以使用字段信息api 函数来获取应该附加到该实体的字段列表,然后循环通过它们并执行字符替换。

 

You're probably looking for hook_entity_presave():

Act on an entity before it is about to be created or updated.

It's equivalent to hook_node_presave(), but as the name suggests is run for all entity types.

From there you can use the Field Info API functions to get a list of fields that should be attached to that entity, then loop through them and do the character replacement.

 
 
         
         
2
 
vote
vote
最佳答案
 

使用此方法,您可以访问内容类型中使用的所有字段。
entity_get_info doc 和 field_info_instances doc 带我想到我怎么能得到它们。

  function custommodule_entity_presave($entity,$type) {     $allFields=field_info_instances('node');     $savedFields=$allFields[$entity->type];     foreach($savedFields as $index=>$field) {         /// this is just general answer and for perform this act I have to be more careful         $entity->$field['und'][0] =my_custom_function ($entity->$field['und'][0]);     } }   
 

With this method you have access all fields used in your content types.
entity_get_info Doc and field_info_instances Doc take me idea how can I got them.

function custommodule_entity_presave($entity,$type) {     $allFields=field_info_instances('node');     $savedFields=$allFields[$entity->type];     foreach($savedFields as $index=>$field) {         /// this is just general answer and for perform this act I have to be more careful         $entity->$field['und'][0] =my_custom_function ($entity->$field['und'][0]);     } } 
 
 
-1
 
vote

您可以使用此模块进行:

  • http://drupal.org/project/transliteration 音译可帮助您 修复字段的名称。
  • http://drupal.org/project/filefield_paths aveves up tu将字段放在它的文件夹中。
  • 你也应该使用filefield_pahts的令牌。

这个3个模块是一个带有字段的每个Drupal项目中的"必须具有" 。

如果它们是所有值,则应激活"逆向更新" 以更新所有旧字段。

oskar

 

You can do it with this modules:

  • http://drupal.org/project/transliteration Transliteration help you to fix the name of fields.
  • http://drupal.org/project/filefield_paths helps you tu put the fields in it's folder.
  • Also you should use Token for filefield_pahts.

This 3 modules are a "must have" in every drupal projects with fields.

If they are all values, you should activated the "Retroactive update" to update all the old fields.

Oskar

 
 
   
   

相关问题

0  如何将Drupal字段的值添加到包装员的类中  ( How to add the value of a drupal field to the class of a wrapper div ) 
在客户端上工作Drupal 7站点,我的内容类型被推广到首页。内容类型具有列表字段,我想使用该字段的值将类添加到填充到首页的节点预告片上的包装器div。例如,HTML输出将是如此: <div class="field_value"> content </div> 我宁愿不必使用视图或nodequeue来执行...

12  Drupal的附着行为:对所有新加载的内容作出反应?  ( Drupals attach behaviours react on all newly loaded content ) 
我有两个不同的模块,这些模块在很多方面都在一起工作。他们一起工作的一件事是通过AJAX模块加载内容,并且模块B需要将事件侦听器附加到加载的内容。 但是,似乎在模块a通过ajax加载内容时,只有 drupal.behaviours.a 的"附加" 函数被调用,而不是"附加" 功能 drupal.behaviours.b...

20  如何使用搜索API稳健地工作的分类学同义词?  ( How to get taxonomy synonyms working robustly with search api ) 
标记同义词是许多站点中的流行,重要的功能(例如,在stackexchange上使用),以及用于成为Drupal 6的核心分类模块的一部分,在被删除支持使用Field API 的" 滚动您自己的"定制同义词系统。 当同义词可靠地工作时,它们在搜索中非常有用;例如,为了确保搜索"America" 查找内容标记的"USA"...

2  为用户提供相同角色的权限  ( Give permissions to user of the same role ) 
我在网站上工作,我要设置节点权限(编辑),以便用户可以编辑用户拥有的具有相同角色的节点。 如果我有角色"redactor" ,我可以编辑用户拥有的任何节点,该节点是角色"重新加工程序" 。 是否有一个模块这是这样做的? 或我要写一个自定义模块? ...

2  可以验证的用户发布自己的内容并查看自己的内容吗?  ( Can authenticaded users publish own content and see only own content ) 
除了具有许多有趣功能的模块外,允许经过身份验证的用户发布内容的最佳方法(基于自定义节点类型),但只允许仅由管理员(特定角色)或同一个用户吗?此类内容在发布时,仅对发布它的角色类型(管理员)和用户的用户可见。 ...

0  获取视图过滤器的值  ( Get the views filters value ) 
我正在构建一个具有SQL查询的PHP字段的视图。 我想知道我是否可以在我的SELECT语句中获取日期过滤器值才能使用它? ...

0  如何使用drupal.behaviors组组群体resement?  ( How to group li element via using drupal behaviors ) 
一个新手问题。 如何选择一系列li,以便我可以将它们移动到新元素内? 例如: <ul> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> <li>test</li> ...

19  重置模块的hook_update_n状态  ( Reseting the hook update n status of a module ) 
我正在扩展我以前写的模块,它需要我在 hook_update_N 中实现的一些模式更改。 我已经将模块的版本从 7.x-1.0 更新为 7.x-1.1 并实现了 foo_update_7100 ,它工作正常。 问题是我在 foo_update_7100 中犯了一个错误,现在我修复了它我不能重新运行7100更新。我需要...

3  节点表单验证未调用  ( Node form validation not called ) 
我想向节点表单添加一些自定义验证。 但由于某种原因,跳过验证功能,提交函数确实称为。 /* * Custom Form settings */ function frontpage_banners_form_promo_banner_node_form_alter(&$form, &$form_state, ...

2  如何在两个电机中显示表单模块?  ( How to display form module in two coloms ) 
我再次寻找你的帮助。 我有一个表单模块,应该在两个科学中显示,如此: http://www.quickbase.com/help/images/form_example.gif 我对如何解决这个问题做了很多研究,并且找不到这么多。 我是否需要函数 hook_form_alter 和 hook_theme ? ...

1  如何在Drupal 7中的寻呼机中使用图像  ( How to use image for next previous link in pager in drupal 7 ) 
我在drupal 7上酿造我想改变链接文本并用图像替换它们。如何实现以下内容: 在template.php中有任何函数吗? 在自定义主题中覆盖的模板是有没有办法到寻呼机? ...

2  hook_taxonomy_term_update(),在Drupal的核心代码中调用它在哪里?  ( Hook taxonomy term update where does it get invoked in drupals core code ) 
我在分类模块中查看了 module_invoke_all('taxonomy_term_update') (在整个Drupal核心中更多),但我没有找到任何东西。 在代码中调用该挂钩在哪里? ...

1  如何将内容拆分为不同的页面  ( How to split content into different pages ) 
如何将内容拆分为不同的页面。 节点/测试 进入 节点/测试 节点/测试/功能 节点/测试/图像 字段与字段组分组 谢谢, Marius ...

4  在包括没有儿童的观点中列出顶级级别  ( Listing top level terms in views including those without children ) 
我的词汇看起来像这个 级别1a 儿童A 儿童b 儿童c 级别1b 儿童A 儿童b 儿童c 级别1c 级别1d 儿童A 儿童b 儿童c 等级1e 我已经设法使用分类学期显示父母和儿童术语:父母术语和筛选(父母)分类学期:父项(不空)。但没有展示没有儿童的术语与"父母" 相同的水平...

16  基于第三方PHP类库的最佳实践  ( Best practice for third party php class based library ) 
我目前正在处理需要第三方PHP库的模块,这基本上是一个单个PHP类。通常,我会将它放在包含/子目录中并添加 files[] = includes/Foo.php 到我的.info文件,让Drupal 7类自动加载器在我做一个 $foo = new Foo() 时执行它的东西。 但是,我有权将此模块释放到公众...

12  如何在Drupal_Goto路径中包括哈希(#)?  ( How include hash in drupal goto path ) 
是否有任何方法可以在drupal_goto中包含#/ p> 我想要这样的东西 function MYMODULE_preprocess_node(&$variables) { $node = $variables['node']; switch ($node->type) { case 'prod...

1  防止hook_form_alter仅在admin中的前端工作?  ( Prevent hook form alter to works only on frontend not in admin ) 
我使用了一个hook_form_alter以随机改变表单字段值,并且其工作正常,但问题是当我在管理面板中打开此WebForm时,它只是更改我没有的值。它应保持由前端用户提交的相同的值。我希望这个钩子在前端仅适用于管理员。 ...

1  在管理面板中隐藏错误和警告  ( Hide error and warning in admin panel ) 
我想从管理面板隐藏错误和警告消息。我在管理面板中检查了选项,以获取错误报告和仍然显示管理面板中的错误和警告消息。让我如何删除它。 ...

0  在Drupal 7上使用内联javascript函数(不是jquery)  ( Use an inline javascript function not jquery on drupal 7 ) 
这就是jQuery如何包含在D7 中 (function ($) { // jquey codes here })(jQuery); 如何在D7中包含JavaScript代码(不是jQuery)? ...

1  如何创建“应用”/“您已经应用的”功能  ( How to create an apply you have already applied functionality ) 
我一直在击球,以便包括一个包括我正在建造的工作板的网站至关重要的功能。我尝试了几件事并不完全满足自己的案例: 1)使用标志 - 以及将用作作业应用程序创建页面的操作('重定向到URL')。额外的我设置了off标志(一旦您单击链接,就可以说"您已经应用了" 并使其禁用该用户。使用此方法的问题是,用户可以单击应用链接,...




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


Licensed under cc by-sa 3.0 with attribution required.