Typo3:菜单中的第 link 页使用自定义记录中的值
Typo3: page link in menu using value from custom record
我有:
- 3 级菜单
- 来自 table 的自定义记录
"tx_products_domain_model_product"
- 产品有一个名为 "url_alias"
的字段
在该菜单的任何页面上,我都可以有一个产品记录。
对于有产品记录的页面,我希望 link 看起来像:
http://www.sitedomain.com/<url_alias>
这可以用错别字完成吗?
编辑
看起来用错别字完成所有这些太复杂了,所以我使用了 userFunc。我正在检查是否有带有商店 ID 的产品记录,并想 return 该商店 ID。如果不是,return 当前菜单页面的 UID。问题是,如何将菜单页面 UID 作为参数传递给 userFunc?
class user_productsOnCurrentPage
{
function main( $content, $conf )
{
if ( TYPO3_MODE !== 'FE' )
{
return FALSE;
}
$product = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
'shop_id', 'tx_products_domain_model_product', 'pid=' . $conf['currentPageId'] . ' AND deleted=0 AND hidden=0' );
if ( is_array( $product ) && ! empty( $product ['shop_id'] ) )
{
return $product ['shop_id'];
}
return $conf['currentPageId'];
}
}
菜单:
lib.mainMenu = HMENU
lib.mainMenu {
...
1 = TMENU
1 {
...
NO = 1
NO {
...
# show direct url for external links
doNotLinkIt = 1
stdWrap.cObject = CASE
stdWrap.cObject {
key.field = doktype
default = TEXT
default {
field = nav_title // title
typolink.parameter.cObject = USER
typolink.parameter.cObject {
userFunc = user_productsOnCurrentPage->main
currentPageId = ?????
}
typolink.wrap = |<span><strong></strong></span>
typolink.ATagBeforeWrap = 1
stdWrap.htmlSpecialChars = 1
}
...
我可以直接在用户函数中访问页面 ID:
打字错误:
typolink.userFunc = user_mcfazabosOnCurrentPage->main
PHP:
$pageId = $this->cObj->getFieldVal( 'uid' );
我有:
- 3 级菜单
- 来自 table 的自定义记录 "tx_products_domain_model_product"
- 产品有一个名为 "url_alias" 的字段
在该菜单的任何页面上,我都可以有一个产品记录。 对于有产品记录的页面,我希望 link 看起来像:
http://www.sitedomain.com/<url_alias>
这可以用错别字完成吗?
编辑
看起来用错别字完成所有这些太复杂了,所以我使用了 userFunc。我正在检查是否有带有商店 ID 的产品记录,并想 return 该商店 ID。如果不是,return 当前菜单页面的 UID。问题是,如何将菜单页面 UID 作为参数传递给 userFunc?
class user_productsOnCurrentPage
{
function main( $content, $conf )
{
if ( TYPO3_MODE !== 'FE' )
{
return FALSE;
}
$product = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow(
'shop_id', 'tx_products_domain_model_product', 'pid=' . $conf['currentPageId'] . ' AND deleted=0 AND hidden=0' );
if ( is_array( $product ) && ! empty( $product ['shop_id'] ) )
{
return $product ['shop_id'];
}
return $conf['currentPageId'];
}
}
菜单:
lib.mainMenu = HMENU
lib.mainMenu {
...
1 = TMENU
1 {
...
NO = 1
NO {
...
# show direct url for external links
doNotLinkIt = 1
stdWrap.cObject = CASE
stdWrap.cObject {
key.field = doktype
default = TEXT
default {
field = nav_title // title
typolink.parameter.cObject = USER
typolink.parameter.cObject {
userFunc = user_productsOnCurrentPage->main
currentPageId = ?????
}
typolink.wrap = |<span><strong></strong></span>
typolink.ATagBeforeWrap = 1
stdWrap.htmlSpecialChars = 1
}
...
我可以直接在用户函数中访问页面 ID:
打字错误:
typolink.userFunc = user_mcfazabosOnCurrentPage->main
PHP:
$pageId = $this->cObj->getFieldVal( 'uid' );