Модификация tpl файлов через module.json?

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

ura2rist
ura2rist
Репутация: 0
Сообщения: 11
Зарегистрирован: 19.04.2023
С нами: 11 месяцев 9 дней

Сообщение #1 ura2rist » 27.04.2023, 13:08

Как правильно модифицировать файл.
Сделал модуль, включил его.
Рядом с Init.php cделал module.json
В файл product.tpl вставил текст --test--

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

{
  "modifications": {
    "front": [
      {
        "file": "product.tpl",
        "changes": [
          {
            "find": "--test--",
            "replace": "test"
          }
        ]
      }
    ]
  }
}

В папке compiled удаляю все файлы и обновляю сайт, и изменения не применяются. Как понять отрабатывает хотя бы module.json?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #2 korshunov » 27.04.2023, 16:02

module.json не отрабатывает, так как это не скрипт.

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

ura2rist
ura2rist
Репутация: 0
Сообщения: 11
Зарегистрирован: 19.04.2023
С нами: 11 месяцев 9 дней

Сообщение #3 ura2rist » 27.04.2023, 20:09

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

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

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #4 korshunov » 28.04.2023, 05:27

Неоднократно использовал в модулях этот функционал, у меня работает.
Если хотите, чтоб Вам помогли найти ошибку, то надо писать не общие фразы, а выкладывать ПОЛНОСТЬЮ все детали. А лучше всего выложить свой модуль целиком...

ura2rist
ura2rist
Репутация: 0
Сообщения: 11
Зарегистрирован: 19.04.2023
С нами: 11 месяцев 9 дней

Сообщение #5 ura2rist » 28.04.2023, 05:48

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

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #6 korshunov » 28.04.2023, 06:40

Вы в 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>"
}
]
}
]
}
}
то показывается изменение...

ura2rist
ura2rist
Репутация: 0
Сообщения: 11
Зарегистрирован: 19.04.2023
С нами: 11 месяцев 9 дней

Сообщение #7 ura2rist » 28.04.2023, 08:37

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 и обновил страницу, ничего не изменилось.
Можно как-то дебажить этот процесс?

korshunov
korshunov
Репутация: 146
Сообщения: 1854
Зарегистрирован: 03.12.2015
С нами: 8 лет 3 месяца
Skype

Сообщение #8 korshunov » 28.04.2023, 12:42

Конечно, можно, знай себе копайся в PHP в недрах ядра, если есть желание преодолевать трудности...

Могу посмотреть, если дадите FTP в личку.

dabustard
dabustard
Репутация: 4
Сообщения: 62
Зарегистрирован: 26.01.2018
С нами: 6 лет 2 месяца

Сообщение #9 dabustard » 04.05.2023, 09:31

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\"",


Название раздела: Вопросы по работе с OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Вопросы по работе с OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 29 гостей