[Решено] Вывод данных в js

  • 34 Ответов
  • 1134 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

[Решено] Вывод данных в js
« : 08.01.2016, 18:22:14 »
Я в js и php не силён, но вот как выводятся данные из XML файла я понял.
Код
<field name="PLG_SMOOTH_SPEED" type="text" extension="plg_system_smooth_scroll_speed" description="PLG_SMOOTH_SPEED_DESC"/>
и в php файл потом добавляем
Код
if( $displayData['params']->get('plg_system_smooth_scroll_speed')!= '' ) {
?> бла бла бла и <?php echo $displayData['params']->get('plg_system_smooth_scroll_speed'); ?> бла бла бла <?php
}
а как мне вывести тоже самое в js файле? именно эту строку
Код
<?php echo $displayData['params']->get('plg_system_smooth_scroll_speed'); ?>
« Последнее редактирование: 11.01.2016, 12:20:58 от deminevgen »

Re: Вывод данных в js
« Ответ #1 : 08.01.2016, 18:44:00 »
Объясняю я плохо! Вообщем есть плагин с js файлом. Он отвечает за плавность скрола по странице, но настройки скорости анимации и шага при скроле менять из админки нельзя. Я уже добавил в XML файл следующее:
Код
<config>
<fields name="params">
<fieldset name="basic">
<field name="PLG_SMOOTH_SPEED" type="text" extension="plg_system_s1" description="PLG_SMOOTH_SPEED_DESC"/>
<field name="PLG_SMOOTH_HEIGHT" type="text" extension="plg_system_h1" description="PLG_SMOOTH_HEIGHT_DESC"/>
</fieldset>
</fields>
</config>
и в файл  ru-RU.plg_system_smooth_scroll.ini следующее :
Код
PLG_SMOOTH_SCROLL="Плагин - плавный скроллинг"
PLG_SMOOTH_SCROLL_DESC="Плагин - плавный скроллинг для Joomla 3.0+"
PLG_SMOOTH_HEIGHT="ВЫСОТА"
PLG_SMOOTH_HEIGHT_DESC="ВЫСОТА ПРОКРУТКИ"
PLG_SMOOTH_SPEED="СКОРОСТЬ"
PLG_SMOOTH_SPEED_DESC="СКОРОСТЬ ПРОКРУТКИ"
Теперь мне надо вместо дефолтных значений в файле jquery.smooth-scroll.min.js
Код
var ssc_framerate = 150;
var ssc_animtime = 500;
var ssc_stepsize = 150;
var ssc_pulseAlgorithm = true;
var ssc_pulseScale = 6;
var ssc_pulseNormalize = 1;
var ssc_keyboardsupport = true;
var ssc_arrowscroll = 50;
var ssc_frame = false;
var ssc_direction = {
  x: 0,
  y: 0
};
выводить значения которые я внесу в админке плагина, как это сделать?

*

Shustry

  • *****
  • 6426
  • [+]736 / [-]3
  • Рисую дизайны
Re: Вывод данных в js
« Ответ #2 : 08.01.2016, 21:15:23 »
Кодируете в JSON и выводите где-нибудь на странице. Можно в качестве произвольного html-атрибута. В JS-скрипте получаете атрибут, раскодируете. Всё просто.
Бесплатно консультирую по дизайну и вёрстке (только в icq и личку сердечно прошу не стучать). Платно делаю дизайн, вёрстку и темплейты для Joomla. Работаю только за деньги. За большие. И долго. Но качественно.
---------------------------------------------------------
xmpp:joomla@conference.jabber.ru - наша конфа!

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #3 : 08.01.2016, 21:26:24 »
на сколько я понимаю, есть альтернативный путь - вызывать конфигурацию в php

вот на примере галереи
Код
$doc->addScriptDeclaration('      jQuery(document).ready(function() {jQuery("a[rel^=\"prettyPhoto\"]").prettyPhoto({'.ltrim($ppparams,",").'})}); //v.4.315');

т.е. если сама инициализация - небольшая, то берем всю статичную часть и помещаем в строковую переменную

$my_script="тут блок с самого начала скрипта и со всеми статичными параметрами".тут_выводим_переменные."тут конец скрипта";

и выводим
Код
$doc->addScriptDeclaration($my_script);

Re: Вывод данных в js
« Ответ #4 : 08.01.2016, 21:36:21 »
на сколько я понимаю, есть альтернативный путь - вызывать конфигурацию в php

вот на примере галереи
Код
$doc->addScriptDeclaration('      jQuery(document).ready(function() {jQuery("a[rel^=\"prettyPhoto\"]").prettyPhoto({'.ltrim($ppparams,",").'})}); //v.4.315');


Тоесть не используя сторонний файл js , просто помещаем сам скрипт в php и с помощью
Код
<?php echo $displayData['params']->get('plg_system_smooth_scroll_speed'); ?>
выводим значения из админки? так я понимаю вас?
Спойлер
[свернуть]

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #5 : 08.01.2016, 21:37:53 »
да, я дописал в сообщении
на самом деле, можно совмещать.

обычно скрипт идет в 2-х частях:
обработчик + инициализация.

инициализация запускается по событию (document).ready и там как раз все переменные выставляются.
вот эту часть выносим в php, а весь остальной код можно цеплять стандартно через js файл

Re: Вывод данных в js
« Ответ #6 : 08.01.2016, 21:56:14 »
Скрипт работает, когда я его помещаю в php, но вот когда я делаю вот так var ssc_stepsize = <?php echo $displayData['params']->get('plg_system_nnframework'); ?>;   вместо числа то выдает
Parse error: syntax error, unexpected 'params' (T_STRING) in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 284

предварительно вписав вот так ещё строку : if( $displayData['params']->get('lg_system_nnframework')!= '' ) {

PS. Дуб дубом в js и php, на стадии массивов я))))
« Последнее редактирование: 08.01.2016, 22:00:56 от deminevgen »

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #7 : 08.01.2016, 22:10:47 »
омг. зачем это все? ))
вы же в php получаете данные, берете напрямую, без echo

$ssc_stepsize=$displayData['params']->get('plg_system_nnframework');

потом через точку прицепляете параметры к основному скрипту и через точку же цепляете конец.


Re: Вывод данных в js
« Ответ #8 : 08.01.2016, 22:24:07 »
Всё равно вот так вот :
Код
Parse error: syntax error, unexpected 'params' (T_STRING) in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 281

вот все файлы моего плаги :
папка language
script.php :
Спойлер
[свернуть]
файл smooth_scroll.php
Спойлер
[свернуть]
файл query.smooth-scroll.min.js
Спойлер
[свернуть]
и файл XML
Спойлер
[свернуть]
« Последнее редактирование: 08.01.2016, 22:39:49 от deminevgen »

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #9 : 08.01.2016, 22:50:28 »
блин, я так не работаю ))
мне в этих файлах не разобраться в таком режиме.

делается так.
сначала надо добиться, чтобы просто статичный текст добавлялся в блок.

т.е.

Код
$ssc_stepsize="var ssc_stepsize = 150;";

добиваетесь, чтобы эта строка срабатывала, т.е. код собирался правильно.
потом уже добиваетесь, чтобы переменная $ssc_stepsize получала нужный параметр

*

passer

Re: Вывод данных в js
« Ответ #10 : 08.01.2016, 23:05:45 »
Код
Parse error: syntax error, unexpected 'params' (T_STRING) in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 281
Вот интересно, что надо сделать, чтобы получить ошибку синтаксиса в 281 строке, в файле из 39 строк.

Re: Вывод данных в js
« Ответ #11 : 08.01.2016, 23:18:44 »
Код
Parse error: syntax error, unexpected 'params' (T_STRING) in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 281
Вот интересно, что надо сделать, чтобы получить ошибку синтаксиса в 281 строке, в файле из 39 строк.
да я добавлял скрипт целиком в файл и пробовал на этой строке менять значение

*

robert

Re: Вывод данных в js
« Ответ #12 : 08.01.2016, 23:22:24 »
ТС, вы же не поленились выкладывать код всех файлов, почему нельзя выкладывать smooth_scroll.php в том виде, в каком вызывал ошибку?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

Re: Вывод данных в js
« Ответ #13 : 09.01.2016, 00:19:01 »
блин, я так не работаю ))
мне в этих файлах не разобраться в таком режиме.

делается так.
сначала надо добиться, чтобы просто статичный текст добавлялся в блок.

т.е.

Код
$ssc_stepsize="var ssc_stepsize = 150;";

добиваетесь, чтобы эта строка срабатывала, т.е. код собирался правильно.
потом уже добиваетесь, чтобы переменная $ssc_stepsize получала нужный параметр
эту строку где выводить? в исполняемом php файле?
Вообще не могу понять, я запутался окончательно))))))))
А почему нельзя вот так выводить, как я в cackle делал?
Код
<?php


//no direct access
defined('_JEXEC') or die('Restricted Access');
if( $displayData['params']->get('cackle_appID')!= '' ) {
?>

<div id="mc-container"></div>
<script type="text/javascript">
cackle_widget = window.cackle_widget || [];
cackle_widget.push({widget: 'Comment', id: <?php echo $displayData['params']->get('cackle_appID'); ?>});
(function() {
    var mc = document.createElement('script');
    mc.type = 'text/javascript';
    mc.async = true;
    mc.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cackle.me/widget.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mc, s.nextSibling);
})();
</script>
<?php
}
« Последнее редактирование: 09.01.2016, 00:37:06 от deminevgen »

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #14 : 09.01.2016, 01:00:00 »
ну как бы не айс весь код мешать с php.
но можно и так, по идее.
тут проблема в том, что скрипт js как-то не совсем подходит для передачи ему параметов мои способом, ибо переменные задаются не в блоке инициализации, а не пойми где.
да и события "загрузка документа" я не нашел.

но в связи с этим можно попробовать переназначить переменную после загрузки документа
$doc->addScriptDeclaration('   jQuery(document).ready(function() { ssc_stepsize = 500; }); ');



*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com

Re: Вывод данных в js
« Ответ #16 : 10.01.2016, 02:40:10 »
Спасибо за помощь, всё работает отлично, только не получается из XML подтянуть данные) чёт еррорит) ну да ладно, разберусь)
Код
		$doc->addScriptDeclaration('   jQuery(document).ready(function() { ssc_stepsize = $displayData['params']->get('speed'); }); ');
Это вообще имеет смысл?
Код
Parse error: syntax error, unexpected 'params' (T_STRING) in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 37

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #17 : 10.01.2016, 02:47:23 »
сначала получаем значение из XML в переменную в php
вот когда ты через echo её сможешь вывести, тогда и можно добавлять ее вывод в код.

Код
$mySpeed=$displayData['params']->get('speed');
echo $mySpeed;


*

robert

Re: Вывод данных в js
« Ответ #18 : 10.01.2016, 02:51:49 »
Синтаксическая ошибка. Можно попробовать так
Код: php-brief
$doc->addScriptDeclaration("jQuery(document).ready(function(){ssc_stepsize=".$displayData['params']->get('speed').";})");
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

Re: Вывод данных в js
« Ответ #19 : 10.01.2016, 02:57:08 »
Код
	<fields name="params" addfieldpath="/plugins/system/smooth_scroll">
<fieldset name="basic">
<field name="speed" type="text"  label="PLG_SMOOTH_SPEED" description="PLG_SMOOTH_SPEED_DESC" />
<field name="height" type="text"  label="PLG_SMOOTH_HEIGHT" description="PLG_SMOOTH_HEIGHT_DESC" />
       </fieldset>
</fields>
</config>
</extension>
Получаю null
Код
Fatal error: Call to a member function get() on null in C:\open\OpenServer\domains\intechnic.pro\plugins\system\smooth_scroll\smooth_scroll.php on line 4
Что не так делаю? вроде раньше работало)))

*

robert

Re: Вывод данных в js
« Ответ #20 : 10.01.2016, 03:01:26 »
А нельзя сразу выложить строку 4? Что за игра в гадалку?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

Re: Вывод данных в js
« Ответ #21 : 10.01.2016, 03:04:20 »
А нельзя сразу выложить строку 4? Что за игра в гадалку?
сначала получаем значение из XML в переменную в php
вот когда ты через echo её сможешь вывести, тогда и можно добавлять ее вывод в код.

Код
$mySpeed=$displayData['params']->get('speed');
echo $mySpeed;



*

robert

Re: Вывод данных в js
« Ответ #22 : 10.01.2016, 03:06:11 »
$displayData как-то объявлена?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #23 : 10.01.2016, 03:20:33 »
ну в общем мы тут уже ничем не поможем, наверно )
смотри другие плагины и добивайся получения своего параметра. все остальное для счастья у тебя есть. )

Re: Вывод данных в js
« Ответ #24 : 10.01.2016, 03:22:29 »
$displayData как-то объявлена?
Нет
Я просто повторюсь, что в c php и js на стадии освоения, делал по анологии в шаблоне helix3
вот такой пример: XML
Код
	            <fieldset name="basic" addfieldpath="/plugins/system/helix3/fields">

<field name="cackle_appID" type="text" class="child comment_engine comment_engine_cackle" label="HELIX_CACKLE_ID" description="HELIX_CACKLE_ID_DESC" />
Спойлер
[свернуть]
Спойлер
[свернуть]
Ничего я не объявил))) Пойду почитаю как данные из XML в php перетащить.
Всем спасибо за помощь! Осталось дело за малым)

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Вывод данных в js
« Ответ #25 : 10.01.2016, 03:31:35 »
так ты не с шаблона сдирай, а с плагинов тогда.
я просто сам не пишу плагины, тоже только хакаю чужое под настроение.
но примеры то надо явно брать с подобных расширений, а не с шаблонов.

*

passer

Re: Вывод данных в js
« Ответ #26 : 10.01.2016, 09:20:58 »
Ничего я не объявил))) Пойду почитаю как данные из XML в php перетащить.
Код: php
var_dump($this->params->get('speed'));

Re: Вывод данных в js
« Ответ #27 : 10.01.2016, 14:12:47 »
Код: php
var_dump($this->params->get('speed'));

String(4) 1600 - я в админке именно столько и выставил
когда просто вставляю в самое начало кода то норм выдает стринг а когда пытаюсь в строку пихануть то T-STRING
      $doc->addScriptDeclaration('   jQuery(document).ready(function() { ssc_stepsize = ($this->params->get('speed'); }); ');
получаю
Спойлер
[свернуть]
« Последнее редактирование: 10.01.2016, 14:18:21 от deminevgen »