Вставка переменной в JS через админку CMS возможно ли?

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
jorgovich
New Member
New Member
Posts: 7
Joined: Wed Jun 22, 2011 1:45 am

Вставка переменной в JS через админку CMS возможно ли?

Post 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 в переменную задавать ее через админку.
Заранее спасибо.
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Вставка переменной в JS через админку CMS возможно ли?

Post by guro »

Для того? чтобы вставлять в блоки контента скрипты, которые содержат фигурные скобки (а я думаю ваш скрипт не исключение) следует этот скрипт заключить в специальные smarty теги

Code: Select all

{literal}<__script__>......</__script>{/literal}
Ваша задача имеет множество решений. К примеру вот так:
1. Создаем блок контента "peremennaya" - в этом блоке будет храниться значение переменной, т.е.

Code: Select all

2300
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 обработал вызов блока контента.
jorgovich
New Member
New Member
Posts: 7
Joined: Wed Jun 22, 2011 1:45 am

Re: Вставка переменной в JS через админку CMS возможно ли?

Post 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}
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Вставка переменной в JS через админку CMS возможно ли?

Post by guro »

jorgovich wrote:чтоб код не отображался скрипта при просмотре "исходного кода страницы"
А вы не можете скрыть от пользователя JavaScript код. JavaScript грузится клиенту на его машину и он всегда будет доступен.
Или я не совсем понял, что конкретно вы хотите скрыть от пользователя?
jorgovich
New Member
New Member
Posts: 7
Joined: Wed Jun 22, 2011 1:45 am

Re: Вставка переменной в JS через админку CMS возможно ли?

Post 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);" />
Что то в этом роде. Или как лучше сделать есть совет?
User avatar
guro
Power Poster
Power Poster
Posts: 985
Joined: Thu Apr 26, 2012 8:38 pm
Location: Ramenskoe

Re: Вставка переменной в JS через админку CMS возможно ли?

Post 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>
Post Reply

Return to “Russian - русский”