将PHP插入外部.js文件

时间:2012-10-08 10:53:04

标签: php javascript wordpress

我需要能够将一些PHP插入到外部.js文件中。这可能吗?我使用基本滑块创建了一个滑块,并且需要将页面标题作为标记位于滑块的顶部。

这是.js文件用于生成当前标记的代码。

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

我需要用WordPress函数'get_title'替换'+ slidenum +'。这可以用PHP替换吗?

5 个答案:

答案 0 :(得分:1)

您可以在php文件中定义JS变量,然后在外部js中使用这些变量。

例如,在您的一个PHP文件中,您可以添加:

<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部分

答案 1 :(得分:1)

有些人试图告诉你使用Ajax。在这种情况下,这不是解决方案。该变量在页面加载的生命周期内是静态的,因此需要继续返回服务器以获取值。

其他人建议将服务器设置为将PHP文件解析为PHP,以便可以将PHP代码嵌入其中。这也不是一个好的答案,因为您将失去所有浏览器缓存JS文件的能力,这会降低您的网站速度并增加带宽成本。

解决方案只是将单个JS代码块添加到页面标题中 - 即在页面模板中添加一个小<script>标记,设置相关变量。

然后,您可以在页面中其他位置运行的任何JS代码中将该变量作为全局访问。

答案 2 :(得分:0)

是的,你可以用get_title替换slidenum。 不,你不能用javascript或运行时这样做。你需要使用AJAX。

答案 3 :(得分:0)

不直接。你可以通过一些箍来完成它。

问题是.js根本不会被PHP解释。

所以,如果你必须,你可以使用mod_rewrite等来假装你的php脚本实际上是一个.js。

或者将PHP中的js文件完全写入文件系统。

或者使用XHR(Ajax)获取特定值。

答案 4 :(得分:0)

另一种解决方案,不是最好的恕我直言,是告诉Apache将js文件解析为php文件。只需将它放在.htaccess文件中:

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

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>