MovableType: Schöne URLs für die Suche

MT verwendet für die Suche nach Freitext und Tags eine recht unschöne URL.

Suche nach Tags

 /cgi-bin/mt/mt-search.cgi?IncludeBlogs=16&tag=Tag&limit=20

Suche nache Text

/cgi-bin/mt/mt-search.cgi?search=Suchbegriff&IncludeBlogs=16&limit=20

Ausgehend von dieser Beschreibung habe ich ich dieses mit Apache rewrite rules und Anpassungen im Template realisieren können.

So ist es besser:

/tag/Suchtag
/search/Suchtext

Anpassungen für die Tags:

Apache Umleitungen in htaccess

In die .htaccess im Root Verzeichniss des Blogs folgenden Regel einfügen

RewriteRule ^tag/(.*)$ /cgi-bin/mt/mt-search.cgi?blog_id=4&tag=$1&limit=10
Template änderungen

An den Stellen an denen der Tag Link auftaucht muß dieser String

<$mt:TagSearchLink encode_js="1"$>

durch dies ersetzt werden

<$mt:BlogURL$>tag/<$mt:TagName normalize="1"$>

Bei mir waren das die Tag Cloug und Tag Entry der Beiträge

Suche:

Apache Umleitungen in htaccess:
RewriteRule ^search/(.*)$ /cgi-bin/mt/mt-search.cgi?search=$1&IncludeBlogs=4&limit=10

Template:

In meinem Template (auf Basis von Bootstrap) mußte ich die Suchmaske anpassen:

 <form class="navbar-search pull-right" method="post" action="/search/">
        <input type="text" name="search" value="" placeholder="Suchen" />
  </form>

Pagination für die Text und die Tag Suche

Jetzt funktioniert zwar die Suche aber leider tauchen die normalen Such Url noch in der Seitennavigation der Suchergebnisse auf.
Im Template "Search Results" muß die vorhandene Regel gegen diese ausgetauscht werden.

<mt:IfStraightSearch>
  <$mt:SetVar name="url-cmd" value="search"$>
</mt:IfStraightSearch>
<mt:IfTagSearch>
  <$mt:SetVar name="url-cmd" value="tag"$>
</mt:IfTagSearch>
<$mt:CurrentPage setvar="aktuelle_seite"$>
<div class="pagination">
  <mt:IfPreviousResults>
    <li> <a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:var op="--" name="aktuelle_seite"$>">«</a></li>
  </mt:IfPreviousResults>
  <mt:PagerBlock>
    <mt:IfCurrentPage>
     <li class="active"> <a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:Var name="__value__"$>"><$mt:Var name="__value__"$></a></li>
    <mt:Else>
     <li><a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:Var name="__value__"$>"><$mt:Var name="__value__"$></a></li>
    </mt:IfCurrentPage>
    <mt:Unless name="__last__"></mt:Unless>
  </mt:PagerBlock>
  <mt:IfMoreResults>
    <li><a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:var op="++" name="aktuelle_seite"$>">»</a></li>   
  </mt:IfMoreResults>
  </div>