使用 RealURL 处理可以为空的参数
Handling of parameters which can be empty with RealURL
我有一个生成的路径,其中包含不同的类别和使用自己的扩展制作的产品。可以是一类,二类,三类,在二类或三类下面加一个产品。
应该有效的 URL 示例:
/mainCategory/
/mainCategory/secondCategory/
/mainCategory/secondCategory/product-title
/mainCategory/secondCategory/thirdCategory/
/mainCategory/secondCategory/thirdCategory/product-title
现在的问题是不需要第三个类别来显示产品。
我的配置:
'fixedPostVars' =>
[
'produkt' =>
[
0 =>
[
'GETvar' => 'tx_vendor_plugin[mainCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
1 =>
[
'GETvar' => 'tx_vendor_plugin[subCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
2 =>
[
'GETvar' => 'tx_vendor_plugin[thirdCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
3 =>
[
'GETvar' => 'tx_vndor_plugin[product]',
'lookUpTable' =>
[
'table' => 'tx_vendor_domain_model_product',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
],
当我将 noMatch => bypass
添加到 thirdCategory 时,它没有显示任何第三个类别。每三个类别都无法访问。
当我在没有 noMatch => bypass
的情况下使用它时,URL 中有一个空路径参数,用于没有第三类的产品:/mainCategory/secondCategory//product-title
谁能帮我解决这个问题?
不久前在 TYPO3 Slack 中被问及answered by Dmitry:
In other words: you can;t have optional parameters in the beginning or middle of the postVar.
因此结论是,这对于 RealURL 是不可能的。
一个例子:
/mainCategory/secondCategory/product-title/
/mainCategory/secondCategory/thirdCategory/
RealURL 应该如何知道要在这里解码 product-title
和 thirdCategory
什么?它是不明确的,因为它可能是产品或类别。这就是为什么 RealURL 对 beginning/middle.
中可选的任何内容使用空路径段的原因
我有一个生成的路径,其中包含不同的类别和使用自己的扩展制作的产品。可以是一类,二类,三类,在二类或三类下面加一个产品。
应该有效的 URL 示例:
/mainCategory/
/mainCategory/secondCategory/
/mainCategory/secondCategory/product-title
/mainCategory/secondCategory/thirdCategory/
/mainCategory/secondCategory/thirdCategory/product-title
现在的问题是不需要第三个类别来显示产品。
我的配置:
'fixedPostVars' =>
[
'produkt' =>
[
0 =>
[
'GETvar' => 'tx_vendor_plugin[mainCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
1 =>
[
'GETvar' => 'tx_vendor_plugin[subCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
2 =>
[
'GETvar' => 'tx_vendor_plugin[thirdCategory]',
'lookUpTable' =>
[
'table' => 'sys_category',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
3 =>
[
'GETvar' => 'tx_vndor_plugin[product]',
'lookUpTable' =>
[
'table' => 'tx_vendor_domain_model_product',
'id_field' => 'uid',
'alias_field' => 'title',
'languageGetVar' => 'L',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l10n_parent',
'useUniqueCache' => 1,
'useUniqueCache_conf' =>
[
'strtolower' => 1,
'spaceCharacter' => '-',
],
],
],
],
当我将 noMatch => bypass
添加到 thirdCategory 时,它没有显示任何第三个类别。每三个类别都无法访问。
当我在没有 noMatch => bypass
的情况下使用它时,URL 中有一个空路径参数,用于没有第三类的产品:/mainCategory/secondCategory//product-title
谁能帮我解决这个问题?
不久前在 TYPO3 Slack 中被问及answered by Dmitry:
In other words: you can;t have optional parameters in the beginning or middle of the postVar.
因此结论是,这对于 RealURL 是不可能的。
一个例子:
/mainCategory/secondCategory/product-title/
/mainCategory/secondCategory/thirdCategory/
RealURL 应该如何知道要在这里解码 product-title
和 thirdCategory
什么?它是不明确的,因为它可能是产品或类别。这就是为什么 RealURL 对 beginning/middle.