Commerce Reference Store includes a multisite search control that allows customers to search only the current site or to search the sites that share a shopping cart with the current site. For example:
The following code in store.war/atgsearch/gadgets/atgSearch.jsp
creates this search control. Based on what the user selects, the code sets the QueryFormHandler.searchRequet.dynamicTargetSpecifier.siteIdsArray
property, which specifies the sites to search.
<dsp:droplet name="SharingSitesDroplet" shareableTypeId="atg.ShoppingCart" excludeInputSite="true" var="sharingSites"> <dsp:oparam name="output"> <%-- Loop through the sites --%> <dsp:droplet name="ForEach" array="${sharingSites.sites}" var="current"> <%-- Set to search the current site --%> <dsp:oparam name="outputStart"> <dsp:input bean="QueryFormHandler.searchRequest.dynamicTargetSpecifier.siteIdsArray" type="hidden" value="${currentSite.id}" priority="10" /> </dsp:oparam> <%-- other sites --%> <dsp:oparam name="output"> <dsp:setvalue param="site" value="${current.element}"/> <dsp:getvalueof var="siteId" param="site.id"/> <div> <dsp:input bean="QueryFormHandler.searchRequest.dynamicTargetSpecifier.siteIdsArray" type="checkbox" value="${siteId}" priority="10" id="otherStore" checked="false"/> <label for="otherStore"> <fmt:message key="search.otherStoresLabel"> <fmt:param> <dsp:valueof param="site.name"/> </fmt:param> </fmt:message> </label> </div> </dsp:oparam> </dsp:droplet> </dsp:oparam> <dsp:oparam name="empty"> <dsp:input bean="QueryFormHandler.searchRequest.dynamicTargetSpecifier.siteIdsArray" type="hidden" value="${currentSite.id}" priority="10" /> </dsp:oparam> </dsp:droplet>