Ich muss in der Lage sein, etwas PHP in eine externe .js-Datei einzufügen. Ist das möglich? Ich habe einen Schieberegler mit dem einfachen Schieberegler erstellt und muss die Seitentitel als Markierungen oben im Schieberegler haben.

Dies ist der Code, den die .js-Datei verwendet, um die aktuellen Markierungen zu generieren.

var slidenum    = key + 1, 
var marker = $('<li><a href="#">'+ slidenum +'</a></li>'); 

Ich muss '+ slidenum +' durch die WordPress-Funktion 'get_title' ersetzen. Kann dies durch PHP ersetzt werden?

1
Josh Pyzer 8 Okt. 2012 im 14:53

5 Antworten

Beste Antwort

Sie können JS-Variablen in Ihren PHP-Dateien definieren und diese Variablen dann in Ihren externen JS verwenden.

In einer Ihrer PHP-Dateien können Sie beispielsweise Folgendes hinzufügen:

<script type="text/javascript">
// variable1 = number
variable1 = <?php echo $var1; ?>;
// variable2 = string
variable2 = "<?php echo $var2; ?>";
</script>

Und für Ihre Frage:

<script type="text/javascript">
slidenum = "<?php the_title(); ?>";
</script>

The_title () Referenz: http://codex.wordpress.org/Function_Reference/the_title

Update - The Loop:

<?php 
$slider_titles = array();
if ( have_posts() ) : while ( have_posts() ) : the_post(); 
  // your codes go here
  $slider_titles[] = get_the_title(); // adds the title to the array  
endwhile; endif;
?>

<script type="text/javascript">
slidenum = <?php echo json_encode($slider_titles); ?>;
</script>

Wenn Ihre Schleife beendet ist, fügen Sie den Javascript-Teil hinzu

1
RRikesh 8 Okt. 2012 im 12:34

Einige Leute versuchen Ihnen zu sagen, dass Sie Ajax dafür verwenden sollen. Das ist in diesem Fall nicht die Lösung. Die Variable ist für die Lebensdauer des Seitenladens statisch. Sie müssen also immer wieder zum Server zurückkehren, um den Wert abzurufen.

Andere schlagen vor, den Server so einzustellen, dass JS-Dateien als PHP analysiert werden, damit Sie PHP-Code in sie einbetten können. Dies ist auch keine gute Antwort, da Sie die Fähigkeit des Browsers verlieren, die JS-Datei zwischenzuspeichern, was Ihre Site verlangsamt und Ihre Bandbreitenkosten erhöht.

Die Lösung besteht einfach darin, Ihrem Seitenkopf einen separaten Teil des JS-Codes hinzuzufügen - dh Ihrer Seitenvorlage ein kleines <script> -Tag hinzuzufügen und die betreffende Variable festzulegen.

Auf die Variable kann dann in jedem JS-Code, den Sie an anderer Stelle auf der Seite ausführen, als global zugegriffen werden.

1
SDC 8 Okt. 2012 im 11:24

Eine andere Lösung, meiner Meinung nach nicht die beste, besteht darin, Apache anzuweisen, js-Dateien als PHP-Dateien zu analysieren. Fügen Sie dies einfach in Ihre .htaccess-Datei ein:

AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
0
m4t1t0 8 Okt. 2012 im 11:05

Ja, Sie können slidenum durch get_title ersetzen. Nein, Sie können dies weder mit Javascript noch zur Laufzeit tun. Dafür müssen Sie AJAX verwenden.

0
konqi 8 Okt. 2012 im 10:57

Nicht direkt. Sie können durch ein paar Reifen springen, um es zu erledigen.

Das Problem ist, dass .js von PHP überhaupt nicht interpretiert wird.

Wenn Sie müssen, können Sie mod_rewrite und dergleichen verwenden, um so zu tun, als wäre Ihr PHP-Skript tatsächlich eine .js.

Oder schreiben Sie die js-Datei von PHP vollständig in das Dateisystem.

Oder verwenden Sie XHR (Ajax), um einen bestimmten Wert abzurufen.

0
Erwin Moller 8 Okt. 2012 im 10:58