传递一个复杂的PHP变量,由外部.js文件写入

时间:2012-05-17 23:07:24

标签: php javascript wordpress fancybox nextgen-gallery

大家好!

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

前言

  1. 我正在使用一个名为NextGen Gallery的插件,这个插件支持我的投资组合。我的所有客户都有自己的画廊,我在投资组合网站上展示。
  2. 我还安装了一个名为Fancybox for Wordpress的插件。这个插件可以让我所有客户都能看到漂亮的灯箱。
  3. 我有一个名为Custom Fields for NextGen Gallery的第三个插件,这个插件允许我添加特定于每个图库和图像的自定义字段。您将看到我已经通过自定义字段插件添加的链接创建自定义缩略图。
  4. 所有这一切都说明了我的目标是利用自定义字段插件,添加特定于每张幻灯片的html丰富的描述文本和html富客户端标题文本。幻灯片的顶部读取客户端名称,幻灯片下方读取带有链接的说明。我已经取得了一些进展,但这里是我被困的地方......

    问题:

    jquery.fancybox.js不会接受由“NextGen Custom Fields”插件生成的PHP变量,因为它是在一个名为gallery-popportfolio.php(NGG的模板文件)的文件中编写的。我对此进行了广泛的测试并得到了相同的结果。添加了一些简单的代码:

    在gallery-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(clientname):

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

    现在让我觉得非常有趣的是,如果我将$ clientname设置为像文本行一样静态的东西,那就是在gallery-popportfolio.php中。 .js文件将接受变量并将其准确放置在我需要的位置。问题是当我将这个动态字符串应用于$ clientname变量时,它根本不呈现任何内容。除此之外,当我用PHP文件中的复杂变量回显$ clientname时,我得到了正确的结果。

    问题:

    我很难过,我似乎很近但没有得到正确的结果。

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

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

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

    备注:

    我正在关注此主题以达到我现在所处的位置:StackOverflow Thread

    我的投资组合网站位于:EoghanMcInerney.com

    提前感谢您的帮助!非常感谢!

1 个答案:

答案 0 :(得分:2)

如果你的意思是“不是一个字符串”的复杂变量,对于$ clientname,那么你的代码将不起作用。

在这行代码中:

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

$clientname应该是不带'字符的字符串。我建议你将上面的代码更改为

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

当你追加时,你应该从clientname构造一个字符串并追加它。