Add microdata friendly addresses and phone numbers to your SilverStripe objects.
Add microdata friendly addresses and phone numbers to your SilverStripe objects.
The venerable GridFieldExtensions https://github.com/ajshort/silverstripe-gridfieldextensions
Tested in SilverStripe 3.1
FlexiAddressExtension
.class Office extends Page
{
private static $extensions = array(
'FlexiAddressExtension'
);
}
FlexiAddress provides a shortcut to return the first address associated.
Here's an example 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>
You can also loop through addresses. Here's an example 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>
You may, as always, override the built-in templates by
adding them to your theme and changing markup as needed.
You may find the built-in address fields a bit too much. Here's a few strategies
to limit them;
---
FlexiAddressExtension:
flexiaddress_fields:
- StreetLine1
- City
- PhoneNumbers
class Office extends Page
{
protected static $flexiaddress_fields = array(
'StreetLine1',
'City',
'PhoneNumbers'
);
}
---
Office:
flexiaddress_fields:
- StreetLine1
- City
- PhoneNumbers
By default, flexiaddress adds its GridField to the Root.Address tab. You
can configure this in a couple of ways;
---
# Global Change
FlexiAddressExtension:
flexiaddress_tab: Root.Addresses
# Class Specific
Office:
flexiaddress_tab: Root.Main
flexiaddress_insertBefore: Content
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();
}
}
If you don't like "Create New Address", follow the Changing the Address Tab Name
procecedure, but alter the flexiaddress_addButton propperty.
Module rating system helping users find modules that are well supported. For more on how the rating system works visit Module standards
Score not correct? Let us know there is a problem