Страница 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.md
find ищет по вхождению подстроки в строку названия открывающей ноды.

Добавлено: 27.04.2023, 20:09
ura2rist
korshunov писал(а):module.json не отрабатывает, так как это не скрипт.

Действие модификации происходит, если сделано правильно.
Самих изменений в описанной ситуации происходит, Поскольку, как сказано в
https://github.com/OkayCMS/Okay3/blob/master/docs/tpl_modifiers.md
find ищет по вхождению подстроки в строку названия открывающей ноды.
Я пробовал даже примеры из доки скопировать и вставить, все равно не изменяется

Добавлено: 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 и обновил страницу, ничего не изменилось.

Код: Выделить всё

"file": "product.tpl",

нужно заменить на

Код: Выделить всё

"file": "products_sort.tpl",

так как тот код что ищете find'ом, как верно подметил korshunov , в product.tpl отсутствует

Также в документации в примерах указано, что для поиска ноды нужно указывать ее часть с самого сначала, возможно будет работать и так как вы сделали, но не уверен, нужно проверять, то есть попробуйте вместо:

Код: Выделить всё

"find": "data-language=\"products_by_price\"",

искать так:

Код: Выделить всё

"find": "<span data-language=\"products_by_price\"",