如何在地址域显示城市与州之间放置逗号? -- 7 领域 和 theming 领域 和 entities 领域 drupal 相关 的问题

How to put a comma between city and state in addressfield display?


3
vote

问题

中文

我正在使用带有drupal 7.10的 addressfield 模块。在显示地址域时,我想要一个逗号。目前地址如下所示:

  123 Main St SomeCity California 90100    

我希望它显示:

  123 Main St SomeCity, California 90100    

(注意"somecity" 之后的逗号)

如何实现这一目标?

更新

这种地址的整个格式仍然笼罩在我的神秘处。我开始认为控制格式的方法是创建自定义CTools插件。我发现这个API文档:

http://api.drupalhelp.net/api/邻菲尔德/地址菲尔德.Module / group / addressField_format / 7

我要探索它。

英文原文

I'm using the addressfield module with Drupal 7.10. I want a comma after the city name when displaying the addressfield. Currently addresses display like:

123 Main St SomeCity California 90100  

I want it to display like:

123 Main St SomeCity, California 90100  

(Note the comma after "SomeCity")

How can I achieve this?

UPDATE

This whole formatting of addresses is still shrouded in mystery for me. I'm starting to think the way to control the formatting is to create a custom ctools plugin. I found this api documentation:

http://api.drupalhelp.net/api/addressfield/addressfield.module/group/addressfield_format/7

I'm going to explore it.

        

回答列表

2
 
vote

这实际上很简单,一旦你知道钩子并有一些示例代码。您需要使用CTools Plugin API所需的正确。所以在自定义模块中,添加:

  /**  * Implements hook_ctools_plugin_directory().  */ function mymodule_ctools_plugin_directory($module, $plugin) {   if ($module == 'addressfield') {     return 'plugins/addressfield/' . $plugin;   } }   

然后在您在自定义模块中删除指定的目录中的插件文件。在这种情况下,插件/地址域。一个文件,它会做你正在寻找的东西都包含这样的东西:

  <?php /**  * @file  * city-comma.inc  *  * Adding comma after city.  */  /**  * Plugin definition for address field format.  */ $plugin = array(   'title' => t('Comma after city.'),   'format callback' => 'mymodule_city_comma',   'type' => 'address',   'weight' => -80, );  /**  * Callback for plugin definition.  */ function mymodule_city_comma(&$format, $address, $context = array()) {   if (in_array($address['country'], array('US', 'CA'))) {     if ($context['mode'] == 'render') {       // Add comma after city.       $format['locality_block']['locality']['#suffix'] = ',';     }   } }   

此文件实际上将在挂钩中定义的目录内部名为"格式" 的目录中。所以: mymodule/plugins/formats/city-comma.inc

 

This is actually pretty simple, once you know the hooks and have some example code. You're correct that you need to use the ctools plugin api. So in a custom module, add:

/**  * Implements hook_ctools_plugin_directory().  */ function mymodule_ctools_plugin_directory($module, $plugin) {   if ($module == 'addressfield') {     return 'plugins/addressfield/' . $plugin;   } } 

Then you drop plugin files in the directory you specified, within your custom module. In this case, plugins/addressfield. A file that will do what you're looking for would contain something like this:

<?php /**  * @file  * city-comma.inc  *  * Adding comma after city.  */  /**  * Plugin definition for address field format.  */ $plugin = array(   'title' => t('Comma after city.'),   'format callback' => 'mymodule_city_comma',   'type' => 'address',   'weight' => -80, );  /**  * Callback for plugin definition.  */ function mymodule_city_comma(&$format, $address, $context = array()) {   if (in_array($address['country'], array('US', 'CA'))) {     if ($context['mode'] == 'render') {       // Add comma after city.       $format['locality_block']['locality']['#suffix'] = ',';     }   } } 

This file would actually go in a directory called 'formats' inside the directory defined in the hook. So: mymodule/plugins/formats/city-comma.inc.

 
 
1
 
vote

肯定可以,但这需要一些php技能。

基本上,您将覆盖主题函数返回渲染此字段,这在这种情况下是 theme_addressfield_container()

在 theme_addressfield_container()中您可以看到所有地址属性都会被爆发。您可以轻松覆盖此功能以获得所需的结果。

 

Sure you can, but this needs some PHP skill.

Basically, you're going to override theme function responsble for rendering this field, which is theme_addressfield_container() in this case.

From function's declaration in theme_addressfield_container() you can see that all address attributes are being imploded. You can easily override this function to get the result that you want.

 
 
 
 
1
 
vote

打开主题文件夹,将此代码放在template.php

  <?php // Putting comma between City and State of address field function YOUR_THEME_NAME_addressfield_container(&$variables) {   $element = $variables['element'];   if($element['#title'] == 'City') {     $element['#children'] = trim($element['#children']) . ',';   }   $element['#children'] = trim($element['#children']);   if (strlen($element['#children']) > 0) {     $output = '<' . $element['#tag'] . drupal_attributes($element['#attributes']) . '>';     $output .= $element['#children'];     $output .= '</' . $element['#tag'] . ">";     return $output;   }   else {     return '';   } } ?>   
 

Open your theme folder, Put this code in template.php

<?php // Putting comma between City and State of address field function YOUR_THEME_NAME_addressfield_container(&$variables) {   $element = $variables['element'];   if($element['#title'] == 'City') {     $element['#children'] = trim($element['#children']) . ',';   }   $element['#children'] = trim($element['#children']);   if (strlen($element['#children']) > 0) {     $output = '<' . $element['#tag'] . drupal_attributes($element['#attributes']) . '>';     $output .= $element['#children'];     $output .= '</' . $element['#tag'] . ">";     return $output;   }   else {     return '';   } } ?> 
 
 
0
 
vote

你是正确的,地址使用ctools插件。

我建议你看看什么是ctools插件(内容类型,访问等),以及如何创建它们?我展示了如何创建新插件。

 

You're correct that Addressfield uses Ctools plugins.

I suggest you take a look What are Ctools plugin (content type, access, etc), and how does one create them? where I show how to create new plugins.

 
 

相关问题

2  下拉列表框+视图 - 不使用分类物  ( Dropdown with search box views without using taxonomy ) 
好的,所以我一直在谷歌上搜索几周,我如何这样做,我把一些东西在一起。 我想结合年份值,并将其与搜索框组合。 现在,我想知道我可以创建一个视图,然后通过URL传递上下文参数。这完美无缺。我可以通过访问URL http://example.com/cars/来到1977年1977年为汽车制造的制动器的结果1977年,刹...

2  允许用户通过UI设置一些CSS设置  ( Allow user to set some css settings through ui ) 
用户希望能够为网站的外观选择一些尺寸和颜色。这些是CSS规则。我有一个模糊的愿景如何通过模块来完成,但也许已经存在了这样的东西? 我需要的是将某种形式与字段为组合框,允许用户从几个值中进行选择。例如。允许他从{红色,蓝色,黄色}中选择"新闻标题的背景" ,恰好是.News-header-background类。 ...

1  可以在Drupal 7上触发Ajax呼叫重新加载自己的表单吗?  ( Can a form triggering an ajax call reload itself on drupal 7 ) 
我正在尝试建立一个页面,以便在顶部的流提出问题,因此我需要ajax来避免重新加载。它实际上很简单。顶部是一个带有流的节点,我添加到下面的块。 一个问题,问题,问题的票数和"添加投票" 按钮 一种添加新节点的表单"用0投票" 我有两个问题。 a)当我点击2的提交按钮时。块我添加一个问题,我可以用新问题更新表,...

5  如何修改页面中的分类术语路径呈现数组?  ( How to modify taxonomy term path in the page render array ) 
我正在尝试在节点页面上显示之前更改一个术语的路径。我在template.php中使用这个预处理函数: function bartik_preprocess_node(&$variables) { $variables['field_photo_topic']['0']['taxonomy_term']->...

1  用户的论坛CMS? [关闭]  ( Forum cms for user ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

0  可以使用数字启动主题名称吗?  ( Can a theme name be started with a number ) 
我可以用数字开始主题名称吗?例如:"123Go" drupal识别文件夹&amp;以其开头的文件? 它在寺庙中工作.PHP作为函数的开始? ...

1  在视图列表节点中显示节点注释的分组视图  ( Displaying grouped view of node comments in a view listing nodes ) 
我创建了一个列出了许多节点的视图。我已经添加了"节点注释" 的关系,然后将注释添加为视图中的字段。我所拥有的问题是,如果节点上有多个注释,则视图列出多次节点。例如,当前视图显示此名称 Node Title: Title 1 Nid: 1 Node Image: Image Comment: Comment 1 ...

5  在Drupal 7中,我如何只有在查看前页面时才能包含CSS文件?  ( In drupal 7 how can i include a css file only when the front page is being view ) 
我想仅在查看前页面时包含特定的CSS文件,因为它只适用于前页,并且它是一个相对大的文件。我知道解决方案将涉及使用 drupal_add_css()我不确定在我的主题 theme/template.php3 文件中的位置。我的主题内有特定的钩子,我应该实施它吗?谢谢。 编辑:我基本上有代码,我只是不确定我的主题文件可以...

1  Drupal 7,Ubercart,产品搜索按价格范围  ( Drupal 7 ubercart product search by price range ) 
我正在使用ubercart 3.x,drupal7。有人可以告诉我如何在指定的时间间隔内使用价格创建一个用于搜索产品的表格? IE。用户应以最低价格填充此表格,以间隔和最高价格和发布表格后,他将看到所有适合的产品。 ...

1  RTF与内联图像+字限制的模块?  ( Modules for rtf with inline images word limits ) 
我想允许我的所有网站的用户添加自己的博客文章,具有某些约束。 这是我想要给它们的表格: Title : Contents (RTF, max 700 characters) : Submit (or Login/Register then Submit) : 所有帖子的强制性: 在注释上启用读/写权限 ...

1  从Drupal的前端更改模块中的代码  ( Change the code in the module from the front end of drupal ) 
我已创建了我的自定义模块。我可以从Drupal的末尾编辑我的模块,然后将其前后提起并编辑模块。是否有任何模块为此目的? ...

1  CSS移动兼容的耳机主题吗?  ( Css mobile compatible theme for drupal ) 
是否有CSS移动兼容的主题,用于DRUPAL? CSS移动兼容站点的示例: http://framelessgrid.com/ ...

0  如何为内容添加类别  ( How to add categories to content ) 
我仍然是德鲁佩尔7.我读过一些关于Drupal的工作的几件事,但我不太好了。 如何为不同类别创建文章?我想制作可以在图形,绘画或3D等下列出的文章。如何将它们分类在主菜单中?博客模块或书本模块如何不同? 我知道这可能已经在这里发布了同样的地方,但我只想在长章中找不到一个简单的解释。谢谢家伙。 ...

21  在模态窗口中显示表单[已关闭]  ( Show forms in a modal window ) 
关闭。这个问题是基于意见的。它目前不接受答案。 想要改进这个问题?更新问题,所以它可以通过编辑此帖的事实和引用来回答。 关闭 3年前。 ...

1  YouTube缩略图 - 单击时调整接口小部件和行为的选项?  ( Youtube thumbnails options for adjusting interface widgets and behaviour when ) 
我希望将YouTube视频添加到我的网站作为链接 - 我想使用视频缩略图。我不关心使用哪种缩略图(如本文所讨论的:如何控制YouTube中的预览图像) 我所关注的是戏剧等等。按钮在缩略图上看(即,一切都从youtube中出现的方式减少了大小)。 YouTube自己提供了哪些选项?三方解决方案怎么样? facebo...

2  显示最新编辑的日期,而不是节点发布日期  ( Showing the date of the latest edit instead of nodes posting date ) 
我有一些我经常更新一些节点,但在内容窗格中,我可以看到节点的发布日期。 如何使Drupal 7显示最新编辑的日期,而不是发布日期? ...

3  如何以编程方式确定节点是否是OG组类型节点?  ( How to programmatically determine whether a node is a og group type node ) 
Drupal 7,OG 如何编程方式确定节点是否是OG组类型节点? ...

14  是否有功能清除模块内的看门狗日志?  ( Is there a function to clear the watchdog log inside a module ) 
我不想在调试时每次清除从UI的看门狗日志。它变得耗时和繁琐。 是否有一个Drupal函数来清除模块内的看门狗日志? ...

2  面板仍在添加侧栏  ( Panels is still adding sidebars ) 
这是我们正在做的事情: 我们正在努力为我们正在努力的网站建立一个新的主题。 我们使用的主题和上下文来利用我们正在使用新主题而不是面板的新给定内容类型/ drupal路径的区域。 面板以前拥有我们正在建设的页面。 出于某种原因,侧栏/块(来自前一个面板)仍然仍然打印到新主题的$ Content标记。 任何想法?...

7  如何在Drupal Ajax呼叫完成时触发JavaScript函数?  ( How can i trigger a javascript function when a drupal ajax call is complete ) 
在Drupal Ajax完成后,我需要做一些额外的东西,将一些东西插入DOM。用jquery这是脑卒中的简单,但我不能为我的生活弄清楚如何在Drupal 7:s 我是否添加了我的ajaxified链接的东西?我读了关于附加行为的东西......混淆是设置的... ...




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


Licensed under cc by-sa 3.0 with attribution required.