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

K1ndly 07.02.2017 18:31

Большое спасибо, вы все подробно описали!

Я спрашивал вот за что:

Где то же есть переменная $s которой присваивается значение со вставкой php-переменных.

Там же сейчас как-то выводится "Описание это фотографии" как мне найти ее и добавить туда еще одну php переменную.

laimas 07.02.2017 18:53

Цитата:

Сообщение от K1ndly
Где то же есть переменная $s которой присваивается значение со вставкой php-переменных.

Где, и почему именно $s? Поэтому?

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

Так это разве РНР? Из кода представленного РНР код упоминается только раз

<?php echo $image->description ?>

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

K1ndly 07.02.2017 21:21

=)) Я извиняюсь

Я просто не помогу понять раз +s+ это свойство объекта, то как по факту на странице на его месте выводится описание фотографии?

В php это же описании фото выглядит так <?php echo $image->description ?>

Как мне найти этот объект и посмотреть его свойства?

Вы не могли бы мне завтра с этим помочь, я готов заплатить =)

Может я покажу Вам все в скайпе

K1ndly 07.02.2017 21:24

Я понял что по идеи и я могу выводить в том месте другие свойства типа "+n+" пример. Но как узнать эти свойства и если нет нужных мне проблематично их будет создать?

laimas 08.02.2017 05:30

Цитата:

Сообщение от K1ndly
Я просто не помогу понять раз +s+ это свойство объекта, то как по факту на странице на его месте выводится описание фотографии?

Вот какими словами еще можно пояснять? :lol:

Если есть сайт свой, копошимся в нем всегда с целью дополнений/изменений, то все это делается и отлаживается на локальном сервере, и если серверный язык это РНР, то советую установить себе 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, кто его и где порождает, будет видно что в нем есть.

Цитата:

Сообщение от K1ndly
Вы не могли бы мне завтра с этим помочь, я готов заплатить

Можно, но обязательно завтра, этого я гарантировать не могу на данный момент. )

K1ndly 08.02.2017 10:50

Спасибо что помогаете мне, если у Вас есть возможность давайте я покажу Вам все.


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