ドキュメント作成時に管理画面および FDM からの作成時には editedon は作成時の日時が入ります。
1)editedonの値について
私の記憶が確かなら、editedonの値はドキュメントの作成直後は「0」になっているはずです。すなわち、作成したっきりで一度も更新されていないドキュメントがあると、そのeditedonの値は「0」となってしまいます。単純にeditedonの最大値を持ってくるのではちょっと不十分で、editedonが「0」のドキュメントはcreatedonを使って最大値判断を行わないといけないのではないでしょうか?
ログイン専用、検索結果の表示用に関しては常に最新の更新日時とはならないという前提で使ってください。
2)対象ドキュメントの絞込みについて
ドキュメントには、ログイン専用とか検索結果表示用のがあったりして、それらのドキュメントはRSSには含みたくないのではないでしょうか? 単純に「公開済み+削除されていない」という条件だけだと、これらのドキュメントも対象に入ってしまいますので、除外する策を別途考えないといけないのではないでしょうか?


case 11: // RSS 出力対象のドキュメント最新時刻と ETag を出力する (階層は1レベルのみに限定)
$sql= "SELECT MAX(editedon) AS latest FROM ".$modx->getFullTableName("site_content")."WHERE published=1 AND deleted=0 AND parent=2";
$result= $modx->dbQuery($sql);
$tmpRow= $modx->fetchRow($result);
$latest = $tmpRow['latest'];
$etag = '"' . md5($latest) . '"';
header("Last-Modified: " . gmdate('r', $latest) . " GMT");
header("ETag: $etag");
header("X-Powered-By: dainiti"); // これがすごい
$modx->config['latest'] = $latest; // 今回はここを追加する
break;
}global $modx;
$rss_placeholders['rss_lastmodified'] = gmdate('r', $modx->config['latest']);$rss_header = <<<TPLmodx の更新毎にこんなことしてたら忘れそうなので今後の modx 品質向上に期待 (^。^)y-.。o○
<?xml version="1.0" encoding="[+rss_charset+]" ?>
[+rss_xsl+]
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>[*pagetitle*]</title>
<link>[+rss_link+]</link>
<description>[*description*]</description>
<pubDate>[+rss_lastmodified+]</pubDate>
<language>[+rss_lang+]</language>
<copyright>[+rss_copyright+]</copyright>
<ttl>[+rss_ttl+]</ttl>
TPL;
よくよく考えれば更新日時が公開されるだけで、それ自体は間違いのない事実でありドキュメントの内容まで表示されるわけではないので実運用上はまったく支障はないと思います。
2)対象ドキュメントの絞込みについて
ドキュメントには、ログイン専用とか検索結果表示用のがあったりして、それらのドキュメントはRSSには含みたくないのではないでしょうか? 単純に「公開済み+削除されていない」という条件だけだと、これらのドキュメントも対象に入ってしまいますので、除外する策を別途考えないといけないのではないでしょうか?

ソースの一部になりますが雰囲気は分かりそうなレベルで... こんな感じでどうでしょ?
ditto をつかえばこういう風にできるという例がありましたらご教授お願いします。
case 11:
$latest=$modx->runSnippet('Ditto', array( 'parents'=>'2','display'=>'1', 'tpl'=>'@CODE:[+editedon+]','orderBy'=>'editedon DESC') );
$etag = '"' . md5($latest) . '"';
header("Last-Modified: " . gmdate('r', $latest) . " GMT");
header("ETag: $etag");
break;
$latest=$modx->runSnippet('Ditto', array( 'parents'=>'2','display'=>'1', 'tpl'=>'@CODE:[+editedon+]','orderBy'=>'editedon DESC') );
$etag = '"' . md5($latest) . '"';
header("Last-Modified: " . gmdate('r', $latest) . " GMT");
header("ETag: $etag");
$rss_placeholders['rss_lastmodified'] = gmdate('r', $latest);
$rss_header = <<<TPL
<?xml version="1.0" encoding="[+rss_charset+]" ?>
[+rss_xsl+]
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>[*pagetitle*]</title>
<link>[+rss_link+]</link>
<description>[*description*]</description>
<pubDate>[+rss_lastmodified+]</pubDate>
<language>[+rss_lang+]</language>
<copyright>[+rss_copyright+]</copyright>
<ttl>[+rss_ttl+]</ttl>
TPL;
$site_start = $modx->config['site_start'];
switch ($modx->documentObject['id']) {
case $site_start: // ドキュメント以外にカウンタ、最新情報などを含むページ
$modx_last_modified = $modx->runSnippet('Ditto', array( 'parents'=>'0','display'=>'1', 'tpl'=>'@CODE:[+editedon+]','orderBy'=>'editedon DESC') );
$client_last_modified = empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? '' : trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
$client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
if ( ($client_last_modified) ? ($client_modified_timestamp >= $modx_last_modified) : 0 ) {
header("HTTP/1.1 304 Not Modified");
exit;
}
header("Last-Modified: " . gmdate('r', $modx_last_modified) . " GMT");
break;
case 11: // RSS のページは常に 200 OK ETag は飾り
$modx_last_modified = $modx->runSnippet('Ditto', array( 'parents'=>'2','display'=>'1', 'tpl'=>'@CODE:[+editedon+]','orderBy'=>'editedon DESC') );
$etag = '"' . md5($modx_last_modified) . '"';
header("Last-Modified: " . gmdate('r', $modx_last_modified) . " GMT");
header("ETag: $etag");
break;
default: // ドキュメント自身が最終更新日となるページ
$modx_last_modified = $modx->documentObject["editedon"];
$client_last_modified = empty($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? '' : trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
$client_modified_timestamp = $client_last_modified ? strtotime($client_last_modified) : 0;
if ( ($client_last_modified) ? ($client_modified_timestamp >= $modx_last_modified) : 0 ) {
header("HTTP/1.1 304 Not Modified");
exit;
}
header("Last-Modified: " . gmdate('r', $modx_last_modified) . " GMT");
}