2

特定のページの URL を読み上げるために、Typo3 4.5.16 プロジェクトで RealURL を使用しています。このために、特定の数の ID を対応する URL に一致させるルックアップ テーブルを使用しています。

たとえば、、 、、および、それぞれに
http://www.example.com/path/to/catalog/chapter1/section1/group1/prod-123/
マップされたパラメーターを使用して、ページ「カタログ」にマップします。これらのパラメーターのLASTのみが関連し、実際のマッピングがあることに注意してください。他のパラメーターは「きれいな」パス用にのみ存在します。chaptersectiongroupproduct

ここで私の問題: すべての製品にすべてのレベルの先行パス セグメントがあるわけではありません。たとえば、別の製品の URL は次のようになります。
http://www.example.com/path/to/catalog/chapter1/section4/prod-789/

データベースは次のようになります。

Id  | seg0      | seg1      | seg2      | seg3      | dummy0    | dummy1    | dummy2    | MapId
----|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------
1   | chapter1  | section1  | group1    | prod-123  | 1         | 1         | 1         | 123
2   | chapter1  | section4  |           | prod-789  | 1         | 4         | 0         | 789

セグメント名へのマッピングが空であることがわかります。

ただし、RealURL は空の文字列をグループとして使用し、
chapter1/section4//prod-789

このような空のマッピングを抑制する方法はありますか? デコードはセグメントを次のパラメーターに渡しますか (noMatch => bypass値マップのように)

そうでない場合、ルックアップ テーブルを使用して複数のパス セグメントを一度にマッピングできますか? (つまり、パス全体を実際の ID にマッピングする)?

4

2 に答える 2

1

realUrlが提供するフックを試してみることをお勧めします。 この記事を参照してください

于 2012-06-21T22:48:39.847 に答える
0

さて、私は自分自身でハッキーな回避策を見つけました。

これはuserFunc、基本的にlookupTableの動作を模倣するtionsを使用します。すべてのレベルに対して、そのような機能が1つあります。$params['pathParts']unser関数に渡される配列を変更します

エンコーディング:

  • 「親」レベルの場合は、セグメントにマップするだけです。マップされていない場合、これは空の文字列を返します。
  • マップされたレベルの場合、渡された$params['pathParts']配列の最後にあるすべての空の要素を削除します
  • =>空のパーツを削除します

デコード:

  • 「親」レベルについては、にさらに要素があるかどうかを確認してください$params['pathParts']。そうでない場合、これは「スキップされた」親です。現在の値をに追加するだけで$params['pathParts']、RealURLによって次のレベルに渡されます
  • マップされたレベルは、最終的に正しい値で呼び出されます。マップするだけ

userFunctionsの処理がRealURLによってあまり変更されない限り機能します...

于 2012-06-19T14:17:58.203 に答える