用地址字段模块重新排列子字段 -- entities 领域 drupal 相关 的问题

Rearranging subfields with the Address Field module


5
vote

问题

中文

有没有办法将窗口小部件中的字段用特定的挂钩重新排列?我应该使用 hook_form_alter() 吗?

更具体,我想在使用地址字段模块。

英文原文

Is there a way to rearrange the fields within the widget with a specific hook? Should I use hook_form_alter()?

To be more specific, I want to put the country field below the zip-code field when using the Address Field module.

  

回答列表

10
 
vote
vote
最佳答案
 

我有两个解决方案:

  1. hook_field_widget_form_alter()
  2. ctools插件

解决方案1. hook_field_widget_form_alter()。

  /**  * Implements hook_field_widget_form_alter().  */ function MYMODULE_field_widget_form_alter(&$element, $form_state, $context) {   if(!empty($element['#addressfield'])) {     $element['country']['#weight'] = 100;   } }   

使用 $element $context $context 阵列,实现自己 IF 语句。您可以在此处找到有关该字段和用户的所有信息。

解决方案2. CTools插件

CTOOLS插件可能。点评 addressfield/plugins/format/ 或 https://drupal.org/project/addressfield_vn 作为一个例子。

只需使用AddressField Alter 5步骤添加您的自定义插件:

步骤1:创建 form_set_error()0 文件夹结构。

步骤2:将下一个代码添加到 form_set_error()1 文件:

  form_set_error()2  

步骤3:使用更改代码添加文件。 e.g .: form_set_error()3

  form_set_error()4  

步骤4: form_set_error()5

步骤5:在客户配置文件字段设置中启用您的AddressField的插件。例如。在 form_set_error()6

在当前示例中,所有更改代码都将在 form_set_error()7 函数中。只是玩你的领域的权重,你会重新安排表格。

 

I have two solutions for it:

  1. hook_field_widget_form_alter()
  2. Ctools plugin

Solution 1. hook_field_widget_form_alter().

/**  * Implements hook_field_widget_form_alter().  */ function MYMODULE_field_widget_form_alter(&$element, $form_state, $context) {   if(!empty($element['#addressfield'])) {     $element['country']['#weight'] = 100;   } } 

Use $element and $context arrays and implement own IF statement. You can find all the information about the field and user here.

Solution 2. Ctools plugin

It's possible with ctools plugins. Review addressfield/plugins/format/ or https://drupal.org/project/addressfield_vn as an example.

Just add your custom plugin with addressfield alter in 5 steps:

Step 1: Create MYMODULE/plugins/format/ folders structure.

Step 2: Add next code to your MYMODULE.module file:

/**  * Implements hook_ctools_plugin_directory().  */ function MYMODULE_ctools_plugin_directory($module, $plugin) {   if ($module == 'addressfield') {     return 'plugins/' . $plugin;   } }  /**  * Implements hook_ctools_plugin_type().  */ function MYMODULE_ctools_plugin_type() {   $plugins['format'] = array(     'load themes' => TRUE,   );   return $plugins; } 

Step 3: Add file with alter code. E.g.: MYMODULE/plugins/format/address-alter.inc:

/**  * @file  * Move country field to the very end.  */  $plugin = array(   'title' => t('Alter addressfield'),   'format callback' => 'MYMODULE_format_address_alter_country',   'type' => 'address',   'weight' => -80, );  /**  * Format callback.  *  * @see CALLBACK_addressfield_format_callback()  */ function MYMODULE_format_address_alter_country(&$format, $address, $context = array()) {   // Move country field to the very end.   $format['country']['#weight'] = 100; } 

Step 4: drush cc all

Step 5: Enable your plugin for addressfield in customer profile fields settings. E.g. at /admin/commerce/customer-profiles/types/billing/fields/commerce_customer_address

In the current example all the alter code will be inside the MYMODULE_format_address_alter_country() function. Just play with weights of your fields and you'll get the form rearranged.

 
 
2
 
vote

将国家字段首先保持在第一个位置是有意义的,因为其他字段根据所选国家/地区的变更。

 

It makes sense to keep the country field in the first place, as the other fields change depending on the selected country.

 
 
       
       

相关问题

8  慢速“添加另一件商品”,具有无限的值字段  ( Slow add another item with unlimited valued fields ) 
在drupal 7中,当您有没有无限值的字段(假设图像字段)时,"添加另一项" 响应时间在添加10 - 20项后,"添加其他项目" 响应时间变得非常慢。你怎么打这个问题?你有没有遇到过这个问题? 我创建了一个项目,其中用户可以添加最多100个图像字段的值,理论上有无限值设置。但是,在添加十几个图像后,每一次新点...

3  当一个CT引用另一个CT引用时,如何消除重复的Drupal节点?  ( How can i eliminate duplicate drupal nodes in a view when one ct references the ) 
drupal 7,相关模块:视图&实体参考 我有一个视图,简单地显示了两种不同内容类型记录的"预告片" 显示类型,我们会说他们是文章和页面。这是一个视图页面。 我的文章CT有一些简单的字段。 我的页面ct有几个字段,还有一个实体参考字段(无限条目)。实体参考字段指向其他物品节点。 我的视图,随着预期的,...

0  如何设置最小次数的必填字段?  ( How to set minimum number of required fields ) 
我需要为Drupal 7中的多个文件字段设置最小所需值数。我只能找到选项以使现场所需的字段或设置最大允许值数。有没有办法设置所需值的最小数量? ...

3  最轻的方式来控制领域的标记  ( Lightest way to control a fields markup ) 
到目前为止,我已经使用显示套件来控制实体的输出。这尤其适用于节点的字段,默认接收多个包装器(如 99887664 , field-item ,Zebras),我不需要。如果我错了,请纠正我,但我会说只为这个目的安装展示套件是一个很大的开销。如果您同意这一点,那么可以成为我想要的标记的最轻的方法? ...

4  使用多个值迁移文本字段  ( Migrate text field with multiple values ) 
我有一个简单的文本字段,允许2个值,让我们称之为 field_text 。我的源数据库有两列,假设 text1 和 text2 。 我想设置我的迁移字段映射,以便使用 text1 作为 field_text 的第一个值 text2 作为 field_text 的第二值。 换句话说,这样的东西: $this->a...

1  通过D7中的字段检索分类学术语  ( Retrieve taxonomy term by field in d7 ) 
我有一个具有字段"Legacy_ID" 的词汇,它是另一个相关系统的主要键。我正在建立一个例程,以根据相关系统的变化更新Drupal系统中的数据。另外,直接击中DB,有没有办法从字段中检索TID或整个术语? ...

0  倒计时定时器字段找不到倒计时定时器库 - 即使它在那里  ( Countdown timer field cannot find countdown timer library even though its the ) 
我在"管理员" 中的"倒计时定时器字段" 模块启用"倒计时定时器字段" 模块时面临的问题 - > "模块" - >字段。 我得到的错误消息是 "jQuery倒数定时器库无法找到。请下载它,将其安装在图书馆目录中,并将目录重命名为jQuery-toundown。库应在像网站/所有/库/ jQuery的路...

2  在用户配置文件和内容类型之间共享字段及其数据?  ( Sharing fields and their data between a user profile and a content type ) 
我有一个名为"profile" 的内容类型。这是一个独立的内容类型,可能或可能不会与站点上的实际用户相关联。 因此,我需要找到一种方式来共享Drupal用户和新自定义内容类型之间的配置文件字段。换句话说,如果在Drupal用户配置文件页面上编辑"家庭地址" 字段,则该字段(及其数据)应显示在与用户关联的配置文件页面上...

0  渲染实体的所有字段(即查看实体)  ( Rendering all fields of an entity i e viewing the entity ) 
我正在尝试渲染附加到自定义实体的所有字段。这将用于"查看" 实体,例如您将查看节点或用户等。 我首先尝试使用 field_attach_view : $fields = field_attach_view('contacts', $entity, 'full'); 但它只给了我这个: [#pre_ren...

5  我应该什么时候使用hook_field_attach_presave(),以及hook_entity_presave()?  ( When should i use hook field attach presave and when hook entity presave ) 
我正在寻找在保存之前在实体字段上采取行动的方法,我注意到了以下关于 hook_field_attach_presave()和 hook_entity_presave(): 他们采用相同的参数,但以不同的顺序。 当保存实体时,它们都被称为。例如, caxonomy_term_save()包含以下代码。 // I...

1  默认情况下,如何确保用户字段隐藏在用户字段中?  ( How can i ensure a user field is hidden by default for the logged in user ) 
模块x提供字段定义并将其附加到用户实体。 以这种方式将元数据连接到用户,使其在站点上访问它的非常方便的方法。 但是,默认情况下,登录用户也能够查看和编辑此数据,这并不总是可取的。 是有一种方法可以使用相同的模块来确保默认情况下隐藏此字段? ...

7  drupal 7面位搜索:始终显示方面  ( Drupal 7 faceted search always show facets ) 
我有一个配方的搜索工作,它使用searchapi,facetapi和entityapi。我不是那个开发这个的人,但我有一些司布的经验。截至目前,导航使用选择链接,如下所示(第一级别的子弹点不是链接)。选择混合时,声音设计和组成随预期消失。 客户端想要的所有项目都是仍然保持可见的,并且在用户钻取时选择(即使它没有返...

4  最简单的方法,将辅助数据库中的现有数据作为实体公开?  ( Easiest way to expose existing data in secondary database as entities ) 
给定"外部" 或"辅助" 数据库中的"节点" 数据库表,将它们暴露为实体的最简单方法是什么? 实体模块使存储在本地数据库中的数据似乎很容易,但我'不确定如何将其翻译成另一个数据库。 ...

1  如何在Drupal 7中以编程方式生成现场项目的字段项列表?  ( How to generate a list of field items using the field item name programmatically ) 
我需要一种方法来生成特定字段中所有项目的简单列表。字段名称是字段_portfolio_description,我希望通过结果循环循环并将每个项目输出到无序列表中。例如: <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> 是否有办...

4  批量删除实体类型  ( Batch deleting entity types ) 
在我的一个网站上,我有超过600个配置文件2配置文件类型(其中大多数在20-30个字段实例之间,有些则具有刚刚在该类型中使用的其他字段)。我已经测试了一些不同的方法进行批量删除,但无法找到使用实体/配置文件API的方法来获取删除,而无需基本上擦除网站几个小时。 似乎,当删除内容类型,配置文件类型等时,每次删除都会清除...

2  如何自动捕获来自URL的图像?  ( How to automatically capture images from urls ) 
我的网站是一个书签网站,人们共享URL。 首先,如果提交的页面具有Facebook打开图形图像信息,则Drupal应将该图像传输到本地文件并显示它(类似于Facebook上的共享链接)。 否则,显示页面的缩略图预览。 感谢提前帮助。 ...

2  创建与疏浚词汇链接的字段  ( Create a field linked to a vocabulary with drush ) 
让我们说我创建了一个称为 ABC 的分类词汇。 对于这个词汇量 ABC ,我想使用drush创建许多字段。 我试过 drush field-create ABC myfield,text,text_textfield 它有效,没有给出任何错误,但如果我转到管理员面板,我点击 structure => tax...

6  创建“实体编辑”表单的模块?  ( Module for creating entity edit form ) 
是否有一个模块,该模块将占用实体机器名称和可选的ID作为输入,并将合适的编辑表单生成输出? ...

0  从JavaScript / jQuery(Drupal 7)与Drupal沟通  ( Communicating with drupal from javascript jquery drupal 7 ) 
我正在尝试创建一个动态填充的选择列表字段窗口小部件。此窗口小部件由三个jQuery多个选择组成。当用户从第一个选择列表中进行选择时,我需要动态地填充第二选择列表的内容。我的问题是,我需要根据第一个选择和唯一可以通过Ajax调用到Drupal端点的Ajax调用来访问Drupal中存储在Drupal中的数据。等待Ajax...

1  hook_field_presave()没有被叫  ( Hook field presave isnt getting called ) 
摘要 我需要在保存之前编辑一些数据,而 hook_field_presave() 正好看起来我需要的是什么,但它没有被称为某种原因。 方案 我想编辑从更改到位置字段的数据(位置模块),所以我可以在没有提供并确保保存时查找纬度和经度信息。 实现 此刻我只是将钩子添加到位置。在将它们移动到一个单独的模块之前,...




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


Licensed under cc by-sa 3.0 with attribution required.