Страница 1 из 1
Модификация tpl файлов через module.json?
Добавлено: 27.04.2023, 13:08
ura2rist
Как правильно модифицировать файл.
Сделал модуль, включил его.
Рядом с Init.php cделал module.json
В файл product.tpl вставил текст --test--
Код: Выделить всё
{
"modifications": {
"front": [
{
"file": "product.tpl",
"changes": [
{
"find": "--test--",
"replace": "test"
}
]
}
]
}
}
В папке compiled удаляю все файлы и обновляю сайт, и изменения не применяются. Как понять отрабатывает хотя бы module.json?
Добавлено: 27.04.2023, 16:02
korshunov
module.json не отрабатывает, так как это не скрипт.
Действие модификации происходит, если сделано правильно.
Самих изменений в описанной ситуации происходит, Поскольку, как сказано в
https://github.com/OkayCMS/Okay3/blob/master/docs/tpl_modifiers.mdfind ищет по вхождению подстроки в строку названия открывающей ноды.
Добавлено: 27.04.2023, 20:09
ura2rist
korshunov писал(а):module.json не отрабатывает, так как это не скрипт.
Действие модификации происходит, если сделано правильно.
Самих изменений в описанной ситуации происходит, Поскольку, как сказано в
https://github.com/OkayCMS/Okay3/blob/master/docs/tpl_modifiers.mdfind ищет по вхождению подстроки в строку названия открывающей ноды.
Я пробовал даже примеры из доки скопировать и вставить, все равно не изменяется
Добавлено: 28.04.2023, 05:27
korshunov
Неоднократно использовал в модулях этот функционал, у меня работает.
Если хотите, чтоб Вам помогли найти ошибку, то надо писать не общие фразы, а выкладывать ПОЛНОСТЬЮ все детали. А лучше всего выложить свой модуль целиком...
Добавлено: 28.04.2023, 05:48
ura2rist
korshunov писал(а):Неоднократно использовал в модулях этот функционал, у меня работает.
Если хотите, чтоб Вам помогли найти ошибку, то надо писать не общие фразы, а выкладывать ПОЛНОСТЬЮ все детали. А лучше всего выложить свой модуль целиком...
В design/шблон/html/product.tpl
Код: Выделить всё
<form class="product_sort__form" method="post">
<button type="submit" name="prg_seo_hide" class="d-inline-flex align-items-center product_sort__link {if $sort=='my_sort'} active_up{elseif $sort=='my_sort_desc'} active_down{/if}" value="{if $sort=='my_sort'}{furl sort=my_sort_desc page=null absolute=1}{else}{furl sort=my_sort page=null absolute=1}{/if}">
<span>Моя сортировка</span>
{include file="svg.tpl" svgId="sort_icon"}
</button>
</form>
https://drive.google.com/file/d/14F0GtkbC2KRi96ZOP8KniP5l-Pvix-P5/view?usp=share_link
Добавлено: 28.04.2023, 06:40
korshunov
Вы в module.json требуете поиск
"find": "data-language=\"products_by_price\"",
а такого в product.tpl просто нет.
Так что работает верно.
Если я в module.json вставляю
{
"modifications": {
"front": [
{
"file": "product.tpl",
"changes": [
{
"find": "data-language=\"products_by_price\"",
"closestFind": "class=\"product_sort__form\"",
"appendBefore": "<h1>456</h1>"
},
{
"find": "class=\"product_sort__form\"",
"appendBefore": "<h1>4567</h1>"
}
]
}
]
}
}
то показывается изменение...
Добавлено: 28.04.2023, 08:37
ura2rist
korshunov писал(а):Вы в module.json требуете поиск
"find": "data-language=\"products_by_price\"",
а такого в product.tpl просто нет.
Так что работает верно.
Если я в module.json вставляю
{
"modifications": {
"front": [
{
"file": "product.tpl",
"changes": [
{
"find": "data-language=\"products_by_price\"",
"closestFind": "class=\"product_sort__form\"",
"appendBefore": "<h1>456</h1>"
},
{
"find": "class=\"product_sort__form\"",
"appendBefore": "<h1>4567</h1>"
}
]
}
]
}
}
то показывается изменение...
Попробовал вставить это в модуль, очистил compiled и обновил страницу, ничего не изменилось.
Можно как-то дебажить этот процесс?
Добавлено: 28.04.2023, 12:42
korshunov
Конечно, можно, знай себе копайся в PHP в недрах ядра, если есть желание преодолевать трудности...
Могу посмотреть, если дадите FTP в личку.
Добавлено: 04.05.2023, 09:31
dabustard
ura2rist писал(а):Попробовал вставить это в модуль, очистил compiled и обновил страницу, ничего не изменилось.
нужно заменить на
так как тот код что ищете find'ом, как верно подметил
korshunov , в product.tpl отсутствует
Также в документации в примерах указано, что для поиска ноды нужно указывать ее часть с самого сначала, возможно будет работать и так как вы сделали, но не уверен, нужно проверять, то есть попробуйте вместо:
Код: Выделить всё
"find": "data-language=\"products_by_price\"",
искать так:
Код: Выделить всё
"find": "<span data-language=\"products_by_price\"",