Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Запустить PHP функцию в JS (https://javascript.ru/forum/css-html/67223-zapustit-php-funkciyu-v-js.html)

K1ndly 04.02.2017 14:30

Запустить PHP функцию в JS
 
Здравствуйте, мне нужна ваша помощь.

У меня WordPress с плагином NextGEN Gallery

Мне нужно Вывести в LightBox функции с этого же плагина которая выводит название и метотег.

Функция такого вида <?php echo $image->description ?>

Я нашел файл JS этого лайт бокса и место где должна выводится эта функция, но как заставить ее работать в JS?



На скрине в месте вывода стоит "1"

Сейчас в месте где мне нужно вывести эти данные стоит +s+

И выводится описание фотографии. Я не понимаю как +s+ выводит это описания, и что это вообще.

<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":

laimas 04.02.2017 14:58

Цитата:

Сообщение от K1ndly
Функция такого вида <?php echo $image->description ?>

Это не функция, а конструкция языка, которая выводит свойство объекта.

Цитата:

Сообщение от K1ndly
Я нашел файл JS этого лайт бокса и место где должна выводится эта функция, но как заставить ее работать в JS?

Запустить РНР функцию на клиенте естественно нельзя.

Цитата:

Сообщение от K1ndly
На скрине в месте вывода стоит "1"

Разбирайтесь с объектом на сервере, либо должно запрашиваться не свойство, а метод, либо иные причины.

K1ndly 04.02.2017 15:27

Спасибо, но вы можете мне подскакать куда копать как мне разобраться с объектами на сервере? Или может есть другая возможность выводить в этом лайт боксе PHP?

laimas 04.02.2017 15:42

Если бы я был фанатиком WordPress или бы помнил наизусть все методы всех CMS и плагинов, с которыми работал, то я бы сказал не только где "копать", но и какой "лопатой".

Разбирайтесь с кодом плагина, судя по запросу это его объект. Разбирайтесь что есть description, свойство объекта или может быть метод?

K1ndly 04.02.2017 15:52

Я вас понял :) Если бы я понимал как разобрать и что потом делать =-)

Буду читать тогда что такое свойство объекты и что такое методы =)

laimas 04.02.2017 16:09

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. Значит открываем код плагина и методично разбираемся что это, что должно возвращать и т.д., и т.п.

K1ndly 04.02.2017 16:20

Нет в данном случае это просто пример, там выводится Описание фотографии, а я хочу выводить там по мимо описания название и еще один мето-тег. Как выводится описание, можно ли аналогии выводить так же название? И что значит +s+

laimas 04.02.2017 16:48

Цитата:

Сообщение от K1ndly
что значит +s+

Это вставка в строковое значение js-переменной:

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

Цитата:

Сообщение от K1ndly
хочу выводить там по мимо описания название и еще один мето-тег

Мета тег. Если его можно получить у объекта/класса, выводите.

K1ndly 04.02.2017 19:11

Стоп получается если я найду $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+ но описании фотографии же не выводится.

laimas 04.02.2017 20:51

Цитата:

Сообщение от K1ndly
если я найду $s

Какую $s? Это $s = '<div id="fancybox-title-' . $var . '">' . $var . '</div>' пример РНР кода, где переменной $s присваивается строковое значение со вставкой php-переменных.

А <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>';


Часовой пояс GMT +3, время: 10:07.