Here are my files (to be placed in pawtucket/themes/<my_theme>/views/details/).
File ca_tours_default_html.php:
<div class="row">
<div class='col-xs-12 navTop'><!--- only shown at small screen size -->
{{{previousLink}}}{{{resultsLink}}}{{{nextLink}}}
</div><!-- end detailTop -->
<div class='navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1'>
<div class="detailNavBgLeft">
{{{previousLink}}}{{{resultsLink}}}
</div><!-- end detailNavBgLeft -->
</div><!-- end col -->
<div class='col-xs-12 col-sm-10 col-md-10 col-lg-10'>
<div class="container">
<div class="row">
<div class='col-md-12 col-lg-12'>
<H4>{{{^ca_tours.preferred_labels.name}}}</H4>
<p><b>({{{^ca_tours.type_id}}})</b></p>
</div><!-- end col -->
</div><!-- end row -->
<div class="row">
<div class='col-md-12 col-lg-12'>
{{{<ifdef code="ca_tours.tour_description"><p><b>^ca_tours.tour_description</b></p></ifdef>}}}
{{{<ifdef code="ca_tours.description"><p>^ca_tours.description</p></ifdef>}}}
{{{<ifdef code="ca_tours.description_source"><p><small>Source :<br /> ^ca_tours.description_source</small></p></ifdef>}}}
{{{<if rule="^ca_tours.color =~ /ffffff/"><hr></if>}}}
{{{<if rule="^ca_tours.color !~ /ffffff/"><hr style="height: 1em;color:#^ca_tours.color;background-color:#^ca_tours.color;"></if>}}}
{{{<ifcount code="ca_tour_stops" min="1" max="1"><H6>Tour stop:</H6></ifcount>}}}
{{{<ifcount code="ca_tour_stops" min="2"><H6>Tour stops: (in the recommended order)</H6></ifcount>}}}
<ul>
{{{<unit relativeTo="ca_tour_stops" delimiter=" " sort="ca_tour_stops.idno" sortDirection="ASC" restrictToTypes="primary,secondary" ><li><l>^ca_tour_stops.preferred_labels</l></li></unit>}}}
</ul>
{{{<ifcount code="ca_tour_stops" min="1" max="1" restrictToTypes="info"><H6>Additional information:</H6></ifcount>}}}
{{{<ifcount code="ca_tour_stops" min="2" restrictToTypes="info"><H6>Additional informations:</H6></ifcount>}}}
<ul>
{{{<unit relativeTo="ca_tour_stops" delimiter=" " sort="ca_tour_stops.idno" sortDirection="ASC" restrictToTypes="info" ><li><l>^ca_tour_stops.preferred_labels</l></li></unit>}}}
</ul>
<hr>
{{{<ifcount code="ca_entities" min="1" max="1"><H6>Related entity:</H6></ifcount>}}}
{{{<ifcount code="ca_entities" min="2"><H6>Related entities:</H6></ifcount>}}}
{{{<unit relativeTo="ca_entities" delimiter="<br/>"><l>^ca_entities.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_places" min="1" max="1"><H6>Related place:</H6></ifcount>}}}
{{{<ifcount code="ca_places" min="2"><H6>Related places:</H6></ifcount>}}}
{{{<unit relativeTo="ca_places" delimiter="<br/>"><l>^ca_places.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_collections" min="1" max="1"><H6>Related collection:</H6></ifcount>}}}
{{{<ifcount code="ca_collections" min="2"><H6>Related collections:</H6></ifcount>}}}
{{{<unit relativeTo="ca_collections" delimiter="<br/>"><l>^ca_collections.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_tours.external_link" min="1" max="1"><H6>Web link:</H6></ifcount>}}}
{{{<ifcount code="ca_tours.external_link" min="2"><H6>Web links:</H6></ifcount>}}}
{{{<unit relativeTo="ca_tours.external_link" delimiter="<br/>"><a href="^ca_tours.external_link.url_entry" target="_blank" >^ca_tours.external_link.url_source</a></unit>}}}
</div><!-- end col -->
</div><!-- end row -->
<div class="row">
<div class='col-md-12 col-lg-12'>
<p>This tour is located in this area:</p>
{{{map}}}
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div><!-- end col -->
<div class='navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1'>
<div class="detailNavBgRight">
{{{nextLink}}}
</div><!-- end detailNavBgLeft -->
</div><!-- end col -->
</div><!-- end row -->
File ca_tour_stops_default_html.php:
<div class="row">
<div class='navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1'>
<div class="detailNavBgLeft">
{{{previousLink}}}{{{resultsLink}}}
</div><!-- end detailNavBgLeft -->
</div><!-- end col -->
<div class='col-xs-12 col-sm-10 col-md-10 col-lg-10'>
<div class="container" style="font-size: 16px;font-family: lato; color:black;">
<div class="row">
<div class='col-xs-12 col-md-12 col-lg-12'>
<H6>Parcours :</H6>
{{{<unit relativeTo="ca_tours" delimiter=" ; "><l>^ca_tours.preferred_labels</l></unit>}}}</p>
<!-- <p>{{{^ca_tour_stops.type_id%toUpper}}} :</p> -->
{{{<if rule="^ca_tours.color =~ /ffffff/"><hr></if>}}}
{{{<if rule="^ca_tours.color !~ /ffffff/"><hr style="height: 1em;color:#^ca_tours.color;background-color:#^ca_tours.color;"></if>}}}
<h6>{{{^ca_tour_stops.type_id}}} :</h6>
<H4>âš‘ {{{^ca_tour_stops.preferred_labels.name}}}</H4>
</div><!-- end col -->
</div><!-- end row -->
<div class="row">
<div class='col-xs-12 col-md-12 col-lg-12'>
{{{<ifdef code="ca_tour_stops.georeference"><small><b>Location: </b></small>}}}
{{{<ifdef code="ca_tour_stops.tour_stop_props"><small>^ca_tour_stops.tour_stop_props%delimiter=_-_</small></ifdef>}}}
{{{map}}}
</div><!-- end col -->
</div><!-- end row -->
<hr style="height:3px;border-width:0;color:gray;background-color:gray;">
<div class="row">
<div class='col-xs-12 col-md-12 col-lg-12'>
{{{<ifdef code="ca_tour_stops.tour_stop_description"><H6><b>^ca_tour_stops.tour_stop_description</b></h6></ifdef>}}}
{{{<ifdef code="ca_tour_stops.description"><div>^ca_tour_stops.description</div></ifdef>}}}
<hr>
{{{<ifdef code="ca_tour_stops.description_source"><H6>Author/source:</H6><p>^ca_tour_stops.description_source</p></ifdef>}}}
</div><!-- end col -->
</div><!-- end row -->
<hr style="height:3px;border-width:0;color:gray;background-color:gray;">
<div class="row">
<div class='col-xs-12 col-md-12 col-lg-12'>
{{{<ifdef code="ca_tour_stops.tour_stop_here"><H6>➤ In the same place:</H6><p>^ca_tour_stops.tour_stop_here</p></ifdef>}}}
{{{<ifdef code="ca_tour_stops.tour_stop_next"><H6>➤ Next stop:</H6><p>^ca_tour_stops.tour_stop_next</p></ifdef>}}}
{{{<ifdef code="ca_tour_stops.orientation"><H6>➤ To get to the next stop:</H6><p>^ca_tour_stops.orientation</p></ifdef>}}}
</div><!-- end col -->
</div><!-- end row -->
<hr style="height:3px;border-width:0;color:gray;background-color:gray;">
<div class="row">
<div class='col-xs-12 col-md-12 col-lg-12'>
{{{<ifcount code="ca_tour_stops.related" min="1" restrictToRelationshipTypes="info"><H6>Additional information:</H6></ifcount>}}}
{{{<unit relativeTo="ca_tour_stops.related" delimiter="<br>" restrictToRelationshipTypes="info">
<l>^ca_tour_stops.preferred_labels.name</l></unit>}}}
{{{<ifcount code="ca_tour_stops.related" min="1" restrictToRelationshipTypes="related"><H6>âš‘ In the same place:</H6></ifcount>}}}
{{{<unit relativeTo="ca_tour_stops.related" delimiter="<br>" restrictToRelationshipTypes="related">
<l>^ca_tour_stops.preferred_labels.name</l></unit>}}}
{{{<ifcount code="ca_tour_stops.related" min="1" restrictToRelationshipTypes="nearby"><H6>âš‘ Nearby:</H6></ifcount>}}}
{{{<unit relativeTo="ca_tour_stops.related" delimiter="<br>" restrictToRelationshipTypes="nearby">
<l>^ca_tour_stops.preferred_labels.name</l></unit>}}}
{{{<ifcount code="ca_objects" min="1" max="1"><H6>Related object:</H6></ifcount>}}}
{{{<ifcount code="ca_objects" min="2"><H6>Related objects:</H6></ifcount>}}}
{{{<unit relativeTo="ca_objects" delimiter="<br/>"><l>^ca_objects.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_entities" min="1" max="1"><H6>Related entity:</H6></ifcount>}}}
{{{<ifcount code="ca_entities" min="2"><H6>Related entities:</H6></ifcount>}}}
{{{<unit relativeTo="ca_entities" delimiter="<br/>"><l>^ca_entities.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_places" min="1" max="1"><H6>Related place:</H6></ifcount>}}}
{{{<ifcount code="ca_places" min="2"><H6>Related places:</H6></ifcount>}}}
{{{<unit relativeTo="ca_places" delimiter="<br/>"><l>^ca_places.preferred_labels</l> (^relationship_typename)</unit>}}}
{{{<ifcount code="ca_occurrences" min="1" max="1"><H6>Related occurrence</H6></ifcount>}}}
{{{<ifcount code="ca_occurrences" min="2"><H6>Related occurrences</H6></ifcount>}}}
{{{<unit relativeTo="ca_occurrences" delimiter="<br/>"><l>^ca_occurrences.preferred_labels.name</l> (^relationship_typename)<br/></unit>}}}
</div><!-- end col -->
</div><!-- end row -->
</div><!-- end container -->
</div><!-- end col -->
<div class='navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1'>
<div class="detailNavBgRight">
{{{nextLink}}}
</div><!-- end detailNavBgLeft -->
</div><!-- end col -->
</div><!-- end row -->
I should add that I had to define some additional metadata beyond what existed by default. I also created a vocabulary list that corresponds to properties that I can assign to the tour stops.
Here are the added metadata and how I use them:
tour_stop_description (text): contains an introduction or initial description for a tour stop (displayed in bold face before the description).
tour_stop_here (text): contains text about tour stops in the same place.
tour_stop_next (text): contains text about how to reach the next tour stop.
tour_stop_props (list): contains a list of properties I can attribute (or not) to each tour stop with checkboxes. For example:
- Outdoors (indicates that the stopping point is outside a building, therefore accessible but depends on the weather!)
- Indoors (indicates that the tour stop is inside a building, therefore dependent on opening hours)
- Wheelchair accessible
- Accessible in Braille (indicates on-site explanations for blind people)
For my specific needs:
- I had to create new type of tour stop, in addition to the two default ones (
primary, secondary): info. This tour stop is managed like the others but will appear separately, as "Additional information" of a tour.
- I had to create new relationship types between tour stop and tour stop:
related: for other tour stop at the same place
next: for the next tour stop in the tour
info: for a link to an "Additional information" (a fake tour stop)
nearby: for tour stops in same area but not at the same place
I hope this inspires you!
I am currently creating a new free trail on our campus for children, students, and visitors to discover the different tree species and create a small herbarium, with short quizzes for each tree. (This is why I had to create a "fake" tour stop: it serves to indicate the answers to the quizzes, apart from the tour stops on the tour.)