Есть ли способ сделать замену / замену строки в SQL? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть несколько записей в CMS, которые включают фрагменты HTML с пользовательскими тегами для инструмента виджета.Создатель CMS, по-видимому, обновил свою CMS без обеспечения надлежащего преобразования данных.Их виджеты используют ключи для разметки на основе ширины экрана, такие как block_lg, block_md, block_sm.Проблема связана с тем фактом, что раньше у них был block_xs, и теперь они сместили их все - отбросив block_xs и вместо этого поместив block_xl на другом конце.Мы на самом деле не используем эти вещи, но их конфигурации виджетов делают.Для нас это означает, что значения для каждого ключа идентичны.Проблема возникает, когда обновленный код CMS ищет «block_xl» в любых тегах определения виджета, не может найти его и выдает ошибки.

Я думаю, что появится новый код«игнорировать» block_xs из-за того, как он читает теги.(и аналогично, старый код будет игнорировать block_xl) Поскольку значения для каждого идентичны, мне нужно в основном прочитать любое определение виджета и добавить к нему значение block_xl, соответствующее значению [любого из] других параметров ширины.

Поскольку лучший порядок размещения был бы «до» значения block_lg, вероятно, проще всего сделать это следующим образом:

Заменить любую вещь, соответствующую регулярному выражению в стиле posix, совпадающую / block_lg (= "\ d +, \ d + ") / with: block_xl =" $ 1 "block_lg =" $ 1 "

Или любым другим эквивалентом этого.

Пример существующего блока CMS с несколькими определениями виджетов:

<div>{{widget type="CleverSoft\CleverBlock\Block\Widget"
      widget_title="The Album" classes="highlight-bottom modish greenfont font52 fontlight"
      enable_fullwidth="0" block_ids="127" lazyload="0"
      block_lg="127,12," block_md="127,12," block_sm="127,12," block_xs="127,12,"
      template="widget/block.phtml" scroll="0" background_overlay_o="0"}}</div>
<!-- Image Block -->
<div>{{widget type="CleverSoft\CleverBlock\Block\Widget"
       widget_title="What’s Your Favorite Cover Style?"
       classes="zoo-widget-style2 modish grey font26 fontlight"
       enable_fullwidth="0" block_ids="126" lazyload="0"
       block_lg="126,12," block_md="126,12," block_sm="126,12," block_xs="126,12,"
       template="widget/block.phtml" scroll="0" background_overlay_o="0"}}</div>

Чем бы я предпочел закончить из вышеперечисленного (добавив block_xl):

<div>{{widget type="CleverSoft\CleverBlock\Block\Widget"
      widget_title="The Album" classes="highlight-bottom modish greenfont font52 fontlight"
      enable_fullwidth="0" block_ids="127" lazyload="0"
      block_xl="127,12," block_lg="127,12," block_md="127,12," block_sm="127,12," block_xs="127,12,"
      template="widget/block.phtml" scroll="0" background_overlay_o="0"}}</div>
<!-- Image Block -->
<div>{{widget type="CleverSoft\CleverBlock\Block\Widget"
       widget_title="What’s Your Favorite Cover Style?"
       classes="zoo-widget-style2 modish grey font26 fontlight"
       enable_fullwidth="0" block_ids="126" lazyload="0"
       block_xl="126,12," block_lg="126,12," block_md="126,12," block_sm="126,12," block_xs="126,12,"
       template="widget/block.phtml" scroll="0" background_overlay_o="0"}}</div>

Я знаю, как это сделать в php, и при необходимости я просто заменюэто на моей локальной БД и написать сценарий SQL для обновления измененных записей, но блоки html могут быть довольно большими в некоторых случаях.Было бы предпочтительно, если это возможно, сделать подстановки прямо в SQL, но я не уверен, как это сделать или вообще возможно ли это сделать.И да, на любой данной странице или блоке cms может быть несколько экземпляров виджета.(т. е. может потребоваться более одной такой замены с различными локальными «значениями», назначенными для block_lg)

Если кто-нибудь может помочь мне сделать это в SQL, это будет очень полезно.

для справки, полученные таблицы называются cms_page и cms_block, имя строки в обоих случаях - content SW

...