2012-05-17 57 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