テキストボックスの複数のデータ型を使用して、キーワードのプロパティ型を作成しました。
キーワードは、コンマで区切られた単語またはフレーズのリストに分割されます。
検索ページにリンクする href を使用してキーワードを A タグでラップし、キーワードの値を含めて、同じキーワードを持つすべてのノードが検索に表示されるようにしました。
ユーザーがチェックボックスからキーワードの値を選択できるオプションを追加し、チェックを入れたすべてのキーワードが検索に含まれるように検索を送信したいと考えています。
検索ページに結果を送信して表示するために、キーワード チェックボックスのリストのチェックされた値を取得する方法を理解するのに助けが必要です。
これは私がこれまでに持っていたもので、送信されず、チェックボックスの値を追加する場所が見つかりません:
<xsl:if test="string($currentPage/keywords) != ''">
<!-- get the contents of the textbox multiple, with commas -->
<xsl:variable name="textWithBrs" select="umbraco.library:ReplaceLineBreaks($currentPage/keywords)"/>
<!-- replace commas with pipes so you can use Split -->
<xsl:variable name="textWithPipes" select='umbraco.library:Replace($textWithBrs, ", ", "|")'/>
<!-- split into an array of items and output as unordered list -->
<xsl:variable name="items" select="umbraco.library:Split($textWithPipes, '|')"/>
<ul>
<xsl:for-each select="$items/value">
<li>
<input type="checkbox" value="true" keyword="{.}" id="{.}" name=""/>
<a>
<xsl:attribute name="href"> <xsl:text disable-output-escaping="yes">/imagery/image-search.aspx
<![CDATA[?]]>
search=</xsl:text> <xsl:value-of select="." /> </xsl:attribute>
<xsl:attribute name="title"> <xsl:value-of select="."/> </xsl:attribute>
<xsl:value-of select="."/> </a> </li>
</xsl:for-each>
</ul>
<input type="submit" value="Search" id="btnSearchBottom" name="" onclick="location.href='/imagery/image-search.aspx?search=otbra'" />
</xsl:if>
どんな援助でも大歓迎です。
乾杯、JV
私はいくつかの編集を行い、現在は半機能しています。ただし、私の Umbraco テンプレートには、コンテンツをラップするフォームがあります。それがいくつかの問題を引き起こしていると思います。
私のテストでは、XSL コードをラップするフォームがありました。「送信」ボタンをクリックしても何も起こりませんが、同じコードの複製がある場合、チェックボックスの2番目のリストを送信できます。また、複数の選択を行うと、検索結果は結果を返さない「1、2」を検索しようとします (/image-search.aspx?search=one&search=two)。"one two" (/image-search.aspx?search=one%20two) を検索する必要があります。
繰り返し形式の私のコード:
<div style="display:none;">
<form name="input" action="/imagery/image-search.aspx" method="get">
<ul>
<xsl:for-each select="$items/value">
<li>
<input type="checkbox" name="search" value="{.}"/>
<a href="/imagery/image-search.aspx?search={umbraco.library:UrlEncode(.)}" title="{.}"> <xsl:value-of select="."/> </a> </li>
</xsl:for-each>
</ul>
<input type="submit" value="Submit"/>
</form>
</div>
<div>
<form name="input" action="/imagery/image-search.aspx" method="get">
<ul>
<xsl:for-each select="$items/value">
<li>
<input type="checkbox" name="search" value="{.}"/>
<a href="/imagery/image-search.aspx?search={umbraco.library:UrlEncode(.)}" title="{.}"> <xsl:value-of select="."/> </a> </li>
</xsl:for-each>
</ul>
<input type="submit" value="Submit"/>
</form>
</div>
次に、リストをフォームにラップする必要のない次のコードを試しました。ここでも複数選択は機能しませんが、返される結果はリストの最初の入力値 (この場合は「1」) だけです。
<ul id="checkboxes">
<xsl:for-each select="$items/value">
<li>
<input id="{.}" type="checkbox" name="search" value="{.}"/>
<a href="/imagery/image-search.aspx?search={umbraco.library:UrlEncode(.)}" title="{.}"> <xsl:value-of select="."/> </a> </li>
</xsl:for-each>
</ul>
<input name="searchbutton" class="button" value="Search" type="reset" onClick="location.href='/imagery/image-search.aspx?search=' + $('#checkboxes input').attr('value')" />
そのため、使用するオプションと、検索結果に複数の選択肢を含める方法について助けが必要です。