Найти - Пользователи
Полная версия: Zope не обрабатывает TAL внутри <script language="javascript"> ?
Начало » Zope/Plone/Bluebream » Zope не обрабатывает TAL внутри <script language="javascript"> ?
1
NilovSerge
Всем привет!
Подскажите, пожалуйста, кто знает. Есть ZPT-страница. И ней в JavaScript-секции я хочу значение значение одной из переменных
определить используя python-скрипт. Делаю так:
<script language="javascript">
...
      var S=  '<span tal:replace="python:here.get_data_select_LabelName( label_code= &nbsp;DemographicsTitle&nbsp;, surv_lang_id= 2)" ';
      alert(S);
...
</script>
И в результате на экран выводится мой первозданный “<span” как я его и ввел. То есть Zope даже не обрабатывал TAL конструкцию. Он что
не обрабатывает то что внутри <script language=“javascript”>? С dtml-документами такое вроде работает.
nss
Вообще, для жаваскриптов лучше использовать dtml, а в zpt писать <script src=“path-to-dtml-page” language=“javascript”>.
NilovSerge
Попробовал как советовал nss И не получилось :
Сначала в ZPT подключаю js-файл
<script language="JavaScript" src="dtml_func.js" type="text/javascript"></script>

Вызываю функцию из dtml_func.js :
var S= GetDemographicsTitle('DemographicsTitle', 2); 

В dtml_func.js определяю :
function GetDemographicsTitle(DemographicsTitle, LanguageId ) {
  alert( 'GetDemographicsTitle  DemographicsTitle::'+DemographicsTitle+'   LanguageId::'+LanguageId );
  Res= "<dtml-var expr=&nbsp;get_data_select_LabelName( 'DemographicsTitle', 2)&nbsp; >";
  alert(Res);
  return Res;
} 
И второй alert выводит на экран dtml-выражение а не значение из скрипта get_data_select_LabelName который лежит на директорию выше
tabajara
Zope не обрабатывает TAL внутри <script language=“javascript”>
<script language="javascript">
...
      var S=  '<span tal:replace="python:here.get_data_select_LabelName( label_code= &nbsp;DemographicsTitle&nbsp;, surv_lang_id= 2)" ';
      alert(S);
...
</script> 
Я думаю що всередині <script language=“javascript”> тали працюють. Вони обробляються в тегах, а var S= ‘<span tal:replace=“python:here.get_data_select_LabelName( label_code= &nbsp;DemographicsTitle&nbsp;, surv_lang_id= 2)” ’; - не тег а стрічка
nss
NilovSerge
Res= "<dtml-var expr=&nbsp;get_data_select_LabelName( 'DemographicsTitle', 2)&nbsp; >";
alert(Res);
return Res;
}
И второй alert выводит на экран dtml-выражение а не значение из скрипта get_data_select_LabelName который лежит на директорию выше
Это точно валидный дтмл-код? Посмотрите как в плоне сделаны Resource Registries (portal_javascripts, portal_css)
NilovSerge
tabajara
Вони обробляються в тегах.
А нельзя ли чуть подробнее? Как это должно быть написано ?

С плоном к сожалению не знаком. dtml-выражение вроде правильное.
nss
> Как это должно быть написано ?

Никак. ZPT предназначен только для xml-подобных документов, то есть для документа с древовидной структурой. конструкции tal:* позволяют менять эту древовидную структуру. Для не-xml документов (джаваскрипты, цсс, и т. п.) следует использовать только dtml.

Почитайте в Zope Book в каких случаях следует использовать zpt, а в каких – dtml.

Так как полностью вашего кода не видно, а с дтмл я почти не работал, то лично мне найти ошибку тяжело.
tabajara
nss Правильно! +1
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB