{"id":1254,"date":"2026-09-12T18:34:31","date_gmt":"2026-09-12T16:34:31","guid":{"rendered":"https:\/\/darrigan.net\/blog\/?p=1254"},"modified":"2026-09-12T18:52:21","modified_gmt":"2026-09-12T16:52:21","slug":"manage-tours-and-tour-stops-in-collectiveaccess","status":"publish","type":"post","link":"https:\/\/darrigan.net\/blog\/manage-tours-and-tour-stops-in-collectiveaccess\/","title":{"rendered":"Manage tours and tour stops in CollectiveAccess"},"content":{"rendered":"<p><em>Voici mes r\u00e9glages pour utiliser les \u00ab\u00a0parcours\u00a0\u00bb et les \u00ab\u00a0points de parcours\u00a0\u00bb dans CollectiveAccess\/Pawtucket2.<\/em><\/p>\n<p>Here are my settings to use \u00ab\u00a0tours\u00a0\u00bb and \u00ab\u00a0tour stops\u00a0\u00bb in <a href=\"https:\/\/collectiveaccess.org\/\" target=\"_blank\" rel=\"noopener\">CollectiveAccess<\/a>\/Pawtucket2.<\/p>\n<p><!--more--><\/p>\n<p>This tutorial is tested for CollectiveAccess 1.7.17.<\/p>\n<p><strong>1. In pawtucket \/app\/conf\/local\/browse.conf<\/strong><\/p>\n<p>You should have these parts: (comments below)<\/p>\n<p>\u00ab\u00a0`<br \/>\n# &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n# Configuration for tour stops browse<br \/>\nca_tour_stops = {<br \/>\nname = _(\u00ab\u00a0Tour stops\u00a0\u00bb),<br \/>\nfacets = {<br \/>\ntour_facet = {<br \/>\ntype = authority,<br \/>\ntable = ca_tours,<br \/>\nrelationship_table = ca_tours_x_tour_stops,<br \/>\nrestrict_to_types = [],<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Tour stop\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Tour stops\u00a0\u00bb)<br \/>\n},<br \/>\ntype_facet = {<br \/>\ntype = fieldList,<br \/>\nfield = type_id,<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Type\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Types\u00a0\u00bb)<br \/>\n},<br \/>\nprops_facet = {<br \/>\ntype = attribute,<br \/>\nelement_code = tour_stop_props,<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Property of tour stop\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Properties of tour stops\u00a0\u00bb)<br \/>\n},<br \/>\nplace_facet = {<br \/>\ntype = authority,<br \/>\ntable = ca_places,<br \/>\nrelationship_table = ca_tour_stops_x_places,<br \/>\nrestrict_to_types = [],<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Place\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Places\u00a0\u00bb)<br \/>\n},<br \/>\ncollection_facet = {<br \/>\ntype = authority,<br \/>\ntable = ca_collections,<br \/>\nrelationship_table = ca_tours_x_collections,<br \/>\nrestrict_to_types = [],<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Collection\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Collections\u00a0\u00bb)<br \/>\n},<br \/>\nterm_facet = {<br \/>\ntype = authority,<br \/>\ntable = ca_list_items,<br \/>\nrelationship_table = ca_tours_x_vocabulary_terms,<br \/>\nrestrict_to_types = [],<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Term\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Terms\u00a0\u00bb)<br \/>\n},<br \/>\n}<br \/>\n}<br \/>\n# &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n# Configuration for tours browse<br \/>\nca_tours = {<br \/>\nname = _(\u00ab\u00a0Tours\u00a0\u00bb),<br \/>\nfacets = {<br \/>\ntype_facet = {<br \/>\ntype = fieldList,<br \/>\nfield = type_id,<br \/>\ngroup_mode = alphabetical,<br \/>\nlabel_singular = _(\u00ab\u00a0Type\u00a0\u00bb),<br \/>\nlabel_plural = _(\u00ab\u00a0Types\u00a0\u00bb)<br \/>\n},<br \/>\n}<br \/>\n}<br \/>\n\u00ab\u00a0`<\/p>\n<p>Comments: you can remove facets you don&rsquo;t need. The \u00ab\u00a0tour_facet\u00a0\u00bb allows to filter tour stops by tours. The \u00ab\u00a0props_facet\u00a0\u00bb is based on tour_stop_props metadata I added to describe some properties of my tour stops, via a linked list of vocabulary (indoors, outdoors, accessible to people with reduced mobility, accessible in Braille). The \u00ab\u00a0place_facet\u00a0\u00bb and \u00ab\u00a0collection_facet\u00a0\u00bb allow browsing tour stops related to places and collections&#8230; The \u00ab\u00a0term_facet\u00a0\u00bb allows browsing tour stops related to terms, scientific or other themes&#8230;<\/p>\n<p><strong>2. In pawtucket \/themes\/&lt;your_theme&gt;\/conf\/browse.conf<\/strong><\/p>\n<p>In the \u00ab\u00a0browseTypes = {&#8230;}\u00a0\u00bb block, at the same level of \u00ab\u00a0objects = {&#8230;}\u00a0\u00bb, \u00ab\u00a0collections = {&#8230;}\u00a0\u00bb, etc., you should have these blocks:<\/p>\n<p>\u00ab\u00a0`<br \/>\ntours = {<br \/>\ndisplayName = _(\u00ab\u00a0Tours\u00a0\u00bb),<br \/>\nlabelSingular = _(\u00ab\u00a0tour\u00a0\u00bb),<br \/>\nlabelPlural = _(\u00ab\u00a0tours\u00a0\u00bb),<br \/>\ntable = ca_tours,<br \/>\nrestrictToTypes = []<br \/>\nviews = {<br \/>\nmap = {<br \/>\ndata = ca_tours.georeference,<br \/>\nminZoomLevel = 2,<br \/>\nmaxZoomLevel = 18,<br \/>\ndisplay = {<br \/>\nlabelTemplate = &lt;l&gt;^ca_tours.preferred_labels&lt;\/l&gt;,<br \/>\ncontentTemplate = ,<br \/>\n}<br \/>\n},<br \/>\n},<br \/>\nsortBy = {<br \/>\nTitle = ca_tours.preferred_labels.name,<br \/>\n},<br \/>\nsortDirection = {<br \/>\nTitle = asc,<br \/>\n},<br \/>\nsortControlType = dropdown<br \/>\n},<\/p>\n<p>tour_stops = {<br \/>\ndisplayName = _(\u00ab\u00a0Tour stops\u00a0\u00bb),<br \/>\nlabelSingular = _(\u00ab\u00a0tour stop\u00a0\u00bb),<br \/>\nlabelPlural = _(\u00ab\u00a0tour stops\u00a0\u00bb),<br \/>\ntable = ca_tour_stops,<br \/>\nrestrictToTypes = []<br \/>\nviews = {<br \/>\nimages = {<br \/>\ntitle_template = &lt;b&gt;^ca_tours.preferred_labels.name&lt;\/b&gt;&lt;br\/&gt;&lt;l&gt;^ca_tour_stops.preferred_labels&lt;\/l&gt;&lt;br\/&gt;(^ca_tour_stops.type_id),<br \/>\n},<br \/>\nlist = {<br \/>\ntitle_template = &lt;l&gt;^ca_tour_stops.preferred_labels&lt;\/l&gt;&lt;br\/&gt;(^ca_tour_stops.type_id),<br \/>\n},<br \/>\nmap = {<br \/>\ndata = ca_tour_stops.georeference,<br \/>\nminZoomLevel = 2,<br \/>\nmaxZoomLevel = 18,<br \/>\ndisplay = {<br \/>\nlabelTemplate = &lt;b&gt;^ca_tours.preferred_labels.name&lt;\/b&gt;&lt;br\/&gt;&lt;l&gt;^ca_tour_stops.preferred_labels&lt;\/l&gt;,<br \/>\ncontentTemplate = ,<br \/>\n}<br \/>\n},<br \/>\n},<br \/>\nsortBy = {<br \/>\nTitle = ca_tour_stops.preferred_labels.name,<br \/>\n},<br \/>\nsortDirection = {<br \/>\nTitle = asc,<br \/>\n},<br \/>\nsortControlType = dropdown<br \/>\n},<br \/>\n\u00ab\u00a0`<\/p>\n<p>Comments: for tours, the only browsing view I managed to get working is \u00ab\u00a0map\u00a0\u00bb; I couldn&rsquo;t manage to use \u00ab\u00a0images, \u00ab\u00a0list\u00a0\u00bb&#8230; For tour stops, it&rsquo;s ok with \u00ab\u00a0images\u00a0\u00bb, \u00ab\u00a0list\u00a0\u00bb and \u00ab\u00a0map\u00a0\u00bb to browse them, but the with the images (object_representations) from an object in relationship with the tour stop. (Take a look [here](https:\/\/collections.univ-pau.fr\/pub\/index.php\/Browse\/tours) and [here](https:\/\/collections.univ-pau.fr\/pub\/index.php\/Browse\/tour_stops))<\/p>\n<p><strong>3. In pawtucket \/themes\/&lt;your_theme&gt;\/conf\/detail.conf<\/strong><\/p>\n<p>In the \u00ab\u00a0detailTypes = {&#8230;}\u00a0\u00bb block, at the same level as \u00a0\u00bb objects = {&#8230;}\u00a0\u00bb, etc., you should add these blocks:<\/p>\n<p>\u00ab\u00a0`<br \/>\ntours = {<br \/>\ndisplayName = _(Tours),<br \/>\ntable = ca_tours,<br \/>\nrestrictToTypes = [],<br \/>\noptions = {<br \/>\nnextLink = &lt;i class=&rsquo;fa fa-angle-right&rsquo;&gt;&lt;\/i&gt;&lt;div class=&rsquo;small&rsquo;&gt;_(Next)&lt;\/div&gt;,<br \/>\npreviousLink = &lt;i class=&rsquo;fa fa-angle-left&rsquo;&gt;&lt;\/i&gt;&lt;div class=&rsquo;small&rsquo;&gt;_(Prev)&lt;\/div&gt;,<br \/>\nresultsLink = &lt;i class=&rsquo;fa fa-angle-double-left&rsquo;&gt;&lt;\/i&gt;&lt;div class=&rsquo;small&rsquo;&gt;_(Back)&lt;\/div&gt;,<br \/>\nenableComments = 0,<br \/>\nenableShare = 0,<br \/>\nenablePDF = 0,<br \/>\nmapAttributes = [ca_tour_stops.georeference],<br \/>\nmap_width = 100%,<br \/>\nmap_height = 500,<br \/>\nmapZoomLevel = 17,<br \/>\n}<br \/>\n},<br \/>\ntour_stops = {<br \/>\ndisplayName = _(Tour stops),<br \/>\ntable = ca_tour_stops,<br \/>\nrestrictToTypes = [],<br \/>\noptions = {<br \/>\nnextLink = ,<br \/>\npreviousLink = ,<br \/>\nresultsLink = ,<br \/>\nenableComments = 0,<br \/>\nenableShare = 0,<br \/>\nenablePDF = 0,<br \/>\nmapAttributes = [ca_tour_stops.georeference],<br \/>\nmap_width = 100%,<br \/>\nmap_height = 250,<br \/>\nmapZoomLevel = 20,<br \/>\n}<br \/>\n},<br \/>\n\u00ab\u00a0`<\/p>\n<p>Comments: to be located on the map, you need to define a metadata named (for example) \u00ab\u00a0georeference\u00a0\u00bb for tours and tour stops, if it doesn&rsquo;t exist yet. It may exist for object, places, etc. but not allowed for tours and tour stops. So check that&#8230;<\/p>\n<p><strong>4. In pawtucket \/themes\/&lt;your_theme&gt;\/conf\/search.conf<\/strong><\/p>\n<p>If you want tours and stops to be searchable, add in the \u00ab\u00a0multisearchTypes = {&#8230;}\u00a0\u00bb block, at the same level as \u00a0\u00bb objects = {&#8230;}\u00a0\u00bb, etc., these blocks:<\/p>\n<p>\u00ab\u00a0`<br \/>\ntour_stops = {<br \/>\ndisplayName = _(Tour stops),<br \/>\ntable = ca_tour_stops,<br \/>\nrestrictToTypes = [],<br \/>\nview = Search\/ca_tour_stops_search_subview_html.php,<br \/>\nitemsPerPage = 12,<br \/>\nitemsPerColumn = 3,<br \/>\nsortControlType = list,<br \/>\nsortBy = {<br \/>\nTitle = ca_tour_stops.name<br \/>\n},<br \/>\nsortDirection = {<br \/>\nTitle = asc,<br \/>\n},<br \/>\n},<\/p>\n<p>tours = {<br \/>\ndisplayName = _(Tours),<br \/>\ntable = ca_tours,<br \/>\nrestrictToTypes = [],<br \/>\nview = Search\/ca_tours_search_subview_html.php,<br \/>\nitemsPerPage = 12,<br \/>\nitemsPerColumn = 3,<br \/>\nsortControlType = list,<br \/>\nsortBy = {<br \/>\nTitle = ca_tours.name<br \/>\n},<br \/>\nsortDirection = {<br \/>\nTitle = asc,<br \/>\n},<br \/>\n},<\/p>\n<p>\u00ab\u00a0`<\/p>\n<p>Comments: you see here that it will need the files Search\/ca_tour_stops_search_subview_html.php and Search\/ca_tours_search_subview_html.php<\/p>\n<p><strong>5. In pawtucket \/themes\/&lt;your_theme&gt;\/views\/Search\/<\/strong><\/p>\n<p>So add these files:<\/p>\n<p>ca_tour_stops_search_subview_html.php<\/p>\n<p>\u00ab\u00a0`<br \/>\n&lt;?php<br \/>\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n* themes\/default\/views\/Search\/ca_tours_search_subview_html.php :<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n* CollectiveAccess<br \/>\n* Open-source collections management software<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n*<br \/>\n* Software by Whirl-i-Gig (http:\/\/www.whirl-i-gig.com)<br \/>\n* Copyright 2013-2014 Whirl-i-Gig<br \/>\n*<br \/>\n* For more information visit http:\/\/www.CollectiveAccess.org<br \/>\n*<br \/>\n* This program is free software; you may redistribute it and\/or modify it under<br \/>\n* the terms of the provided license as published by Whirl-i-Gig<br \/>\n*<br \/>\n* CollectiveAccess is distributed in the hope that it will be useful, but<br \/>\n* WITHOUT ANY WARRANTIES whatsoever, including any implied warranty of<br \/>\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br \/>\n*<br \/>\n* This source code is free and modifiable under the terms of<br \/>\n* GNU General Public License. (http:\/\/www.gnu.org\/copyleft\/gpl.html). See<br \/>\n* the \u00ab\u00a0license.txt\u00a0\u00bb file for details, or visit the CollectiveAccess web site at<br \/>\n* http:\/\/www.CollectiveAccess.org<br \/>\n*<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n*\/<\/p>\n<p>$qr_results = $this-&gt;getVar(&lsquo;result&rsquo;);<br \/>\n$va_block_info = $this-&gt;getVar(&lsquo;blockInfo&rsquo;);<br \/>\n$vs_block = $this-&gt;getVar(&lsquo;block&rsquo;);<br \/>\n$vn_start = (int)$this-&gt;getVar(&lsquo;start&rsquo;); \/\/ offset to seek to before outputting results<br \/>\n$vn_hits_per_block = (int)$this-&gt;getVar(&lsquo;itemsPerPage&rsquo;);<br \/>\n$vn_items_per_column = (int)$this-&gt;getVar(&lsquo;itemsPerColumn&rsquo;);<br \/>\n$vb_has_more = (bool)$this-&gt;getVar(&lsquo;hasMore&rsquo;);<br \/>\n$vs_search = (string)$this-&gt;getVar(&lsquo;search&rsquo;);<br \/>\n$vn_init_with_start = (int)$this-&gt;getVar(&lsquo;initializeWithStart&rsquo;);<br \/>\n$o_config = $this-&gt;getVar(\u00ab\u00a0config\u00a0\u00bb);<br \/>\n$o_browse_config = caGetBrowseConfig();<br \/>\n$va_browse_types = array_keys($o_browse_config-&gt;get(\u00ab\u00a0browseTypes\u00a0\u00bb));<\/p>\n<p>if ($qr_results-&gt;numHits() &gt; 0) {<br \/>\nif (!$this-&gt;request-&gt;isAjax()) {<br \/>\n?&gt;<br \/>\n&lt;small class=\u00a0\u00bbpull-right sortValues\u00a0\u00bb&gt;<br \/>\n&lt;?php<br \/>\nif(in_array($vs_block, $va_browse_types)){<br \/>\n?&gt;<br \/>\n&lt;span class=&rsquo;multisearchFullResults&rsquo;&gt;&lt;?php print caNavLink($this-&gt;request, &lsquo;&lt;span class=\u00a0\u00bbglyphicon glyphicon-list\u00a0\u00bb&gt;&lt;\/span&gt; &lsquo;._t(&lsquo;R\u00e9sultats complets&rsquo;), \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search)); ?&gt;&lt;\/span&gt; |<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;span class=&rsquo;multisearchSort&rsquo;&gt;&lt;?php print _t(\u00ab\u00a0trier par :\u00a0\u00bb); ?&gt; {{{sortByControl}}}&lt;\/span&gt;<br \/>\n{{{sortDirectionControl}}}<br \/>\n&lt;\/small&gt;<br \/>\n&lt;?php<br \/>\nif(in_array($vs_block, $va_browse_types)){<br \/>\n?&gt;<br \/>\n&lt;?php print &lsquo;&lt;H3&gt;&rsquo;.caNavLink($this-&gt;request, $va_block_info[&lsquo;displayName&rsquo;].&rsquo; (&lsquo;.$qr_results-&gt;numHits().&rsquo;)&rsquo;, \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search)).'&lt;\/H3&gt;&rsquo;; ?&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n?&gt;<br \/>\n&lt;H3&gt;&lt;?php print $va_block_info[&lsquo;displayName&rsquo;].\u00a0\u00bb (\u00ab\u00a0.$qr_results-&gt;numHits().\u00a0\u00bb)\u00a0\u00bb; ?&gt;&lt;\/H3&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;div class=&rsquo;blockResults authorityBlock&rsquo;&gt;<br \/>\n&lt;div id=\u00a0\u00bb{{{block}}}scrollButtonPrevious\u00a0\u00bb class=\u00a0\u00bbscrollButtonPrevious\u00a0\u00bb&gt;&lt;i class=\u00a0\u00bbfa fa-angle-left\u00a0\u00bb&gt;&lt;\/i&gt;&lt;\/div&gt;&lt;div id=\u00a0\u00bb{{{block}}}scrollButtonNext\u00a0\u00bb class=\u00a0\u00bbscrollButtonNext\u00a0\u00bb&gt;&lt;i class=\u00a0\u00bbfa fa-angle-right\u00a0\u00bb&gt;&lt;\/i&gt;&lt;\/div&gt;<br \/>\n&lt;div id='{{{block}}}Results&rsquo; class=&rsquo;multiSearchResults&rsquo;&gt;<br \/>\n&lt;div class=&rsquo;blockResultsScroller&rsquo;&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n$vn_count = 0;<br \/>\n$vn_i = 0;<br \/>\n$vb_div_open = false;<br \/>\nwhile($qr_results-&gt;nextHit()) {<br \/>\nif ($vn_i == 0) { print \u00ab\u00a0&lt;div class='{{{block}}}Set authoritySet&rsquo;&gt;\\n\u00a0\u00bb; $vb_div_open = true;}<br \/>\nprint \u00ab\u00a0&lt;div class='{{{block}}}Result authorityResult&rsquo;&gt;\u00a0\u00bb.$qr_results-&gt;get(&lsquo;ca_tour_stops.preferred_labels.name&rsquo;, array(&lsquo;returnAsLink&rsquo; =&gt; true)).\u00a0\u00bb&lt;\/div&gt;&lt;!&#8211; end Result &#8211;&gt;\u00a0\u00bb;<br \/>\n$vn_count++;<br \/>\n$vn_i++;<br \/>\nif ($vn_i == $vn_items_per_column) {<br \/>\nprint \u00ab\u00a0&lt;\/div&gt;&lt;!&#8211; end set &#8211;&gt;\u00a0\u00bb;<br \/>\n$vb_div_open = false;<br \/>\n$vn_i = 0;<br \/>\n}<br \/>\nif ((!$vn_init_with_start &amp;&amp; ($vn_count == $vn_hits_per_block)) || ($vn_init_with_start &amp;&amp; ($vn_count &gt;= $vn_init_with_start))) {break;}<br \/>\n}<\/p>\n<p>if ($vb_div_open) {print \u00ab\u00a0&lt;\/div&gt;&lt;!&#8211; end set &#8211;&gt;\u00a0\u00bb;}<\/p>\n<p>if (!$this-&gt;request-&gt;isAjax()) {<br \/>\n?&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end blockResultsScroller &#8211;&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end blockResults &#8211;&gt;<br \/>\n&lt;?php<br \/>\nif ($qr_results-&gt;numHits() &gt; 3) {<br \/>\n?&gt;<br \/>\n&lt;div class=&rsquo;allLink&rsquo;&gt;&lt;?php print caNavLink($this-&gt;request, &lsquo;See &lsquo;.($qr_results-&gt;numHits() &#8211; 3).\u00a0\u00bb more \u00ab\u00a0.$va_block_info[&lsquo;displayName&rsquo;].($qr_results-&gt;numHits() == 4 ? &lsquo; result&rsquo; : &lsquo; results&rsquo;), \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search));?&gt;&lt;\/div&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(document).ready(function() {<br \/>\njQuery(&lsquo;#{{{block}}}Results&rsquo;).hscroll({<br \/>\nname: &lsquo;{{{block}}}&rsquo;,<br \/>\nitemCount: &lt;?php print $qr_results-&gt;numHits(); ?&gt;,<br \/>\npreloadCount: &lt;?php print $vn_count; ?&gt;,<\/p>\n<p>itemsPerColumn: &lt;?php print $vn_items_per_column; ?&gt;,<br \/>\nitemWidth: jQuery(&lsquo;.{{{block}}}Set&rsquo;).outerWidth(true),<br \/>\nitemsPerLoad: &lt;?php print $vn_hits_per_block; ?&gt;,<br \/>\nitemLoadURL: &lsquo;&lt;?php print caNavUrl($this-&gt;request, &lsquo;*&rsquo;, &lsquo;*&rsquo;, &lsquo;*&rsquo;, array(&lsquo;block&rsquo; =&gt; $vs_block, &lsquo;search&rsquo;=&gt; $vs_search)); ?&gt;&rsquo;,<br \/>\nitemContainerSelector: &lsquo;.blockResultsScroller&rsquo;,<\/p>\n<p>sortParameter: &lsquo;{{{block}}}Sort&rsquo;,<br \/>\nsortControlSelector: &lsquo;#{{{block}}}_sort&rsquo;,<\/p>\n<p>sortDirection: &lsquo;{{{sortDirection}}}&rsquo;,<br \/>\nsortDirectionParameter: &lsquo;{{{block}}}SortDirection&rsquo;,<br \/>\nsortDirectionSelector: &lsquo;#{{{block}}}_sort_direction&rsquo;,<\/p>\n<p>scrollPreviousControlSelector: &lsquo;#{{{block}}}scrollButtonPrevious&rsquo;,<br \/>\nscrollNextControlSelector: &lsquo;#{{{block}}}scrollButtonNext&rsquo;,<br \/>\ncacheKey: &lsquo;{{{cacheKey}}}&rsquo;<br \/>\n});<br \/>\n});<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n# &#8212; need to change sort direction to catch default setting for direction when sort order has changed<br \/>\nif($this-&gt;getVar(\u00ab\u00a0sortDirection\u00a0\u00bb) == \u00ab\u00a0desc\u00a0\u00bb){<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(&lsquo;#&lt;?php print $vs_block; ?&gt;_sort_direction&rsquo;).find(&lsquo;span&rsquo;).removeClass(&lsquo;glyphicon-sort-by-alphabet&rsquo;).addClass(&lsquo;glyphicon-sort-by-alphabet-alt&rsquo;);<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(&lsquo;#&lt;?php print $vs_block; ?&gt;_sort_direction&rsquo;).find(&lsquo;span&rsquo;).removeClass(&lsquo;glyphicon-sort-by-alphabet-alt&rsquo;).addClass(&lsquo;glyphicon-sort-by-alphabet&rsquo;);<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n?&gt;<br \/>\n\u00ab\u00a0`<\/p>\n<p>ca_tours_search_subview_html.php<\/p>\n<p>\u00ab\u00a0`<br \/>\n&lt;?php<br \/>\n\/* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n* themes\/default\/views\/Search\/ca_tours_search_subview_html.php :<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n* CollectiveAccess<br \/>\n* Open-source collections management software<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n*<br \/>\n* Software by Whirl-i-Gig (http:\/\/www.whirl-i-gig.com)<br \/>\n* Copyright 2013-2014 Whirl-i-Gig<br \/>\n*<br \/>\n* For more information visit http:\/\/www.CollectiveAccess.org<br \/>\n*<br \/>\n* This program is free software; you may redistribute it and\/or modify it under<br \/>\n* the terms of the provided license as published by Whirl-i-Gig<br \/>\n*<br \/>\n* CollectiveAccess is distributed in the hope that it will be useful, but<br \/>\n* WITHOUT ANY WARRANTIES whatsoever, including any implied warranty of<br \/>\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br \/>\n*<br \/>\n* This source code is free and modifiable under the terms of<br \/>\n* GNU General Public License. (http:\/\/www.gnu.org\/copyleft\/gpl.html). See<br \/>\n* the \u00ab\u00a0license.txt\u00a0\u00bb file for details, or visit the CollectiveAccess web site at<br \/>\n* http:\/\/www.CollectiveAccess.org<br \/>\n*<br \/>\n* &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n*\/<\/p>\n<p>$qr_results = $this-&gt;getVar(&lsquo;result&rsquo;);<br \/>\n$va_block_info = $this-&gt;getVar(&lsquo;blockInfo&rsquo;);<br \/>\n$vs_block = $this-&gt;getVar(&lsquo;block&rsquo;);<br \/>\n$vn_start = (int)$this-&gt;getVar(&lsquo;start&rsquo;); \/\/ offset to seek to before outputting results<br \/>\n$vn_hits_per_block = (int)$this-&gt;getVar(&lsquo;itemsPerPage&rsquo;);<br \/>\n$vn_items_per_column = (int)$this-&gt;getVar(&lsquo;itemsPerColumn&rsquo;);<br \/>\n$vb_has_more = (bool)$this-&gt;getVar(&lsquo;hasMore&rsquo;);<br \/>\n$vs_search = (string)$this-&gt;getVar(&lsquo;search&rsquo;);<br \/>\n$vn_init_with_start = (int)$this-&gt;getVar(&lsquo;initializeWithStart&rsquo;);<br \/>\n$o_config = $this-&gt;getVar(\u00ab\u00a0config\u00a0\u00bb);<br \/>\n$o_browse_config = caGetBrowseConfig();<br \/>\n$va_browse_types = array_keys($o_browse_config-&gt;get(\u00ab\u00a0browseTypes\u00a0\u00bb));<\/p>\n<p>if ($qr_results-&gt;numHits() &gt; 0) {<br \/>\nif (!$this-&gt;request-&gt;isAjax()) {<br \/>\n?&gt;<br \/>\n&lt;small class=\u00a0\u00bbpull-right sortValues\u00a0\u00bb&gt;<br \/>\n&lt;?php<br \/>\nif(in_array($vs_block, $va_browse_types)){<br \/>\n?&gt;<br \/>\n&lt;span class=&rsquo;multisearchFullResults&rsquo;&gt;&lt;?php print caNavLink($this-&gt;request, &lsquo;&lt;span class=\u00a0\u00bbglyphicon glyphicon-list\u00a0\u00bb&gt;&lt;\/span&gt; &lsquo;._t(&lsquo;R\u00e9sultats complets&rsquo;), \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search)); ?&gt;&lt;\/span&gt; |<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;span class=&rsquo;multisearchSort&rsquo;&gt;&lt;?php print _t(\u00ab\u00a0trier par :\u00a0\u00bb); ?&gt; {{{sortByControl}}}&lt;\/span&gt;<br \/>\n{{{sortDirectionControl}}}<br \/>\n&lt;\/small&gt;<br \/>\n&lt;?php<br \/>\nif(in_array($vs_block, $va_browse_types)){<br \/>\n?&gt;<br \/>\n&lt;?php print &lsquo;&lt;H3&gt;&rsquo;.caNavLink($this-&gt;request, $va_block_info[&lsquo;displayName&rsquo;].&rsquo; (&lsquo;.$qr_results-&gt;numHits().&rsquo;)&rsquo;, \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search)).'&lt;\/H3&gt;&rsquo;; ?&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n?&gt;<br \/>\n&lt;H3&gt;&lt;?php print $va_block_info[&lsquo;displayName&rsquo;].\u00a0\u00bb (\u00ab\u00a0.$qr_results-&gt;numHits().\u00a0\u00bb)\u00a0\u00bb; ?&gt;&lt;\/H3&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;div class=&rsquo;blockResults authorityBlock&rsquo;&gt;<br \/>\n&lt;div id=\u00a0\u00bb{{{block}}}scrollButtonPrevious\u00a0\u00bb class=\u00a0\u00bbscrollButtonPrevious\u00a0\u00bb&gt;&lt;i class=\u00a0\u00bbfa fa-angle-left\u00a0\u00bb&gt;&lt;\/i&gt;&lt;\/div&gt;&lt;div id=\u00a0\u00bb{{{block}}}scrollButtonNext\u00a0\u00bb class=\u00a0\u00bbscrollButtonNext\u00a0\u00bb&gt;&lt;i class=\u00a0\u00bbfa fa-angle-right\u00a0\u00bb&gt;&lt;\/i&gt;&lt;\/div&gt;<br \/>\n&lt;div id='{{{block}}}Results&rsquo; class=&rsquo;multiSearchResults&rsquo;&gt;<br \/>\n&lt;div class=&rsquo;blockResultsScroller&rsquo;&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n$vn_count = 0;<br \/>\n$vn_i = 0;<br \/>\n$vb_div_open = false;<br \/>\nwhile($qr_results-&gt;nextHit()) {<br \/>\nif ($vn_i == 0) { print \u00ab\u00a0&lt;div class='{{{block}}}Set authoritySet&rsquo;&gt;\\n\u00a0\u00bb; $vb_div_open = true;}<br \/>\nprint \u00ab\u00a0&lt;div class='{{{block}}}Result authorityResult&rsquo;&gt;\u00a0\u00bb.$qr_results-&gt;get(&lsquo;ca_tours.preferred_labels.name&rsquo;, array(&lsquo;returnAsLink&rsquo; =&gt; true)).\u00a0\u00bb&lt;\/div&gt;&lt;!&#8211; end Result &#8211;&gt;\u00a0\u00bb;<br \/>\n$vn_count++;<br \/>\n$vn_i++;<br \/>\nif ($vn_i == $vn_items_per_column) {<br \/>\nprint \u00ab\u00a0&lt;\/div&gt;&lt;!&#8211; end set &#8211;&gt;\u00a0\u00bb;<br \/>\n$vb_div_open = false;<br \/>\n$vn_i = 0;<br \/>\n}<br \/>\nif ((!$vn_init_with_start &amp;&amp; ($vn_count == $vn_hits_per_block)) || ($vn_init_with_start &amp;&amp; ($vn_count &gt;= $vn_init_with_start))) {break;}<br \/>\n}<\/p>\n<p>if ($vb_div_open) {print \u00ab\u00a0&lt;\/div&gt;&lt;!&#8211; end set &#8211;&gt;\u00a0\u00bb;}<\/p>\n<p>if (!$this-&gt;request-&gt;isAjax()) {<br \/>\n?&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end blockResultsScroller &#8211;&gt;<br \/>\n&lt;\/div&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end blockResults &#8211;&gt;<br \/>\n&lt;?php<br \/>\nif ($qr_results-&gt;numHits() &gt; 3) {<br \/>\n?&gt;<br \/>\n&lt;div class=&rsquo;allLink&rsquo;&gt;&lt;?php print caNavLink($this-&gt;request, &lsquo;See &lsquo;.($qr_results-&gt;numHits() &#8211; 3).\u00a0\u00bb more \u00ab\u00a0.$va_block_info[&lsquo;displayName&rsquo;].($qr_results-&gt;numHits() == 4 ? &lsquo; result&rsquo; : &lsquo; results&rsquo;), \u00a0\u00bb, \u00a0\u00bb, &lsquo;Search&rsquo;, &lsquo;{{{block}}}&rsquo;, array(&lsquo;search&rsquo; =&gt; $vs_search));?&gt;&lt;\/div&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(document).ready(function() {<br \/>\njQuery(&lsquo;#{{{block}}}Results&rsquo;).hscroll({<br \/>\nname: &lsquo;{{{block}}}&rsquo;,<br \/>\nitemCount: &lt;?php print $qr_results-&gt;numHits(); ?&gt;,<br \/>\npreloadCount: &lt;?php print $vn_count; ?&gt;,<\/p>\n<p>itemsPerColumn: &lt;?php print $vn_items_per_column; ?&gt;,<br \/>\nitemWidth: jQuery(&lsquo;.{{{block}}}Set&rsquo;).outerWidth(true),<br \/>\nitemsPerLoad: &lt;?php print $vn_hits_per_block; ?&gt;,<br \/>\nitemLoadURL: &lsquo;&lt;?php print caNavUrl($this-&gt;request, &lsquo;*&rsquo;, &lsquo;*&rsquo;, &lsquo;*&rsquo;, array(&lsquo;block&rsquo; =&gt; $vs_block, &lsquo;search&rsquo;=&gt; $vs_search)); ?&gt;&rsquo;,<br \/>\nitemContainerSelector: &lsquo;.blockResultsScroller&rsquo;,<\/p>\n<p>sortParameter: &lsquo;{{{block}}}Sort&rsquo;,<br \/>\nsortControlSelector: &lsquo;#{{{block}}}_sort&rsquo;,<\/p>\n<p>sortDirection: &lsquo;{{{sortDirection}}}&rsquo;,<br \/>\nsortDirectionParameter: &lsquo;{{{block}}}SortDirection&rsquo;,<br \/>\nsortDirectionSelector: &lsquo;#{{{block}}}_sort_direction&rsquo;,<\/p>\n<p>scrollPreviousControlSelector: &lsquo;#{{{block}}}scrollButtonPrevious&rsquo;,<br \/>\nscrollNextControlSelector: &lsquo;#{{{block}}}scrollButtonNext&rsquo;,<br \/>\ncacheKey: &lsquo;{{{cacheKey}}}&rsquo;<br \/>\n});<br \/>\n});<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n# &#8212; need to change sort direction to catch default setting for direction when sort order has changed<br \/>\nif($this-&gt;getVar(\u00ab\u00a0sortDirection\u00a0\u00bb) == \u00ab\u00a0desc\u00a0\u00bb){<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(&lsquo;#&lt;?php print $vs_block; ?&gt;_sort_direction&rsquo;).find(&lsquo;span&rsquo;).removeClass(&lsquo;glyphicon-sort-by-alphabet&rsquo;).addClass(&lsquo;glyphicon-sort-by-alphabet-alt&rsquo;);<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}else{<br \/>\n?&gt;<br \/>\n&lt;script type=\u00a0\u00bbtext\/javascript\u00a0\u00bb&gt;<br \/>\njQuery(&lsquo;#&lt;?php print $vs_block; ?&gt;_sort_direction&rsquo;).find(&lsquo;span&rsquo;).removeClass(&lsquo;glyphicon-sort-by-alphabet-alt&rsquo;).addClass(&lsquo;glyphicon-sort-by-alphabet&rsquo;);<br \/>\n&lt;\/script&gt;<br \/>\n&lt;?php<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n?&gt;<br \/>\n\u00ab\u00a0`<\/p>\n<p><strong>6. In pawtucket \/themes\/&lt;your_theme&gt;\/views\/Details\/<\/strong><\/p>\n<p>And now, you need the detail pages, so add these files:<\/p>\n<p>ca_tours_default_html.php<\/p>\n<p>\u00ab\u00a0`<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 navTop&rsquo;&gt;&lt;!&#8212; only shown at small screen size &#8211;&gt;<br \/>\n{{{previousLink}}}{{{resultsLink}}}{{{nextLink}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end detailTop &#8211;&gt;<br \/>\n&lt;div class=&rsquo;navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1&prime;&gt;<br \/>\n&lt;div class=\u00a0\u00bbdetailNavBgLeft\u00a0\u00bb&gt;<br \/>\n{{{previousLink}}}{{{resultsLink}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end detailNavBgLeft &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-sm-10 col-md-10 col-lg-10&prime;&gt;<br \/>\n&lt;div class=\u00a0\u00bbcontainer\u00a0\u00bb&gt;<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-md-12 col-lg-12&prime;&gt;<br \/>\n&lt;H4&gt;{{{^ca_tours.preferred_labels.name}}}&lt;\/H4&gt;<br \/>\n&lt;p&gt;&lt;b&gt;({{{^ca_tours.type_id}}})&lt;\/b&gt;&lt;\/p&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-md-12 col-lg-12&prime;&gt;<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tours.tour_description\u00a0\u00bb&gt;&lt;p&gt;&lt;b&gt;^ca_tours.tour_description&lt;\/b&gt;&lt;\/p&gt;&lt;\/ifdef&gt;}}}<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tours.description\u00a0\u00bb&gt;&lt;p&gt;^ca_tours.description&lt;\/p&gt;&lt;\/ifdef&gt;}}}<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tours.description_source\u00a0\u00bb&gt;&lt;p&gt;&lt;small&gt;Source:&lt;br \/&gt; ^ca_tours.description_source&lt;\/small&gt;&lt;\/p&gt;&lt;\/ifdef&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_tour_stops\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Tour stop:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_tour_stops\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Tour stops&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n&lt;ul&gt;<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_tour_stops\u00a0\u00bb delimiter=\u00a0\u00bb \u00a0\u00bb sort=\u00a0\u00bbca_tour_stops.idno\u00a0\u00bb sortDirection=\u00a0\u00bbASC\u00a0\u00bb restrictToTypes=\u00a0\u00bbprimary,secondary\u00a0\u00bb &gt;&lt;li&gt;&lt;l&gt;^ca_tour_stops.preferred_labels&lt;\/l&gt;&lt;\/li&gt;&lt;\/unit&gt;}}}<br \/>\n&lt;\/ul&gt;<br \/>\n&lt;hr&gt;<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_entities\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related entity:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_entities\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related entities:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_entities\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_entities.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_places\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related place:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_places\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related places:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_places\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_places.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_collections\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related collection:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_collections\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related collections:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_collections\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_collections.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_tours.external_link\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Web link:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_tours.external_link\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Web links:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_tours.external_link\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;a href=\u00a0\u00bb^ca_tours.external_link.url_entry\u00a0\u00bb target=\u00a0\u00bb_blank\u00a0\u00bb &gt;^ca_tours.external_link.url_source&lt;\/a&gt;&lt;\/unit&gt;}}}<\/p>\n<p>&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-md-12 col-lg-12&prime;&gt;<br \/>\n&lt;p&gt;This tour is located here:&lt;\/p&gt;<br \/>\n{{{map}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end container &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;div class=&rsquo;navLeftRight col-xs-1 col-sm-1 col-md-1 col-lg-1&prime;&gt;<br \/>\n&lt;div class=\u00a0\u00bbdetailNavBgRight\u00a0\u00bb&gt;<br \/>\n{{{nextLink}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end detailNavBgLeft &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n\u00ab\u00a0`<\/p>\n<p>ca_tour_stops_default_html.php<\/p>\n<p>\u00ab\u00a0`<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-sm-10 col-md-10 col-lg-10&prime;&gt;<br \/>\n&lt;div class=\u00a0\u00bbcontainer\u00a0\u00bb style=\u00a0\u00bbfont-size: 16px;font-family: lato; color:black;\u00a0\u00bb&gt;<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-md-12 col-lg-12&prime;&gt;<br \/>\n&lt;H6&gt;Parcours :&lt;\/H6&gt;<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_tours\u00a0\u00bb delimiter=\u00a0\u00bb ; \u00ab\u00a0&gt;&lt;l&gt;^ca_tours.preferred_labels&lt;\/l&gt;&lt;\/unit&gt;}}}&lt;\/p&gt;<br \/>\n&lt;h6&gt;{{{^ca_tour_stops.type_id}}}:&lt;\/h6&gt;<br \/>\n&lt;H4&gt;{{{^ca_tour_stops.preferred_labels.name}}}&lt;\/H4&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-md-12 col-lg-12&prime;&gt;<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tour_stops.georeference\u00a0\u00bb&gt;&lt;small&gt;&lt;b&gt;Location: &lt;\/b&gt;&lt;\/small&gt;}}}<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tour_stops.tour_stop_props\u00a0\u00bb&gt;&lt;small&gt;^ca_tour_stops.tour_stop_props%delimiter=_-_&lt;\/small&gt;&lt;\/ifdef&gt;}}}<br \/>\n{{{map}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<\/p>\n<p>&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-md-12 col-lg-12&prime;&gt;<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tour_stops.tour_stop_description\u00a0\u00bb&gt;&lt;H6&gt;&lt;b&gt;^ca_tour_stops.tour_stop_description&lt;\/b&gt;&lt;\/h6&gt;&lt;\/ifdef&gt;}}}<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tour_stops.description\u00a0\u00bb&gt;&lt;div&gt;^ca_tour_stops.description&lt;\/div&gt;&lt;\/ifdef&gt;}}}<br \/>\n&lt;hr&gt;<br \/>\n{{{&lt;ifdef code=\u00a0\u00bbca_tour_stops.description_source\u00a0\u00bb&gt;&lt;H6&gt;Source:&lt;\/H6&gt;&lt;p&gt;^ca_tour_stops.description_source&lt;\/p&gt;&lt;\/ifdef&gt;}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<\/p>\n<p>&lt;div class=\u00a0\u00bbrow\u00a0\u00bb&gt;<br \/>\n&lt;div class=&rsquo;col-xs-12 col-md-12 col-lg-12&prime;&gt;<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_objects\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related object:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_objects\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related objects:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_objects\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_objects.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_entities\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related entity:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_entities\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related entities:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_entities\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_entities.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<\/p>\n<p>{{{&lt;ifcount code=\u00a0\u00bbca_places\u00a0\u00bb min=\u00a0\u00bb1&Prime; max=\u00a0\u00bb1&Prime;&gt;&lt;H6&gt;Related place:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;ifcount code=\u00a0\u00bbca_places\u00a0\u00bb min=\u00a0\u00bb2&Prime;&gt;&lt;H6&gt;Related places:&lt;\/H6&gt;&lt;\/ifcount&gt;}}}<br \/>\n{{{&lt;unit relativeTo=\u00a0\u00bbca_places\u00a0\u00bb delimiter=\u00a0\u00bb&lt;br\/&gt;\u00a0\u00bb&gt;&lt;l&gt;^ca_places.preferred_labels&lt;\/l&gt; (^relationship_typename)&lt;\/unit&gt;}}}<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end container &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end col &#8211;&gt;<br \/>\n&lt;\/div&gt;&lt;!&#8211; end row &#8211;&gt;<br \/>\n\u00ab\u00a0`<\/p>\n<p>Comments: I&rsquo;ve removed some parts specific to my use that use customized metadatas or types&#8230; Also, the display style (css) is not the same as other detail pages (objects&#8230;) because in my case, these tours and tour stops are made to be displayed on a smartphone, walking through the campus&#8230; You will need to adapt for your case.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voici mes r\u00e9glages pour utiliser les \u00ab\u00a0parcours\u00a0\u00bb et les \u00ab\u00a0points de parcours\u00a0\u00bb dans CollectiveAccess\/Pawtucket2. Here are my settings to use \u00ab\u00a0tours\u00a0\u00bb and \u00ab\u00a0tour stops\u00a0\u00bb in CollectiveAccess\/Pawtucket2.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[39],"tags":[121,122,46],"_links":{"self":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1254"}],"collection":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/comments?post=1254"}],"version-history":[{"count":10,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1254\/revisions"}],"predecessor-version":[{"id":1265,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/posts\/1254\/revisions\/1265"}],"wp:attachment":[{"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/media?parent=1254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/categories?post=1254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darrigan.net\/blog\/wp-json\/wp\/v2\/tags?post=1254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}