That is a nice feature request: override on class-attribute instead of on class for datatypes. Do it (post as an enhancement in the bug reports)!
However, in your case, i would use a normal text field for creating the menus. With some clever string operations (non-xml), you may achieve what you need.
You can do an override of the template using the key attribute_identifier. This means that you will create a new template for paragraph which only will be used if e.g. the attribute_identifier=menu.
The override settings is set in override.ini. The name of the attribute_identifier is found when you view your class.
Thank you! success!! Match[attribute_identifier] is great...
By the way: if I am a freshman, how can I find the relevant part of the php code, where the acceptable Match[... ] values take place? Some rgreps in the kernel directory? Or some print_r-s in the index.php? ...
Is there some elegant way to see, what variable-s can be seen from a template.tpl file? I mean something like http://ez.no/ez_publish/documentation/customization/custom_design/template_variables_set_by_ezpublish ,but without having to known this kind of specialities of eZp...
If you would like to get all the override keys which are used you need to add a var_dump($matchKeys) in kernel/common/eztemplatedesignresource.php at line 344. That might be too much information, but atleast you will get all keys used.
No, there is currently no elegant way of seeing all available template variables.