我需要能够将一些 PHP 插入到外部 .js 文件中。这可能吗?我已经使用基本滑块创建了一个滑块,并且需要将页面标题作为滑块顶部的标记。
这是 .js 文件当前用于生成标记的代码。
var slidenum = key + 1,
var marker = $('<li><a href="#">'+ slidenum +'</a></li>');
我需要用 WordPress 函数“get_title”替换“+ slidenum +”。这个可以用php代替吗?
我需要能够将一些 PHP 插入到外部 .js 文件中。这可能吗?我已经使用基本滑块创建了一个滑块,并且需要将页面标题作为滑块顶部的标记。
这是 .js 文件当前用于生成标记的代码。
var slidenum = key + 1,
var marker = $('<li><a href="#">'+ slidenum +'</a></li>');
我需要用 WordPress 函数“get_title”替换“+ slidenum +”。这个可以用php代替吗?
您可以在 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 部分
有些人试图告诉您为此使用 Ajax。在这种情况下,这不是解决方案。该变量在页面加载的生命周期内是静态的,因此需要继续返回服务器以获取该值。
其他人建议将服务器设置为将 JS 文件解析为 PHP,以便您可以将 PHP 代码嵌入其中。这也不是一个好的答案,因为您将失去所有浏览器缓存 JS 文件的能力,这会降低您的网站速度并增加您的带宽成本。
解决方案是简单地在页面标题中添加一个单独的 JS 代码块——即<script>
在页面模板中添加一个小标签,设置有问题的变量。
然后,该变量将可以在您在页面其他位置运行的任何 JS 代码中作为全局变量访问。
是的,您可以用 get_title 替换 slidenum。不,您不能使用 javascript 或在运行时执行此操作。为此,您需要使用 AJAX。
不是直接的。你可以跳过几个圈来完成它。
问题是 .js 根本不会被 PHP 解释。
因此,如果必须,您可以使用 mod_rewrite 等来假装您的 php 脚本实际上是一个 .js。
或者将 js 文件从 PHP 完全写入文件系统。
或者使用 XHR (Ajax) 来获取某个值。
另一个解决方案,不是最好的恕我直言,是告诉 Apache 将 js 文件解析为 php 文件。只需将其放在您的 .htaccess 文件中:
AddType application/x-httpd-php .js
AddHandler x-httpd-php5 .js
<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>