У меня такая же ситуация, как и у вас, за исключением того, что я разрабатываю в Zend Framework и Doctrine вместо Code Igniter.
То, как мы решили эту проблему, заключалось в создании модели Sitemap, действующей как Doctrine Nested Set. Это всего лишь несколько полей, таких как id, parent_id, title, uri, созданный, обновленный. Вы можете добавить больше полей, если вам нужно, но это основная предпосылка.
Затем мы используем Zend_Navigation, чтобы отобразить это дерево в меню для сайта.
Zend_Navigation также имеет вспомогательный метод для автоматической генерации XML-карты сайта, поэтому у нас есть контроллер и представление, настроенное для визуализации этого XML-документа.
Затем мы написали плагин Zend Action Controller, который контролирует контроллер карты сайта, и когда обновления производятся, он проверяет последнее обновление и проверяет Google, что карта сайта была обновлена.
Все эти концепции могут быть легко перенесены в CI, я думаю.
Если в CI нет помощника вида карты сайта, вы, вероятно, можете использовать классы Zend Navigation, поскольку Zend слабо отделен.
Или вы можете просто сгенерировать XML-документ с помощью CI, используя стандарт для карт сайта здесь.
http://www.sitemaps.org/protocol.php