briceburg/silverstripe-flexiaddress

将微数据友好的地址和电话号码添加到您的 SilverStripe 对象中。

0.2.0 2015-07-15 02:32 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:13:36 UTC


README

将微数据友好的地址和电话号码添加到您的 SilverStripe 对象中。

功能

  • schema.org 微数据模板化
  • 扩展任何 DataObject
  • 通过 many_many 关系减少管理重复性并提高一致性
  • 通过 YAML 配置和子类扩展

需求

备受推崇的 GridFieldExtensions https://github.com/ajshort/silverstripe-gridfieldextensions

在 SilverStripe 3.1 中测试过

屏幕截图

editing

list

使用方法

  • 通过扩展对象使用 FlexiAddressExtension 来向您的对象添加地址和电话号码。
class Office extends Page
{

    private static $extensions = array(
        'FlexiAddressExtension'
    );

}
  • 在扩展对象后触发环境构建器 (/dev/build) -- 现在,当在 CMS 中编辑办公室时,您将看到地址选项卡。

前端

FlexiAddress 提供了一个返回关联的第一个地址的快捷方式。以下是一个 Office.ss 的示例:

```html
<div itemscope itemtype="http://schema.org/LocalBusiness" id="office">
  <h1>$Title</h1>

  ...
  
  $FlexiAddress
  
  <div class="office-phone-numbers">
    <% loop FlexiAddress.PhoneNumbers %>
      <% include FlexiAddressPhone %>
    <% end_loop %>
  </div>
  
  ...

</div>

您也可以遍历地址。以下是一个 Office.ss 的示例:

<div itemscope itemtype="http://schema.org/LocalBusiness" id="office">

  <h1>$Title</h1>

  ... 
  
  <% loop FlexiAddresses %>

    <h2>Address</h2>
    <% include FlexiAddress %> 
    
    <a href="$AddressMapLink" target="_blank" class="directions font-opensans">
      Get Directions
    </a> 
      
    <% loop PhoneNumbers %> 
      <% include FlexiAddressPhone %> 
    <% end_loop %> 
  <% end_loop %> 
  
  ... 
  
</div>

您始终可以通过将它们添加到您的主题并更改所需的标记来覆盖内置模板。

限制字段

您可能会觉得内置的地址字段有点多。以下是一些限制它们的策略:

  • 策略 1:通过我的网站配置 config.yml 全局限制
---

FlexiAddressExtension:
  flexiaddress_fields:
    - StreetLine1
    - City
    - PhoneNumbers
  • 策略 2:通过扩展类上的 $flexiaddress_fields 属性
class Office extends Page
{

    protected static $flexiaddress_fields = array(
        'StreetLine1',
        'City',
        'PhoneNumbers'
    );
}
  • 策略 3:通过扩展类的 YAML 配置
---

Office:
  flexiaddress_fields:
    - StreetLine1
    - City
    - PhoneNumbers

更改地址选项卡名称

默认情况下,flexiaddress 将其 GridField 添加到 Root.Address 选项卡。您可以通过以下几种方式配置此选项:

  • 策略 1:通过 YAML 配置
---

# Global Change
FlexiAddressExtension:
  flexiaddress_tab: Root.Addresses
  
# Class Specific
Office:
  flexiaddress_tab: Root.Main
  flexiaddress_insertBefore: Content
  • 策略 2:通过您的扩展类
class Office extends Page
{

    // Option 1 - properties
    ////////////////////////
    
    protected static $flexiaddress_tab = 'Root.Main';
    protected static $flexiaddress_insertBefore = 'Content';
   
    // Option 2 - via Config::inst()->update
    ////////////////////////////////////////
    
    public function getCMSFields()
    {
        $this->set_stat('flexiaddress_tab', 'Root.Addresses');
        return parent::getCMSFields();
    }
   
}

更改添加新 GridField 按钮的文本

如果您不喜欢 "创建新地址",请按照 更改地址选项卡名称 中的说明进行操作,但更改 flexiaddress_addButton 属性。