我必须使用 eZURLAliasFilterAppendNodeID 类,它修改给定类中所有节点的 url_alias 并在末尾附加它们的 node_id。
问题是我也需要附加节点的创建日期,似乎 eZURLAliasFilterAppendNodeID 和 ezURLAlias 都没有完成这项工作。
请问有人有办法吗?我还没有找到任何可以的类,但我真的不想在我的系统类中添加一些代码...... :-S
谢谢 !
- 约翰
我必须使用 eZURLAliasFilterAppendNodeID 类,它修改给定类中所有节点的 url_alias 并在末尾附加它们的 node_id。
问题是我也需要附加节点的创建日期,似乎 eZURLAliasFilterAppendNodeID 和 ezURLAlias 都没有完成这项工作。
请问有人有办法吗?我还没有找到任何可以的类,但我真的不想在我的系统类中添加一些代码...... :-S
谢谢 !
- 约翰
如果您查看默认的 site.ini 文件:
# List of active filters, each entry must contain the name of the class
# which implements the filtering.
# DEPRECATED, use FilterClasses instead
Filters[]
# List of classes you want to call as an eZURLALiasFilter
FilterClasses[]
FilterClasses[]=eZURLAliasFilterAppendNodeID
这基本上意味着您可以开发自己的过滤器,因为 eZ Publish 允许您告诉他在生成 URL 时调用了哪些 PHP 类:
class eZURLAliasFilterAppendDate extends eZURLAliasFilter
{
public function __construct() {}
public function process( $text, &$languageObject, &$caller )
{
if( !$caller instanceof eZContentObjectTreeNode )
{
eZDebug::writeError( 'The caller variable was not an eZContentObjectTreeNode', __METHOD__ );
return $text;
}
$separator = eZCharTransform::wordSeparator();
$publishedTimestamp = $caller->attribute( 'object' )->attribute( 'published' )
$formattedDate = ....
$text .= $separator . $formattedDate;
return $text;
}
}
eZURLAliasFilterAppendNodeID
注意:如果您不想选择要关注的内容类,您可能必须在 class_identifier 上实现相同的测试
可能在 settings/siteaccess/yourfrontendsite/site.ini.append.php
[URLTranslator]
FilterClasses[]=eZURLAliasFilterAppendDate
php bin/php/ezpgenerateautoloads.php -e