Here's a practical example of where theme development runs into trouble
from module theme functions: overusing theme functions or using the
wrong theme functions.&nbsp; <br>
<br>
In theme.inc (core) is the function theme_form_element which is roughly this (may be old code):<br>
<br>
function theme_form_element($title, $value, $description = NULL, $id = NULL, $required = FALSE, $error = FALSE) {<br>
<br>
&nbsp; $output&nbsp; = &quot;&lt;div class=\&quot;form-item\&quot;&gt;\n&quot;;<br>
&nbsp; $required = $required ? '&lt;span class=&quot;form-required&quot;&gt;*&lt;/span&gt;' : '';<br>
<br>
&nbsp; if ($title) {<br>
&nbsp;&nbsp;&nbsp; if ($id) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output .= &quot; &lt;label for=\&quot;$id\&quot;&gt;$title:&lt;/label&gt;$required&lt;br /&gt;\n&quot;;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output .= &quot; &lt;label&gt;$title:&lt;/label&gt;$required&lt;br /&gt;\n&quot;;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; }<br>
<br>
Now, the &lt;br /&gt; tags _aren't_ the big problem here.<br>
<br>
The problem is that modules (including core modules like
profile.module) call this function for both form input _and_ form
output.&nbsp; From a design/theme p.o.v., those are two distinct things
and should be treated as such.<br>
<br>
Is this a _really big deal_ that causes Drupal to break?&nbsp; Probably
not.&nbsp; But imagine my surprise when I used PHPTemplate to override
this theme function, and all the form elements on my entire site
changed instantly (and broke).<br>
<br>