デフォルトの 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 クラスが呼び出されるかを彼に伝えることができるからです。
1. extension/yourextension/classes/ezurlaliasfilterappenddate.php に新しい 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 に対して同じテストを実装する必要がある場合があります。
2. site.ini.append.php オーバーライドで設定します
おそらくsettings/siteaccess/yourfrontendsite/site.ini.append.phpにあります
[URLTranslator]
FilterClasses[]=eZURLAliasFilterAppendDate
3. 拡張機能の php 自動ロードを再生成します。php bin/php/ezpgenerateautoloads.php -e