2012-05-17 30 views
0

大家好!将一个复杂的PHP变量传递给外部的.js文件

这是我在stackoverflow上的第一篇文章。经过几个小时的搜索和试用之后,StackOverflow出现了很多可能的修复:我决定是时候自己提问了。 我正在构建一个Wordpress驱动的投资组合网站,用于我自己的网页设计工作。到目前为止,我已经做了一些广泛的定制,现在我正处于最后阶段。另外请注意,我不希望直接插件支持,但我会引用正在使用的插件,它可能会有所帮助。

前言:

  1. 我使用了一个名为NextGen的画廊插件,这个插件的力量我的投资组合。我所有的客户都有他们自己的画廊,我将其展示在投资组合网站上。
  2. 我还安装了一个名为Fancybox for Wordpress的插件。这个插件允许所有我的客户看起来很好看的灯箱展示。
  3. 我有一个名为NextGen Gallery的自定义字段的第三个插件,这个插件允许我添加特定于每个图库和图像的自定义字段。您会看到我已通过通过自定义字段插件添加的链接创建自定义缩略图来利用此功能。

之所以这么说,我的目标是,利用插件的自定义字段,添加HTML丰富的描述文本和HTML具体到每张幻灯片的富客户端的标题文字。幻灯片的顶部读取客户名称,在幻灯片下面读取带有链接的说明。我已经取得了一些进展,但这里是我坚持......

问题:

jquery.fancybox.js不会采取通过“NextGen的自定义字段”插件生成我的PHP变量,因为它是写在名为gallery-popportfolio.php的文件中(NGG的模板文件)。我已经对此进行了广泛的测试,结果也一样。一些简单的代码位补充说:

在画廊,popportfolio.php我把这个:

<?php $clientname = nggcf_get_gallery_field($gallery->ID, "clientnamelink"); ?> 
<script type="text/javascript"> var clientname = '<?= $clientname ?>'; </script> 
<script type="text/javascript" src=".../jquery.fancybox.js"></script> 

在jquery.fancybox.js我插入此: (这是一个摘录,我想补充的唯一的事情是.append(客户端名):

append('<div class="fancybox-bg" id="fancybox-bg-n">').append(clientname)

现在是什么使这很有趣的我,是画廊,popportfolio.php内,如果我ASIGN $ CLIENTNAME是静态的东西像一个文本行的。 js文件将比a接受变量并把它放在我需要的地方。问题是,当我将这个动态字符串应用到$ clientname变量时,它只是简单地渲染任何内容。除此之外,当我在PHP文件中使用复杂变量回显$ clientname时,我得到的结果是正确的。

问:

我很为难,我似乎那么近还没有正确的结果。

我是否错过了让外部.js文件接受更复杂的php变量的步骤?

是否有可能我只需要移动我在别处写过的php代码?

我的下一个最佳步骤是什么?

注:

我下面这个线程将达到现在的我:StackOverflow Thread

我的工作组合的网站为:EoghanMcInerney.com

在此先感谢您的帮助!非常感激!

+1

性感的投资组合网站。当然可以使用你的一些项目;) – Menztrual

+0

那么你知道如何找到我;) – EoghanTadhg

回答

2

如果您的意思是复杂变量“not a string”,对于$ clientname,那么您的代码将不起作用。

在这行代码:

<script type="text/javascript"> var clientname = '<?= $clientname ?>'; </script> 

$clientname应该是没有'字符的字符串。我建议你改变上面的代码

<script type="text/javascript"> var clientname = <?= json_encode($clientname) ?>; </script> 

当你追加,你应该从clientname构建一个字符串,并追加一条。

+0

感谢您的回复ilanco, 你将不得不原谅我,我不完全关注。 一旦我将这行代码换出: 如何从客户端名称构造一个字符串并追加它? – EoghanTadhg

+0

所以我现在明白了,我用toString();与结果变量。 完成后显示生成的自定义字段。但它只显示与第一个图库相同的客户端名称,并且不会在整个不同的客户端图库中进行更改。 – EoghanTadhg