2012-05-17 3 views
0

Привет всем!Передача сложной переменной PHP, которая должна быть записана внешним .js-файлом

Это мое первое сообщение о stackoverflow. После нескольких часов поиска и пробной версии StackOverflow подходит к множеству возможных исправлений: я решил, что пришло время самому задать вопрос. Я создаю веб-сайт с портфолио Wordpress для своих собственных работ по веб-дизайну. До сих пор я сделал некоторую обширную настройку, и теперь я нахожусь на последнем этапе. Также обратите внимание, что я не ожидаю прямой поддержки плагинов, но я приведу используемые плагины, чтобы он мог потенциально помочь.

Предисловие:

  1. Я использую плагин под названием NextGen Gallery, этот плагин полномочия мой портфель. У всех моих клиентов есть своя галерея, которую я показываю на сайте портфолио.
  2. Я также установил плагин под названием Fancybox для Wordpress. Этот плагин позволяет хорошо отображать лайтбоксы всех моих клиентов.
  3. У меня есть третий плагин под названием Custom Fields для Gallery NextGen, этот плагин позволяет добавлять пользовательские поля, специфичные для каждой галереи и изображения внутри. Вы увидите, что я уже использовал это, создав пользовательские эскизы через ссылку, добавленную через плагин Custom Fields.

Все, что было сказано, моя цель состояла в том, чтобы использовать плагин пользовательских полей, добавить HTML-текст с подробным описанием html и богатый HTML-текст для каждого слайда. Верх слайда читает имя Клиента и под слайдом читает описание со ссылками. Я сделал некоторые успехи, но здесь, где я застрял ...

Проблема:

jquery.fancybox.js не будет принимать мою переменную PHP, генерируемый плагин «NextGen настраиваемых полей», как написано в файле под названием 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 (ClientName).

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

Теперь то, что делает это очень интересно для меня, это то, что в галерее-popportfolio.php если я Asign $ CLIENTNAME быть что-то статическое как линия текста. js-файл будет чем acc ept переменную и поместите ее точно там, где она мне нужна. Проблема в том, что когда я применяю эту динамическую строку к переменной $ clientname, она просто ничего не делает. Кроме того, когда я эхо $ clientname со сложной переменной в файле PHP, я получаю правильный результат.

Вопрос:

Я озадачен, я, казалось, так близко, пока нет надлежащего результата.

Я пропустил шаг, чтобы внешний .js-файл принял более сложную переменную php?

Возможно ли, что мне просто нужно переместить PHP-код, который я написал в другом месте?

Каков мой следующий лучший шаг?

ПРИМЕЧАНИЕ:

Я следовал этой теме, чтобы достигнуть, где я сейчас: StackOverflow Thread

Моего портфеля сайта рабочего находится по адресу: EoghanMcInerney.com

Заранее спасибо за любую помощь! Очень признателен!

+1

Сексуальный портфолио веб-сайта. Конечно, вы могли бы использовать вас для некоторых проектов;) – Menztrual

+0

Ну, вы знаете, как получить меня от меня;) – EoghanTadhg

ответ

2

Если вы имеете в виду «не строку» сложной переменной, для $ 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