Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как вставить php в js ? (https://javascript.ru/forum/dom-window/69058-kak-vstavit-php-v-js.html)

Igorsrt 27.05.2017 11:27

Как вставить php в js ?
 
Здравствуйте!
Ситуация следующая: есть файл jquery.prettyPhoto.js, и в этом файле находится html структура всплывающего окна:
markup: '<div class="pp_pic_holder"> \
						<div class="ppt">&nbsp;</div> \
						<div class="pp_top"> \
							<div class="pp_left"></div> \
							<div class="pp_middle"></div> \
							<div class="pp_right"></div> \
						</div> \
						<div class="pp_content_container"> \
							<div class="pp_left"> \
							<div class="pp_right"> \
								<div class="pp_content"> \
									<div class="pp_loaderIcon"></div> \
									<div class="pp_fade"> \
										<a href="#" class="pp_expand" title="Expand the image">Expand</a> \
										<div class="pp_hoverContainer"> \
											<a class="pp_next" href="#">next</a> \
											<a class="pp_previous" href="#">previous</a> \
										</div> \
										<div id="pp_full_res"></div> \
										<div class="pp_details"> \
											<div class="pp_nav"> \
												<a href="#" class="pp_arrow_previous">Previous</a> \
												<p class="currentTextHolder">0/0</p> \
												<a href="#" class="pp_arrow_next">Next</a> \
											</div> \
											<p class="pp_description"></p> \
											<div class="pp_social">{pp_social}</div> \
											<a class="pp_close" href="#">Close</a> \
										</div> \
									</div> \
								</div> \
							</div> \
							</div> \
						</div> \
						<div class="pp_bottom"> \
							<div class="pp_left"></div> \
							<div class="pp_middle"></div> \
							<div class="pp_right"></div> \
						</div> \
					</div> \
					<div class="pp_overlay"></div>',

Проблема в том что мне нужно, вставить в эту структуру еще одну кнопочку из другого плагина, которая должны вызываться через php
<div><?php if(function_exists('wp_ulike')) wp_ulike('get'); ?></div>


Как быть?

laimas 27.05.2017 23:28

Через РНР на клиенте ничего не вызывается. Если эту кнопку нужно вывести по условию на сервере, значит jquery.prettyPhoto.js должен формировать и отдавать клиенте интерпретатор.

Igorsrt 28.05.2017 11:08

смотрите, если бы верстка всплывающего окна была в обычном php файле я бы просто туда добавил код в нужное место:
<?php if(function_exists('wp_ulike')) wp_ulike('get'); ?>
и у меня бы эта кнопка вызывалась... а в js файл я php добавить не могу (или не умею)...
В приведенном выше js коде есть строчка которая вызывает "родные" кнопки без использования php
<div class="pp_social">{pp_social}</div> \

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

laimas 28.05.2017 12:14

Кнопки соцсетей а данном плагине определяются конфигурацией. Если вам нужно добавить к этим кнопкам свою, которая определяется неким условием на сервере, то кроме сервера ее никто в код не добавит. Запрашивать .js файл при этом совсем не обязательно как

<script src=".....jquery.prettyPhoto.js"></script>

это может быть запрос к php-файлу, который отдаст серверу данный скрипт, добавив в него кнопку:

<script src=".....name.php"></script>

где:

header('Content-type: text/javascript');
$pp_social = условие ? 'html-код кнопки' : '';
include '.....jquery.prettyPhoto.js';
//и в этом файле в нужном месте
<?=$pp_social?>

Igorsrt 29.05.2017 15:44

А как мне это практически реализовать?
вот есть у меня в файле jquery.prettyPhoto.js такая строчка:
if(settings.social_tools){
				facebook_like_link = settings.social_tools.replace('{location_href}', encodeURIComponent(location.href)); 
				$pp_pic_holder.find('.pp_social').html(facebook_like_link);
			}

..если я меняю html(facebook_like_link) на html('12345678') то у меня в лайтбоксе отображается 12345678.. а что мне нужно вставить что бы отобразился результат действия php
<?php if(function_exists('wp_ulike')) wp_ulike('get'); ?>

Извиняюсь, что так неграмотно все объясняю и спрашиваю... но очень надо - третий день уже ничего не могу сделать ((

laimas 29.05.2017 15:52

Ну я же писал как. Заменить в моем примере строку 2 на

$pp_social = function_exists('wp_ulike') ? wp_ulike('get') : null';


А вывод (в примере строка), перенести в файл js (строка 3)

$pp_pic_holder.find('.pp_social').html(	<?=$pp_social?>);


Но это будет неправильно - facebook_like_link, это все определенные в плагине соц. кнопки. А надо html-код своей кнопки добавить к html-коду определенных.

Igorsrt 29.05.2017 16:16

Цитата:

Сообщение от laimas (Сообщение 453783)
Ну я же писал как. Заменить в моем примере строку 2 на

$pp_social = function_exists('wp_ulike') ? wp_ulike('get') : null';


А вывод (в примере строка), перенести в файл js (строка 3)

$pp_pic_holder.find('.pp_social').html(	<?=$pp_social?>);


Но это будет неправильно - facebook_like_link, это все определенные в плагине соц. кнопки. А надо html-код своей кнопки добавить к html-коду определенных.

А разве я могу в файл js php-код вставлять

Igorsrt 29.05.2017 16:17

что-то пока не получается... ((
а разве можно в js файл php-код вставлять?
<?=$pp_social?>

laimas 29.05.2017 16:31

Цитата:

Сообщение от Igorsrt
а разве можно в js файл php-код вставлять?

Конечно, только в данном случае, это вставка РНР кода не в js-файл, а в вывод - include 'path/jquery.prettyPhoto.js'; поместит файл в поток, парсер его обработает и выполнит в нем РНР код.

Цитата:

Сообщение от Igorsrt
что-то пока не получается

Вставку не в этом месте делать надо, а там где описывается html-код кнопок. Кроме этого, в css файлах (а их несколько, так как в плагине можно менять темы) описать и стиль добавляемой кнопки.

Igorsrt 29.05.2017 21:36

самое обидное, что там на самом деле все наверное достаточно просто - если я в медиафайлах (cms wordpress) вставляю в title вместо текста шорт-код плагина Ulike [wp_ulike] (насколько я понимаю, это тоже самое что и просто вызов php функции плагина, только для используется в самом тексте) - то у меня эта кнопка появляется вместо названия (правда только при просмотре единичных изображений, в галерее отображается текстом [wp_ulike])... т.е. получается, что проблема в том, что я не могу правильно задать переменную $pp_social где-то в php файлах, что бы js понял ее как html-код и отобразил в окне? ((


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