locked
検索結果画面の変更 RRS feed

  • 質問

  •  

    MOSS2007を利用しています。

    検索結果を表示する場合、ユーザー設定範囲を利用すると、「サイトの設定」-「検索の設定」にあるように、/SearchCenter/Pagesを利用して検索結果が表示されます。

    例えば、[すべてのサイト]で検索した結果は、このページを利用して結果が表示されます。

     

    ユーザー範囲を利用しない場合は、たとえば「このサイト:****」の場合は、/sites/develop/_layouts/osssearchresults.aspxを利用して検索結果が表示されます。

     

    ユーザー範囲を利用しない場合でも、/SearchCenter/Pagesを利用して検索結果を表示することは可能でしょうか?

     

    /SearchCenter/Pagesをカスタマイズして検索結果の表示を変更しているので、すべての検索をこのページで表示したいのですが。。

     

    あるいは、、/sites/develop/_layouts/osssearchresults.aspxをカスタマイズする必要があるのでしょうか?

    2008年4月23日 7:53

回答

  • SearchArea.xmlのSearchResultPageURLの設定を変更しても変化がなかったので、osssearchresults.aspxをカスタマイズで対応しました。

    SearchCenter/Pagesに検索ワードを渡します。

     

     

    <script language = "javascript">

    function getURLParam(strParamName){

      var strReturn = "";

      var strHref = window.location.href;

      if ( strHref.indexOf("?") > -1 ){

        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();

        var aQueryString = strQueryString.split("&");

        for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){

          if (

            aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){

            var aParam = aQueryString[iParam].split("=");

            strReturn = aParam[1];

            break;

          }

        }

      }

      return unescape(strReturn);

    }

    var urlstring = 'http://<sharepointURL>/SearchCenter/Pages/results.aspx?k=' + getURLParam('k') + '&cs=' + getURLParam('cs') + '&u=' + getURLParam('u')

     

    location.replace(urlstring);

    </script>

    2008年5月13日 1:41

すべての返信

  • 実際に試してはいないのですが、以下のスレッドで私から回答をさせていただいている箇所をご覧ください。
    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3103197&SiteID=7


    SearchBoxをカスタマイズすることで、ご期待通りの動作をするのではないかと思っています。
    具体的には以下の赤字の部分を変更すればよいかと。

    <?xml version="1.0" encoding="utf-8" ?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
        <Control
            Id="SmallSearchInputBox"
            Sequence="50"
            ControlClass="Microsoft.SharePoint.Portal.WebControls.SearchBoxEx" ControlAssembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">
     <Property Name="GoImageUrl">/_layouts/images/gosearch.gif</Property>
     <Property Name="GoImageUrlRTL">/_layouts/images/goRTL.gif</Property>
     <Property Name="GoImageActiveUrl">/_layouts/images/gosearch.gif</Property>
     <Property Name="GoImageActiveUrlRTL">/_layouts/images/goRTL.gif</Property>
     <Property Name="DropDownMode">ShowDD</Property>
     <Property Name="SearchResultPageURL">/_layouts/osssearchresults.aspx</Property>
     <Property Name="ScopeDisplayGroupName"></Property>
     <Property Name="FrameType">None</Property>
     <Property Name="xxx">isdocument:1</Property>
        </Control>   
    </Elements>


    私はosssearchresults.aspxをカスタマイズしたこともあるのですが、SearchCenterのページとはHTMLの構造が異なるので両者を同じデザインにするのは非常に困難だと思っています。
    SearchBoxカスタマイズでいけるのなら、それがベストですね。

    2008年4月24日 1:12
  • コメントありがとうございます。

    しかし、設定してみたのですが変化なしでした。

    2008年4月25日 9:10
  • SearchArea.xmlのSearchResultPageURLの設定を変更しても変化がなかったので、osssearchresults.aspxをカスタマイズで対応しました。

    SearchCenter/Pagesに検索ワードを渡します。

     

     

    <script language = "javascript">

    function getURLParam(strParamName){

      var strReturn = "";

      var strHref = window.location.href;

      if ( strHref.indexOf("?") > -1 ){

        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();

        var aQueryString = strQueryString.split("&");

        for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){

          if (

            aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){

            var aParam = aQueryString[iParam].split("=");

            strReturn = aParam[1];

            break;

          }

        }

      }

      return unescape(strReturn);

    }

    var urlstring = 'http://<sharepointURL>/SearchCenter/Pages/results.aspx?k=' + getURLParam('k') + '&cs=' + getURLParam('cs') + '&u=' + getURLParam('u')

     

    location.replace(urlstring);

    </script>

    2008年5月13日 1:41