Да, простой и полезный код.
Но на сколько я понимаю у вас записи для tx_estateagent_pi1 хранятся на тех же страницах на которых выводятся. Это упрощает решение.
Но в моем случае такая реализация будет затруднительна. Например, записи "компании" хранятся в нескольких SysFolder, и выводятся на нескольких разных страницах в зависимости от SysFolder и категории. Откуда выводить компании (SysFolder) и каких категорий задается в FlexForm плагина на странице. Получается всю такую конфигурацию для всего сайта нужно продублировать в шаблоне для typeNum = 777. Получится очень длинный шаблон с большим количеством кода, и следовательно легко что-то забыть там добавить, забыть вносить изменения сделанные в конфигурации разделов.
Теперь думаю сделать так как вы написали, но для каждого раздела (некоторые страницы) сделать свою конфигурацию для sitemap, так проще ее поддерживать актуальной.
И потом написать что-то вроде crawler-a, который:
1. будет проходить по всем страницам, запрашивать их с typeNum = 777
2. если получит в ответ валидный xml (это sitemap.xml для этого раздела), то добавит в общий sitemap index файл (
http://www.sitemaps.org/protocol.html#index)
3. ну и конечно sitemap обычных страниц тоже в sitemap index включит.