Запустить PHP функцию в JS
Здравствуйте, мне нужна ваша помощь.
У меня WordPress с плагином NextGEN Gallery Мне нужно Вывести в LightBox функции с этого же плагина которая выводит название и метотег. Функция такого вида <?php echo $image->description ?> Я нашел файл JS этого лайт бокса и место где должна выводится эта функция, но как заставить ее работать в JS? На скрине в месте вывода стоит "1" Сейчас в месте где мне нужно вывести эти данные стоит +s+ И выводится описание фотографии. Я не понимаю как +s+ выводит это описания, и что это вообще. <div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>": |
Цитата:
Цитата:
Цитата:
|
Спасибо, но вы можете мне подскакать куда копать как мне разобраться с объектами на сервере? Или может есть другая возможность выводить в этом лайт боксе PHP?
|
Если бы я был фанатиком WordPress или бы помнил наизусть все методы всех CMS и плагинов, с которыми работал, то я бы сказал не только где "копать", но и какой "лопатой".
Разбирайтесь с кодом плагина, судя по запросу это его объект. Разбирайтесь что есть description, свойство объекта или может быть метод? |
Я вас понял :) Если бы я понимал как разобрать и что потом делать =-)
Буду читать тогда что такое свойство объекты и что такое методы =) |
class Foo { public $my = 'Property'; //это свойство класса, причем публичное! } class Bar { public function my() { //это метод класса return 'Method'; } } $foo = new Foo(); echo $foo->my; //обращение к свойству $bar = new Bar(); echo $bar->my(); //обращение к методу Но, если обратиться к свойству как методу - $foo->my(), то получим исключение, а если обратиться к методу как свойству - $bar->my, то получим null. У вас же получаем 1. Значит открываем код плагина и методично разбираемся что это, что должно возвращать и т.д., и т.п. |
Нет в данном случае это просто пример, там выводится Описание фотографии, а я хочу выводить там по мимо описания название и еще один мето-тег. Как выводится описание, можно ли аналогии выводить так же название? И что значит +s+
|
Цитата:
var s = '<div id="fancybox-title-'+d.titlePosition+'">'+s+'</div>' //вставлены d.titlePosition и s В РНР конкатенация строк с переменными через . $s = '<div id="fancybox-title-' . $var . '">' . $var . '</div>' или непосредственно в вывод <div id="fancybox-title-<?=$var?>"><?=$var?></div> где <?= краткая запись конструкции <?php echo Цитата:
|
Стоп получается если я найду $s.
Я смогу туда добавить нужные мне записи для вывода? $s = '<div id="fancybox-title-' . $var . '">' . $var . '</div>' Но в JS есть еще такя строка <td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td> Здесь тоже есть +s+ но описании фотографии же не выводится. |
Цитата:
А <td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td>, это строковое некой js-переменной со вставкой также js-переменной. В РНР строки соединяются посредством оператора точка, а в JS плюс, или не понятно написано? Нет и не может быть в JS переменных РНР, как и не может быть обратного. Можно только передать на другую сторону значение переменной, присвоив его на другой стороне некой переменной. Если нужно, чтобы js-переменная s на клиента получила значение определяемое РНР, то нужно либо запросить асинхронно у сервера это значение, либо при выводе определить. Например, в выводе <script> var s = <?=$var_php?>; </script> //или если конструкция echo echo '<script> var s = ' . $var_php . '; </script>'; |
Большое спасибо, вы все подробно описали!
Я спрашивал вот за что: Где то же есть переменная $s которой присваивается значение со вставкой php-переменных. Там же сейчас как-то выводится "Описание это фотографии" как мне найти ее и добавить туда еще одну php переменную. |
Цитата:
<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>" Так это разве РНР? Из кода представленного РНР код упоминается только раз <?php echo $image->description ?> И это не переменная, а свойство объекта, сколько раз можно говорит одно и тоже? Если этот объект имеет и другие свойства, и нужные вам, ну так изучайте код. Вы думаете кто-то тут угадает что у вас там есть? ) |
=)) Я извиняюсь
Я просто не помогу понять раз +s+ это свойство объекта, то как по факту на странице на его месте выводится описание фотографии? В php это же описании фото выглядит так <?php echo $image->description ?> Как мне найти этот объект и посмотреть его свойства? Вы не могли бы мне завтра с этим помочь, я готов заплатить =) Может я покажу Вам все в скайпе |
Я понял что по идеи и я могу выводить в том месте другие свойства типа "+n+" пример. Но как узнать эти свойства и если нет нужных мне проблематично их будет создать?
|
Цитата:
Если есть сайт свой, копошимся в нем всегда с целью дополнений/изменений, то все это делается и отлаживается на локальном сервере, и если серверный язык это РНР, то советую установить себе Open Server. Установив его (в настройках сервера в модулях нужно выбрать РНР не ниже версии 5.4) создайте в нем какой либо виртуальный домен, в индексную страницу которого поместите этот код: <?php //это имитация работы некого класса //возвращающего свойства $object = (object)[ 'prop_1' => 'ABC', 'prop_2' => 'DEF' ]; ?> <html> <body> <div id="prop"></div> <script> //здесь через переменные JS //передаем на клиента свойства объекта $object var a = "<?=$object->prop_1?>", b = "<?=$object->prop_2?>"; //далее JS использует переменные document.getElementById('prop').innerHTML = '<span>'+a+'</span><span>'+b+'</span>'; </script> </body> </html> Запускаем, смотрим. Что будет, если в объявления js-переменных добавить еще строку: с = "<?=$object->prop_3?>" А ничего не будет, ибо РНР объект $object не имеет свойства prop_3. Само по себе это свойство в него не добавится, и чтобы что-то было, кроме объявления js-переменной, нужно описать свойство и в объекте: $object = (object)[ 'prop_1' => 'ABC', 'prop_2' => 'DEF', 'prop_3' => 'GHI' ]; У вас объект $image, что это, класс ли, возвращаемый ли объект работы чего-то, того же запроса к базе например, я не знаю. Но если $image->description это свойство возвращающее описание фото, а свойства описывающего к примеру размер фото у объекта нет, то сколько бы вы не писали $image->size, результата не будет. Ищите в коде что есть такое $image, кто его и где порождает, будет видно что в нем есть. Цитата:
|
Спасибо что помогаете мне, если у Вас есть возможность давайте я покажу Вам все.
|
Часовой пояс GMT +3, время: 01:42. |