battrack
@battrack

Как на php вставить константы в пользовательский текст?

Боюсь, что тему коряво сформулировал, объясню на примере:
Есть интернет-магазин, в котором много текстовых страниц. Страницы редактируются через админку (обычный WYSIWYG редактор). Тексты, естественно, хранятся в базе. Но дело в том, что на разных страницах неоднократно упоминается стоимость доставки (как пример). И эта стоимость часто меняется. Соответственно, каждый раз когда начальство снова решило изменить стоимость доставки админу приходится в админке открывать все страницы, где упоминается стоимость доставки, и менять ее. Есть ли такая возможность каким-то образом в тексте не использовать прямое значение доставки, а вставить какую-то переменную (константу), которая где-то отдельно определена. И чтобы в момент изъятия текста из базы и его вывода на страницу, эта "константа" заменялась на на соответствующее значение? Единственное решение, которое я вижу - это заранее определить некие "идентификаторы" для каждого значения, например, для стоимости доставки "DELIVERY_PRICE", и каждый раз где в тексте упоминается эта стоимость админ будет писать вместо нее вот этот "идентификатор". А в момент вывода этих данных на сайте, этот идентификатор будет подменен на значение соответствующей константы. Но мне этот способ кажется немного топорным, т.к. придется использовать функцию поиска и замены строк, что замедлит работу, ведь констант то таких много, т.к. стоимость доставки - это лишь один из множества примеров и придется в цикле перебирать все эти константы и искать их наличие в каждом тексте.
  • Вопрос задан
  • 671 просмотр
Решения вопроса 2
DevMan
@DevMan
поиск и замена - единственное решение.
если парит скорость (хотя это вообще ни о чем), то результат замены сохраняете в кэш, который обнуляете при обновлениях.
Ответ написан
Комментировать
Denormalization
@Denormalization
Если просто, то после выборки:
<?php
$consts = ['A', 'B', 'C'];
$replace = ['NEW_A', 'NEW_B', 'NEW_C'];
$text = ....; // выборка из базы
$text = str_replace($consts, $replace, $text);
echo $text;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ggdev
@ggdev
Например используйте шорткод {DELIVERY_PRICE}, а потом регулярной заменяйте в тексте на значение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы