1

PHP を外部の .js ファイルに挿入できるようにする必要があります。これは可能ですか?基本的なスライダーを使用してスライダーを作成しましたが、スライダーの上部にページ タイトルをマーカーとして配置する必要があります。

これは、.js ファイルが現在マーカーを生成するために使用するコードです。

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

「+ slidenum +」を WordPress 関数「get_title」に置き換える必要があります。これをphpに置き換えることはできますか?

4

5 に答える 5

1

これには Ajax を使用するようにと言う人もいます。この場合、それは解決策ではありません。変数は、ページが読み込まれている間は静的であるため、サーバーに戻って値を取得し続ける必要があります。

PHPコードを埋め込むことができるように、JSファイルをPHPとして解析するようにサーバーを設定することを提案する人もいます。これも適切な答えではありません。JS ファイルをキャッシュするブラウザの機能がすべて失われ、サイトの速度が低下し、帯域幅のコストが増加するからです。

解決策は、JS コードの個別の単一チャンクをページ ヘッダーに追加することです。つまり<script>、ページ テンプレートに小さなタグを追加して、問題の変数を設定します。

この変数は、ページの他の場所で実行する任意の JS コードでグローバルとしてアクセスできます。

于 2012-10-08T11:24:11.060 に答える
1

PHP ファイルで JS 変数を定義し、それらの変数を外部 js で使用できます。

たとえば、PHP ファイルの 1 つで、次のように追加できます。

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

そしてあなたの質問のために:

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

the_title() リファレンス: http://codex.wordpress.org/Function_Reference/the_title

更新 - ループ:

<?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>

ループが終了したら、javascript 部分を追加します

于 2012-10-08T10:58:08.260 に答える
0

直接ではありません。いくつかのフープを飛び越えて、それを成し遂げることができます。

問題は、.js が PHP によってまったく解釈されないことです。

したがって、必要に応じて、mod_rewrite などを使用して、php スクリプトが実際には .js であると偽ることができます。

または、js ファイルを PHP からファイルシステムに完全に書き込みます。

または、XHR (Ajax) を使用して特定の値をフェッチします。

于 2012-10-08T10:58:37.083 に答える
0

はい、slidenum を get_title に置き換えることができます。いいえ、JavaScript や実行時にこれを行うことはできません。そのためには AJAX を使用する必要があります。

于 2012-10-08T10:57:37.983 に答える
0

最高のIMHOではない別の解決策は、Apacheにjsファイルをphpファイルとして解析するように指示することです。これを .htaccess ファイルに入れるだけです。

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

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>
于 2012-10-08T11:05:25.643 に答える