Форум русской поддержки Joomla!® CMS
07.12.2016, 01:54:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 825 раз)
0 Пользователей и 1 Гость смотрят эту тему.
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« : 08.01.2016, 17: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, 11:20:58 от deminevgen » Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #1 : 08.01.2016, 17: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
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #2 : 08.01.2016, 20:15:23 »

Кодируете в JSON и выводите где-нибудь на странице. Можно в качестве произвольного html-атрибута. В JS-скрипте получаете атрибут, раскодируете. Всё просто.
Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #3 : 08.01.2016, 20: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);
« Последнее редактирование: 08.01.2016, 20:35:35 от effrit » Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #4 : 08.01.2016, 20: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
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #5 : 08.01.2016, 20:37:53 »

да, я дописал в сообщении
на самом деле, можно совмещать.

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

инициализация запускается по событию (document).ready и там как раз все переменные выставляются.
вот эту часть выносим в php, а весь остальной код можно цеплять стандартно через js файл
« Последнее редактирование: 08.01.2016, 20:41:06 от effrit » Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #6 : 08.01.2016, 20: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, 21:00:56 от deminevgen » Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #7 : 08.01.2016, 21:10:47 »

омг. зачем это все? ))
вы же в php получаете данные, берете напрямую, без echo

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

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

Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #8 : 08.01.2016, 21: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, 21:39:49 от deminevgen » Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #9 : 08.01.2016, 21:50:28 »

блин, я так не работаю ))
мне в этих файлах не разобраться в таком режиме.

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

т.е.

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

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

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #10 : 08.01.2016, 22: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 строк.
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #11 : 08.01.2016, 22: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
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #12 : 08.01.2016, 22:22:24 »

ТС, вы же не поленились выкладывать код всех файлов, почему нельзя выкладывать smooth_scroll.php в том виде, в каком вызывал ошибку?
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #13 : 08.01.2016, 23: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
}
« Последнее редактирование: 08.01.2016, 23:37:06 от deminevgen » Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #14 : 09.01.2016, 00:00:00 »

ну как бы не айс весь код мешать с php.
но можно и так, по идее.
тут проблема в том, что скрипт js как-то не совсем подходит для передачи ему параметов мои способом, ибо переменные задаются не в блоке инициализации, а не пойми где.
да и события "загрузка документа" я не нашел.

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


« Последнее редактирование: 09.01.2016, 00:03:19 от effrit » Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #15 : 09.01.2016, 00:05:01 »

т.е. вот после этой строки добавить

Код:
$doc->addScript(JURI::base().'media/smooth_scroll/js/jquery.smooth-scroll.min.js');
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #16 : 10.01.2016, 01: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
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #17 : 10.01.2016, 01:47:23 »

сначала получаем значение из XML в переменную в php
вот когда ты через echo её сможешь вывести, тогда и можно добавлять ее вывод в код.

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

Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #18 : 10.01.2016, 01:51:49 »

Синтаксическая ошибка. Можно попробовать так
Код
$doc->addScriptDeclaration("jQuery(document).ready(function(){ssc_stepsize=".$displayData['params']->get('speed').";})");
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #19 : 10.01.2016, 01: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
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #20 : 10.01.2016, 02:01:26 »

А нельзя сразу выложить строку 4? Что за игра в гадалку?
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #21 : 10.01.2016, 02:04:20 »

А нельзя сразу выложить строку 4? Что за игра в гадалку?
сначала получаем значение из XML в переменную в php
вот когда ты через echo её сможешь вывести, тогда и можно добавлять ее вывод в код.

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


Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3586


« Ответ #22 : 10.01.2016, 02:06:11 »

$displayData как-то объявлена?
Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #23 : 10.01.2016, 02:20:33 »

ну в общем мы тут уже ничем не поможем, наверно )
смотри другие плагины и добивайся получения своего параметра. все остальное для счастья у тебя есть. )
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #24 : 10.01.2016, 02: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
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #25 : 10.01.2016, 02:31:35 »

так ты не с шаблона сдирай, а с плагинов тогда.
я просто сам не пишу плагины, тоже только хакаю чужое под настроение.
но примеры то надо явно брать с подобных расширений, а не с шаблонов.
Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #26 : 10.01.2016, 08:20:58 »

Ничего я не объявил))) Пойду почитаю как данные из XML в php перетащить.
Код
var_dump($this->params->get('speed'));
Записан
deminevgen
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 117



« Ответ #27 : 10.01.2016, 13:12:47 »

Код
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, 13:18:21 от deminevgen » Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #28 : 10.01.2016, 13:21:45 »

http://php.net/manual/ru/language.types.string.php
http://php.net/manual/ru/ref.strings.php
Записан
effrit
Группа развития
*****

Репутация: +730/-7
Offline Offline

Пол: Мужской
Сообщений: 6810


effrit.com


« Ответ #29 : 10.01.2016, 13:35:43 »

Код:
$doc->addScriptDeclaration("jQuery(document).ready(function(){ssc_stepsize=".$this->params->get('speed').";})");
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet