Location Pages¶
Create location pages for individual locations. These could be stores, distributors, facilities, etc. Placing these location pages under a location landing page aggregates them using an interactive Google Map.
Usage¶
First start by creating a “Location Landing Page” and then add any number of “Location Page”s as children of the “Location Landing Page”. Each child page here represents a location that will have its own page and show up in its parent Google map. Add content to this page as you would for a normal Web Page.
Location Landing Page¶
Layout Tab¶
Center Latitude: The latitude you want the Google map to center on.
Center Longitude: The longitude you want the Google map to center on.
Zoom: The zoom level you want the Google map to default to. This requires an API key to use zoom. The zoom values can be between 1-20. 1: World, 5: Landmass continent, 10: City, 15: Streets, 20: Buildings
Next, save the Location Landing Page. Now create a child “Location Page” under your new “Location Landing Page”.
Location Page¶
Content Tab¶
Address: The address of the location.
Website: The website for the location, if applicable.
Phone Number: The phone number of the location, if applicable.
Layout Tab¶
Map Title: A custom title that will be used for this location’s Google map pin. It will default to the page’s normal title if not provided.
Map Description: A custom description that will be used for this location’s Google map pin.
Settings Tab¶
Auto Update Latitude and Longitude: If checked, the latitude and longitude will be calculated whenever the page is saved based off of the provided address.
Latitude: The latitude that you want this location’s Google map pin to be set as.
Longitude: The longitude that you want this location’s Google map pin to be set as.
Implementation¶
The store locator is built-in to Wagtail CRX but is not enabled by default. To implement, add
the following to your website/models.py
:
from coderedcms.models import CoderedLocationIndexPage, CoderedLocationPage
class LocationPage(CoderedLocationPage):
"""
A page that holds a location. This could be a store, a restaurant, etc.
"""
class Meta:
verbose_name = 'Location Page'
template = 'coderedcms/pages/location_page.html'
# Only allow LocationIndexPages above this page.
parent_page_types = ['website.LocationIndexPage']
class LocationIndexPage(CoderedLocationIndexPage):
"""
A page that holds a list of locations and displays them with a Google Map.
This does require a Google Maps API Key in Settings > CRX Settings
"""
class Meta:
verbose_name = 'Location Landing Page'
# Override to specify custom index ordering choice/default.
index_query_pagemodel = 'website.LocationPage'
# Only allow LocationPages beneath this page.
subpage_types = ['website.LocationPage']
template = 'coderedcms/pages/location_index_page.html'
Next run python manage.py makemigrations website
and python manage.py migrate
to create
the new pages in your project.
Now when going to the wagtail admin, you can create a Location Index Page, and child Location Pages. Also be sure to add a Google Maps API key under Settings > CRX Settings.
Note
Before creating or importing location pages, add your Google API key for automatic geolocation.