Передача сложной переменной PHP для записи во внешний файл.js
Всем привет!
Это мой первый пост на stackru. После нескольких часов поисков и испытаний Stackru исправлял множество возможных исправлений: я решил, что пришло время задать вопрос самому. Я создаю веб-сайт на основе Wordpress для моей собственной работы по веб-дизайну. До сих пор я проделал обширную настройку, и теперь я нахожусь на последнем этапе. Также обратите внимание, что я не ожидаю прямой поддержки плагинов, но я процитирую используемые плагины, чтобы они могли потенциально помочь.
Предисловие:
- Я использую плагин под названием NextGen Gallery, этот плагин поддерживает мое портфолио. У всех моих клиентов есть собственная галерея, которую я показываю на сайте портфолио.
- Я также установил плагин под названием Fancybox для Wordpress. Этот плагин позволяет отображать лайтбокс всех моих клиентов.
- У меня есть третий плагин под названием Custom Fields для NextGen Gallery, этот плагин позволяет мне добавлять настраиваемые поля, специфичные для каждой галереи и изображения внутри. Вы увидите, что я уже использовал это, создавая собственные эскизы по ссылке, добавленной через плагин Custom Fields.
Все, что было сказано, моя цель состояла в том, чтобы, используя плагин настраиваемых полей, добавить html rich text description и html rich Client заголовка текста, специфичного для каждого слайда. В верхней части слайда указано имя Клиента, а под слайдом - описание со ссылками. Я добился определенного прогресса, но вот где я застрял...
Проблема:
jquery.fancybox.js не будет принимать мою переменную PHP, сгенерированную плагином "NextGen Custom Fields", поскольку она записана в файле с именем 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)
Теперь, что делает это довольно интересным для меня, так это то, что в файле gallery-popportfolio.php, если я назначу $clientname как нечто статическое, например строку текста. Файл.js затем примет переменную и разместит ее именно там, где мне нужно. Проблема в том, что когда я применяю эту динамическую строку к переменной $clientname, она просто ничего не отображает. Кроме того, когда я отображаю $clientname со сложной переменной в файле PHP, я получаю правильный результат.
Вопрос:
Я в замешательстве, я выглядел так близко, но никакого правильного результата.
Я пропускаю шаг, чтобы внешний файл.js принял более сложную переменную php?
Возможно ли мне просто переместить PHP-код, который я написал в другом месте?
Каков мой следующий лучший шаг?
ЗАМЕТКИ:
Я следовал этой теме, чтобы достичь того, где я сейчас нахожусь: Тема Stackru
Сайт моего рабочего портфолио: EoghanMcInerney.com
Заранее благодарю за любую помощь! Очень признателен!
1 ответ
Если вы имеете в виду "не строка" под сложной переменной, для $clientname, тогда ваш код не будет работать.
В этой строке кода:
<script type="text/javascript"> var clientname = '<?= $clientname ?>'; </script>
$clientname
должна быть строка без '
персонаж. Я предлагаю вам изменить код выше
<script type="text/javascript"> var clientname = <?= json_encode($clientname) ?>; </script>
И когда вы добавляете, вы должны построить строку из clientname
и добавить это.