2017-12-08 3 views
1

デスクトップ用とモバイル用の2回の検索ボックスがあります。繰り返しサブレイアウト - ADA要件を満たすためにユニークにするには

デバイスによって表示される項目が決まります。しかし、ADAのために、ラベルは一意である必要があります。

サブレイアウトを呼び出し、使用するhtml要素ごとに一意のタグを生成する方法はありますか?

または、タグが一意であることを確認するために、サブレイアウト内にタグを生成する方法があります。


<div id="desktop"> 
<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" /> 
</div> 
<div id="mobile-search" class="hidden"> 
<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" /> 
</div> 

-----------レイアウト内

<div class="searchtool"> 
<img src="/includes/images/search.png" alt="Search" style="float:left"/> 
<div style="float:left"> 
<fieldset class="search" aria-labelledby="Name"> 

ALTARIA-labelledbyのタグは一意である必要があります。

おかげ

答えて

0

ジャストアイデアは、パラメータとしてデバイスを渡すと、例えばラベルを作ります"search-desktop"または "search-mobile"

詳細はこちらをご覧ください - http://imjo.hn/2012/02/23/passing-properties-into-sitecore-sublayouts/

<sc:Sublayout Path="~/site/sublayouts/Shared/QuickSearch.ascx" runat="server" 
Parameters="device=mobile" /> 

<img src="/includes/images/search.png" alt="Search-<%=GetParameter("device") %>" style="float:left"/> 

ここでは、その記事に記載されたヘルパー関数です。

private NameValueCollection _ParameterCollection; 
public NameValueCollection ParameterCollection 
{ 
    get 
    { 
     if (_ParameterCollection == null) 
     { 
      _ParameterCollection = new NameValueCollection(); 
      string[] parameters = (Parent as Sublayout).Parameters.Split('&'); 
      string[] pair; 
      foreach (string paramPair in parameters) 
      { 
       pair = paramPair.Split('='); 
       _ParameterCollection.Add(pair[0], pair[1]); 
      } 
     } 
     return _ParameterCollection; 
    } 
} 

public string GetParameter(string key) 
{ 
    string value = String.Empty; 
    string parameterValue = ParameterCollection.Get(key); 
    if (parameterValue != null) 
    { 
     value = parameterValue; 
    } 
    return value; 
} 
0

サブレイアウトセクションを複製しました。新しい名前と、すべてのタグ要素を異なる名前に変更しました。

関連する問題