template page to show custom a post types only

From what I can understand of your snippet post retrieval is implemented by get_posts($cat_post_args) call and so results are controlled by $cat_post_args arguments.

To add post type limitation to it you should add post_type argument to that array. See documentation on get_posts() and WP_Query (used internally and documents available argument more thoroughly).

404 Not Found

Not Found

The requested URL was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.