Page 1 of 1
Вставка переменной в JS через админку CMS возможно ли?
Posted: Mon Jun 25, 2012 5:39 pm
by jorgovich
Суть проблемки есть JS-файл по расчету строительных материалов (очень большой содержащий множества функций и.т.п), переписывать на php и разбиратся в формулах что как считается очень долго. По сути в этом файле нужно через админку менять только цену на материал (одно значение). Так вот вопрос:
Можно ли вставить этот JS файл в CMS и задавать значение(цену на материал) которое там указано явно, через переменную редактируя ее в админке.
Пробовал сделать этот файл через блок контента, возникла проблемка при загрузке страницы с этим блоком выдается весь код JS, что не есть хорошо. Подскажите идеи как реализовать?
для наглядности вышеописанного:
Code: Select all
<__script__ type="text/javascript">
много много функций и кода
var d6=obj.d6.value;
var d7=2300*d6
много много кода
</__script>
Ввести 2300 в переменную задавать ее через админку.
Заранее спасибо.
Re: Вставка переменной в JS через админку CMS возможно ли?
Posted: Tue Jun 26, 2012 12:00 am
by guro
Для того? чтобы вставлять в блоки контента скрипты, которые содержат фигурные скобки (а я думаю ваш скрипт не исключение) следует этот скрипт заключить в специальные smarty теги
Code: Select all
{literal}<__script__>......</__script>{/literal}
Ваша задача имеет множество решений. К примеру вот так:
1. Создаем блок контента "peremennaya" - в этом блоке будет храниться значение переменной, т.е.
2. Создаем блок контента "js_script" с вашим js файлом. Примерно следующего содержания
Code: Select all
{literal}<__script__ type="text/javascript">
много много функций и кода
var d6=obj.d6.value;
var d7={/literal}{global_content name='peremennaya'}{literal}*d6
много много кода
</__script>{/literal}
Заметьте, что перед тем как вызвать блок контента "peremennaya" я закрыл literal, а после вызова открыл. Это нужно для того, чтобы шаблонизатор smarty обработал вызов блока контента.
Re: Вставка переменной в JS через админку CMS возможно ли?
Posted: Tue Jun 26, 2012 4:46 am
by jorgovich
Спасибо за ответ,
вот собственно, как бы покрасивее реализовать чтоб код не отображался скрипта при просмотре "исходного кода страницы", есть какие мысли поделитесь.
Может его можно как то можно в файл вынести и оттуда выдернуть переменную?
Забыл уточнить что про literal я знаю, думали мы примерно одинаково, только я пытался реализовал немного по другому вставил скрипт в шаблон:
Code: Select all
{literal}<__script__ type="text/javascript">
много много функций и кода
var d6=obj.d6.value;
var d7={/literal}{content block='цена' oneline='true' wysiwyg='false' assign=price}{literal}*d6
много много кода
</__script>{/literal}
Re: Вставка переменной в JS через админку CMS возможно ли?
Posted: Tue Jun 26, 2012 7:15 pm
by guro
jorgovich wrote:чтоб код не отображался скрипта при просмотре "исходного кода страницы"
А вы не можете скрыть от пользователя JavaScript код. JavaScript грузится клиенту на его машину и он всегда будет доступен.
Или я не совсем понял, что конкретно вы хотите скрыть от пользователя?
Re: Вставка переменной в JS через админку CMS возможно ли?
Posted: Sun Jul 01, 2012 7:22 pm
by jorgovich
Да думал может можно привести как то к виду в одну строку при просмотре исходного кода
Code: Select all
<__script__ type="text/javascript" src="script.js"></__script>
и в него передать переменную.

вот только я запутался с этим немного, получается мне надо передать переменную в js-файл. Думал привязать допустим поле input к блоку контента 'peremennaya' .т.е в нем будет что то типа этого:
Code: Select all
<input name="d8" type="text" value="2300" />
А в файле js заменить 2300 на переменную d8, потом блок контента вставить в форму запроса на расчет в тело страницы.
т.е. примерно получится в теле
Code: Select all
<form name="forma" action="" method="get">
{global_content name='peremennaya'}
d5<input name="d6" type="text" />
d6<input name="d6" type="text" />
<input name="reset" type="reset" value="Сбросить" />
<input name="button" type="button" value="Посчитать" onclick="func(forma);" />
Что то в этом роде. Или как лучше сделать есть совет?
Re: Вставка переменной в JS через админку CMS возможно ли?
Posted: Mon Jul 02, 2012 8:08 pm
by guro
Да вы, в принципе, можете перед вашим вызовом
Code: Select all
<__script__ type="text/javascript" src="script.js"></__script>
объявить переменную и использовать её в скрипте. Примерно вот так
Code: Select all
<__script__ type="text/javascript">
var d8=2300;
</__script>
<__script__ type="text/javascript" src="script.js"></__script>