1

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

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

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

我需要用 WordPress 函数“get_title”替换“+ slidenum +”。这个可以用php代替吗?

4

5 回答 5

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

于 2012-10-08T10:58:08.260 回答
1

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

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

解决方案是简单地在页面标题中添加一个单独的 JS 代码块——即<script>在页面模板中添加一个小标签,设置有问题的变量。

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

于 2012-10-08T11:24:11.060 回答
0

是的,您可以用 get_title 替换 slidenum。不,您不能使用 javascript 或在运行时执行此操作。为此,您需要使用 AJAX。

于 2012-10-08T10:57:37.983 回答
0

不是直接的。你可以跳过几个圈来完成它。

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

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

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

或者使用 XHR (Ajax) 来获取某个值。

于 2012-10-08T10:58:37.083 回答
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>
于 2012-10-08T11:05:25.643 回答