我尝试使用ModX Revo根据资源ID和父ID输出某些元描述。
问题是Modx过滤器只能运行只有一个特殊标签(或id,或父ID,或其他东西),例如。
[[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`<meta name="description" content="[[*description]]" />`]]
在这种情况下,代码是 ID 。在我的情况下,我需要再添加一个声明,它必须像:
如何在不创建模板或块的情况下执行此操作? 我尝试了一些变种:
这只是不起作用
[[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`[[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]]]]
OR
这在331st资源上输出两个描述
[[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=``]]
[[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]]
答案 0 :(得分:0)
你最终会找到重复的描述,不适合SEO&amp;可能是更好的方式来达到你想要的地方。但那不是问题。
最好的办法是编写一个快速片段,在其中输出元标记:
[[!getMeta? &resourceid='[[*id]]' ]]
你的getMeta片段中的:
<?php
$id = isset($scriptProperties('resourceid')) ? $scriptProperties('resourceid') : FALSE
if(!$id){ return; }
$output = '';
if($modx->getParent($id,1,'id') == 321){
$output = '...your meta tag for the funny parent';
}else{
if($id == 331){
$output = '...your meta tag...';
}else{
$output = '...your alternate meta tag...';
}
}
echo $output;
return;
这些方面的东西。 - 您应该创建块来输出任何HTML,或者您可以将块存储在属性集中。
答案 1 :(得分:0)
我建议查看pdoField或其他pdoTools片段之一。已有内置参数用于执行您似乎需要的过滤和条件。 pdoField DOCS
请务必查看常规pdoTools属性以及特定于pdoField的属性。