MyBB.de Forum

Normale Version: code auslagern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
PHP-Code:
<script type="text/javascript">
ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}


jQuery(document).ready(function($) {
    ShoutBox.showShouts();
    $(".sb_smilie").on("click", function() {
        $("#shout_data").focus();
        var smiley = $(this).attr("alt");
        $("#shout_data").replaceSelectedText(smiley " ");
        $("#shout_data").focus();

    });
   
});
</
script

ich habe schon ne weile probiert. wie schaffe ich es diese beiden segemente auszulagern in den ordner jscripts. jquery und darüberliegenden code in jeweils eine js-datei gepackt. funktioniert, aber dann wird ein missing argument bemängelt. da ich hier nicht weiter weiss, frag ich halt. danke
Der Teil mit den PHP-Variablen wird sich kaum auslagern lassen.
also der obere teil? mach ich dies nicht, dann meckert der validator bzw. die konsole wegen dem script? gibt es da noch eine lösung? den code iwie verpacken?

- habe jetzt den jquery teil in eine js-datei gepackt
- oberen teil in die headerinclude

Code:
<script type="text/javascript">
//<![CDATA[<!--var ShoutBox.refreshInterval = "{$mybb->settings[sf_sb_refresh_interval]}";var ShoutBox.MaxEntries = "{$mybb->settings[sf_sb_shouts_main]}";var ShoutBox.lang = "['{$lang->sf_sb_posting}', '{$lang->sf_sb_shoutnow}', '{$lang->sf_sb_loading}', '{$lang->sf_sb_flood_check}', "{$lang->sf_sb_no_perform}"]";// -->//]]></script>

dann sagt mir die konsole folgendes:

SyntaxError: missing ; before statement index.php:52:12 ---> var ShoutBox.refreshInterval = "7";
SyntaxError: expected expression, got ')'
Du kannst Javascript in einen HTML-Kommentar packen: http://stackoverflow.com/questions/15138...80#1513880
geht nicht....
so hab jetzt einige zeit probiert, evtl. kann mir da jemand helfen, weil ist doof, ausgerechnet auf der startseite nicht valide zu sein. danke!
Ohne zu wissen was du probiert hast und welches Problem auftritt, kann ich leider kaum konkret helfen.
anfang:

PHP-Code:
<tr>
 <td class="trow1"><div id="shoutbox_data" style="height: {$mybb->settings[sf_sb_height]}px; overflow:hidden;">{$lang->sf_sb_loading}</div></td>
</
tr>
<
tr>
 <td class="trow1" align="left">EingabeMax42 Zeichen<form onsubmit="ShoutBox.postShout(); jQuery('#shout_data').val(''); return false;" action="index.php"><input type="text" style="font-size:1.2em;" id="shout_data" size="25" maxlength="42"/><input type="submit" name="" value="Los" id="shouting-status" /></form></td>
</
tr>
<
script type="text/javascript">
//<![CDATA
[ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}
jQuery(document).ready(function($) {    ShoutBox.showShouts(); 
$(".sb_smilie").on("click", function() {        
$("#shout_data").focus();
var 
smiley = $(this).attr("alt");        
$("#shout_data").replaceSelectedText(smiley " "); 
$("#shout_data").focus();
    });
});
//]]>
</script

dies in eine js-datei gepackt und in der headerinclude geladen:

PHP-Code:
//<![CDATA[
ShoutBox.refreshInterval = {$mybb->settings[sf_sb_refresh_interval]};
ShoutBox.MaxEntries = {$mybb->settings[sf_sb_shouts_main]};
ShoutBox.lang = ['{$lang->sf_sb_posting}''{$lang->sf_sb_shoutnow}''{$lang->sf_sb_loading}''{$lang->sf_sb_flood_check}'"{$lang->sf_sb_no_perform}"];
{
$extra_js}
jQuery(document).ready(function($) {
    
ShoutBox.showShouts();
    $(
".sb_smilie").on("click", function() {
        $(
"#shout_data").focus();
        var 
smiley = $(this).attr("alt");
        $(
"#shout_data").replaceSelectedText(smiley " ");
        $(
"#shout_data").focus();

    });    
});
//]]> 

soweit funktioniert es auch, aber:

siehe anhang 1

dann shout, eingabe

siehe anhang 2

dann refresh der seite, siehe anhang 1

dann hab ich versucht jquery und die variablen in den verschiedensten variationen in zwei js-dateien zu packen, hab ich nicht hinbekommen.
Wenn du bei
Code:
//<![CDATA[
zwischen drin einen Zeilenumbruch einfügst, wundert es mich nicht, dass damit der Code nicht mehr funktioniert.

Ob noch mehr Fehler drin sind, kann ich auf den ersten Blick nicht erkennen. Alles in einer Zeile ist auch mühsam zu lesen... Wink
obiges zur lesbarkeit optimiert.... wie zeilenumbruch?
Das ergibt doch so überhaupt keinen Sinn!? Jetzt hast du den gleichen Code einmal im Templates und einmal in einer Javascript-Datei (obwohl schon gesagt wurde, dass da PHP-Variablen drin sind und noch dazu mit CDATA).

So kann ich dir beim besten Willen nicht helfen. Sad
Seiten: 1 2