If u are making templates avalable for the public, try to avoid using PHP code inside the template, because many people experiensing lots of problems just cause of that!
Yes, I know, that by including "menu.php" file u can do changes in that file and without need editing each template. Agreed, that's the easiest way to do, but the side effect of that can cause number 2 problem discusing on this forum: eval() error.
so, what u can do about that? - simply replace all your <?php ... ?> code with {...} tag.
let me give u an idea how to do it.
lets say in your template u have this PHP code:
<?php
include('menu.php');
?>
this inserts in the template what ever is in /menu.php file.
most of the time the file contains plain HTML code.
now, you replace the PHP code (as above) with this tag: {4images_menu} (Explanation let's make it "standard" tag, that everyone would use same tag everywhere Wink). Then, u create a new template: /templates/<yourtemplate>/4images_menu.html with the code from menu.php
In the installation.txt guide u state, that if this is a first time installation of new template, then they should add two lines, in /includes/page_header.php file, at the end, just before closing ?>
$menu = (file_exists(TEMPLATE_PATH."/4images_menu.html")) ? $site_template->parse_template("4images_menu") : "";
$site_template->register_vars("4images_menu", $menu);
that's all, now all {4images_menu} tags will be replaces with whatever u put into 4mages_menu.html template.
Hope this will go as some sort of guide for templete developers, cause as I mentioned above, eval() error is number 2 problem after SAFE MODE, but work around it is much easier.