Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

тег ignore работает не правильно #258

Open
Setest opened this issue Nov 28, 2016 · 8 comments
Open

тег ignore работает не правильно #258

Setest opened this issue Nov 28, 2016 · 8 comments
Labels
modx Issues with fenom modx integration

Comments

@Setest
Copy link

Setest commented Nov 28, 2016

например есть JS подключаемый через include
{ignore}
$(function() { 'use strict'
{/ignore}
в результате получим что ignore не закрыт. Очень хочеться как в смарти менять разделитель на усмотрение, т.е. заменить {..} на {#...#} например, тогда проблем с ignore будет меньше.

@bzick
Copy link
Member

bzick commented Nov 29, 2016

Не совсем понятно, у вас {/ignore}в самом коде JS участвует и является частью JS?

@Setest
Copy link
Author

Setest commented Nov 29, 2016

через инклюд подключаю js файл, внутри него есть места где используется парсер, т.к. парсер использует фигурные скобки, а запись $(function() {'use strict' (без пробела) обрабатывается парсером, если ставить ignore, то именно на эту часть он не срабатывает, говорит что ignore не закрыт, хотя очевидно что это не так.

@maxisoft-git
Copy link
Member

могу конечно ошибиться но скорее всего вам подойдет вариант

{script:ignore} ... {/script}

блочного игнорирования.

@Setest
Copy link
Author

Setest commented Nov 30, 2016

попробовал, не получилось, также я не нашел тега script в Fenom/Compiler.php или я не правильно его использую...
Unexpected tag 'script' in path:js/main.js.tpl line 47, near '{script:' <- there in path:shop/layout line 203, near '{include "path:js/main.js.tpl"' <- there...

@Setest
Copy link
Author

Setest commented Dec 3, 2016

проверил еще раз, срзу скажу что использую в modx, обновил до послед версии феном, оставил тег ignore и js код на странице... не работает, раньше думал что только в include не работает. Есть подозрения что parser режет теги, но я ничего криминального в его коде не нашел. Вот то что есть на странице: {ignore:ignore}<script> $(function() {'use strict'; 123;}) </script> {/ignore} а вот у клиента: Unexpected token ';' in 563995f7dca13591a0317fa93b191d36 line 2, near '{'use strict';' <- there В pdotools шаблон обрабатывается след образом: $tpl = $fenom->getRawTemplate()->source($name, $content, true); на тот момент переменная $content содержит правильный код указанный выше (по мне так все верно). Почему ignore не обрабатывается ХЗ.
Хаха только что нашел что Василий использовал отдельное подключение css и js в pdo при использовании fenom, походу он тоже на это напаролся, и как обычно "обошел" проблему

@Setest
Copy link
Author

Setest commented Dec 7, 2016

короче... я балбес ) оказывается fenom вызывался 2 раза, соответственно 2-й раз ignore уже отсутствовал. НО проблема существует, например, как я описывал выше, код:
{ignore}<script> $(function() {'use strict'; 123; </script> {/ignore}
вернет ошибку Unclosed tag: {ignore} opened on line 1, а следующий код сработает без ошибок: {ignore}<script> $(function() {'use strict'; 123; //} </script> {/ignore}

@bzick
Copy link
Member

bzick commented Dec 7, 2016

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

@Setest
Copy link
Author

Setest commented Dec 13, 2016

возьмем пример из документации по ignore и уберем скобку (знаю что по отношению к парсеру браузера так делать не стоит): {ignore}<style> h1 {font-size: 24px; color: #F00; </style> {/ignore} казалось бы что код должен отработать без ошибок парсера, итог Unclosed tag: {ignore} opened on line 1 Я думаю все таки оптимальным решением был бы уход от фигурных скобок в сторону кастомных, ибо ситуации бывают разные и при комбинации различных шаблонизаторов, js, стилей, да мало ли чего еще, велика вероятность получить ошибку. Тот же парсер modx (по-умолчанию) проходится по коду несколько раз, и если за один проход он отрабатывает ignore верно, то на следующем он уже не увидит этих тегов и бумс опять ошибка, лично я не согласен с такой работой парсера modx, но такая уж логика.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
modx Issues with fenom modx integration
Projects
None yet
Development

No branches or pull requests

4 participants