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.