Глобальная замена слов

#1 22 января 2020 в 21:44
Добрый день!
Подскажите, пожалуйста, в каком файле лучше править, чтобы произвести глобальную замену слова? И еще лучше, чтобы при обновлениях системы максимально обезопасить себя от того, что все поломается.
#2 22 января 2020 в 21:48


Добрый день!
Подскажите, пожалуйста, в каком файле лучше править, чтобы произвести глобальную замену слова? И еще лучше, чтобы при обновлениях системы максимально обезопасить себя от того, что все поломается.

vladimird

смотря какого слова
#3 22 января 2020 в 21:52
а в чем разница?
Допустим слово будет такое: GOROD_IMENITELNYY_PADEZH
Допустим я его вставил в описание категории, в СЕО и т.д.
Теперь хочу его везде заменить на нужно мне слово: Москва
#4 23 января 2020 в 11:57
Если, конечно, я вас правильно понял, то есть такой метод.
Вы можете создать свой языковой файл и подключать его где угодно, используя данный метод.
#5 23 января 2020 в 12:14

а в чем разница?

vladimird
А разница в том, где это слово хранится. В файлах или в базе данных.
#6 23 января 2020 в 14:29


а в чем разница?

vladimird
А разница в том, где это слово хранится. В файлах или в базе данных.

Ris

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

Можете подсказать такую "общую точку входа/выхода" перед отображением страницы в браузер?
#7 23 января 2020 в 14:34


Если, конечно, я вас правильно понял, то есть такой метод.
Вы можете создать свой языковой файл и подключать его где угодно, используя данный метод.

@IamB

Благадорю, с этим точно покопаюсь, будет полезным. Частично может спасти.
#8 23 января 2020 в 14:43
vladimird,
Вы просите помочь, но не сообщаете практически никаких данных.
Помочь вам с таким подходом будет очень трудно.
Найдите таблицу с категориями вашего типа контента. Допустим, это статьи.
Тогда ищем, в каком столбце таблицы cms_articles_cats находятся ваши волшебные слова GOROD_IMENITELNYY_PADEZH.
Допустим, что в столбце seo_desc.
Тогда поменять массово на "Москва" можно таким sql запросом в базу:
  1. UPDATE cms_articles_cats SET seo_desc = REPLACE(seo_desc, 'GOROD_IMENITELNYY_PADEZH', 'Москва');
#9 23 января 2020 в 14:51


vladimird,
Вы просите помочь, но не сообщаете практически никаких данных.
Помочь вам с таким подходом будет очень трудно.
Найдите таблицу с категориями вашего типа контента. Допустим, это статьи.
Тогда ищем, в каком столбце таблицы cms_articles_cats находятся ваши волшебные слова GOROD_IMENITELNYY_PADEZH.
Допустим, что в столбце seo_desc.
Тогда поменять массово на "Москва" можно таким sql запросом в базу:

  1. UPDATE cms_articles_cats SET seo_desc = REPLACE(seo_desc, 'GOROD_IMENITELNYY_PADEZH', 'Москва');

Ris

Мне нужно в целом по сайту. Я не знаю как правильно выразить свою мысли. Апдейты я умею делать. Это не проблема для меня. Но мне не нужно разово. Мне как раз таки нужно на постоянной основе динамически.
выше написал: "Я хочу заменять слово каждый раз при формировании какой-либо страницы. Перед тем как показать страницу конечному пользователю в браузер хочется заменить нужное слово, например реплэйсом.".
то есть реплейсом в php. не в базе данных.
#10 23 января 2020 в 15:48
Поищите в паке /system/languages/ может там есть ваше слово.
#11 23 января 2020 в 16:12
Ris, если движок использует для вывода страницы буферизацию вывода, то простейшая схема работы может выглядеть так
  1.  
  2. <?php
  3. // работа движка
  4.  
  5.  
  6. // происходит вывод шаблона
  7. // когда все выводы из шаблона завершены в буфере содержится готовая
  8. // к отправке в браузер страница
  9.  
  10. $out = ob_get_contents();
  11. $out = str_replace("GOROD_IMENITELNYY_PADEZH", "Москва", $out);
  12.  
  13. // передача заголовков
  14. echo $out;
  15.  
Но не могу найти место в движке, где готовая страница отдаётся браузеру.
#12 23 января 2020 в 16:21

Но не могу найти место в движке, где готовая страница отдаётся браузеру.

@IamB
Каждый из файлов шаблона отдает в браузер свой кусок html.
А располагает их по блокам на странице главный файл шаблона \templates\default\main.tpl.php
#13 23 января 2020 в 16:53
vladimird, попробуйте изменить файл \templates\default\main.tpl.php так:
  1.  
  2. <?php ob_start(); ?>
  3. // Тут содержимое исходного файла \templates\default\main.tpl.php
  4. <?php
  5. $out = ob_get_contents();
  6. $out = str_replace(["Новости", "выставочный"], ["News", "никакой"], $out);
  7. echo $out;
  8. ?>
  9.  
#14 23 января 2020 в 18:02


… попробуйте изменить файл \templates\default\main.tpl.php так:
...

@IamB

Знаете кто вы? Вы гений! Это работает. Ура!!!
#15 23 января 2020 в 19:10
vladimird, ну это навряд ли. Где бы мы были, если бы Ris нам не помог?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.