2017-11-17 8 views
1

crafter(3.0)がURLマッピングを実行できるかどうかは疑問でした。例えばCrafter 3.0でURLマッピングを行う方法

/site/website/foobar/mycontent/index.xmlような指定されたパスのコンテンツを持って、そのURLが/news/2017/11/17/my-contentあることに(これらは自動的にスタジオで-に変換されるのでfile-name分野で使用することができない追加/に気付きます)。

おかげで、

ニコラス

答えて

2

内蔵のルータ(https://github.com/craftercms/craftercms/issues/1622)私たちのロードマップ上にあるが、今のところ、あなたが簡単にあなたの青写真に1を追加することができます

  1. は、コンポーネントを作成します。それは "ルーティングテーブル"を含んでいます。このコンポーネント には繰り返しテーブルがあり、各エントリはインバウンドURLで、 アウトバウンドURLです。
  2. すべての呼び出しを代行受信するGroovyフィルタスクリプトを作成し、 がそのURLが着信URLの1つと一致するかどうかを確認します。そうであれば、 は対応する発信URLに要求を転送します。

    def routingTableItem = siteItemService.getSiteItem("/site/components/system/routing-table.xml") 
    def routingTable = routingTableItem.urlRoutingTable.item 
    def currentURL = request.requestURI 
    
    def matchedEntry = routingTable.find { entry -> 
        return currentURL == entry.inboundURL.text 
    } 
    
    if (matchedEntry) { 
        def inboundURL = matchedEntry.inboundURL.text 
        def outboundURL = matchedEntry.outboundURL.text 
    
        logger.info("Forwarding URL ${inboundURL} to ${outboundURL}") 
    
        request.getRequestDispatcher(outboundURL).forward(request, response) 
    } else { 
        filterChain.doFilter(request, response) 
    } 
    
:以下、このようなフィルタの 可能なコードであります
関連する問題