Wie kann ich nun festlegen, dass am Beginn des PHP-Skriptes die Variable erst ausgegeben wird, wenn das Skript abgelaufen ist? Das klingt vielleicht unlogisch, ich sehe hier aber keine andere Möglichkeit...
Wenn du dich konsequent an das Standardprinzip E-V-A = Eingabe - Verarbeitung - Ausgabe hälst, kommt es gar nicht erst zu solchen unlösbaren Situationen.
Denn Fakt ist: Wenn du einen Wert ausgeben willst, muß er existieren, also durch Eingabe und Verarbeitung zur Verfügung stehen. Anders klappt es nicht.
Naja, der Punkt ist, dass sich erst anhand des jeweiligen Templates (eine index.php in der die Templates eingebunden werden) entscheidet, mit welchen Optionen die Funktion arbeiten soll.
Nun könnte ich
a) die JavaScript-Deklatation in den <body>-Teil rücken was - glaube ich - nicht ganz astrein ist oder
b) das Template ganz zu Beginn verarbeiten und erst später ausgeben, was aber auch irgendwie absurd klingt.
Wie lösen das denn eigtl umfangreiche CMS oder Foren-Systeme?
Das Beispiel:
<head>
...
<script type="text/javascript">
function load() {
var newstitle = document.getElementsByClassName('newstitle');
var news = document.getElementsByClassName('newstext');
new Accordion(newstitle, news, {<? echo $options ?>});
}
</script>
...
</head>
<body onload="load()">
...
include {template} //vereinfacht
</body>
das template könnte so aussehen:
....
echo news('news'); // => die News-Beiträge sollen mit Akkordeon-Effekt ausgegeben werden, das erste soll automatisch geöffnet werden
...
ein anderes so:
...
echo news('site'); // => auch Akkordeon-Effekt, aber keins soll automatisch geöffnet sein, in diesem Falle müsste oben in den geschweiften Klammern "display: false" stehen.
Also sollte dann in der Funktion news() irgendwo, wenn das Argument "site" ist, $options = "display: false" ausgeführt werden.