Синтаксис модификаторов и regexp

Тема в разделе "Модули и дополнения", создана пользователем sold, 11 авг 2015.

  1. sold

    sold Пользователь

    Сообщения:
    78
    Симпатии:
    0
    Столкнулся с такой проблемой, что используя модификатор, мне нужно найти и заменить не строку или ее часть, а несколько строк. Как это обычно делают? Начал думать в сторону regexp, но никогда ими самостоятельно не пользовался и может быть есть какой-то иной способ, отформатировать код там как-то по особому или типа того?
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.884
    Симпатии:
    1.065
    Мультистрочный режим для модификатора.
    Т.е добавим новый атрибут quote и если он будет true то включится многострочный режим замены

    Для этого меняем файл \admin\controller\extension\modification.php

    после
    PHP:
    $limit $operation->getElementsByTagName('search')->item(0)->getAttribute('limit');
    добавим
    PHP:
    $quote $operation->getElementsByTagName('search')->item(0)->getAttribute('quote');

    ну и ниже, перед кодом
    PHP:
     // Log
       
    $match = array();
    вставим
    PHP:
    // Quote
    if ($quote == 'true') {
        
    $search preg_quote($search);
    }


    Но для решения задачи иногда можно и обойтись, ведь можно найти строку, а дальше с помощью offset заменить несколько строк.
    Вот пример как я делал для крошек
    Код:
    <file path="catalog/view/theme/*/template/{product,information,checkout,account}/*.tpl">
        <operation>
            <search><![CDATA[
            <ul class="breadcrumb">
            ]]></search>
            <add position="replace" offset="4"><![CDATA[
            <ul class="breadcrumb">
            <?php $breadlast = array_pop($breadcrumbs); foreach ($breadcrumbs as $breadcrumb) { ?>
            <li><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li>
            <?php } ?>
            <li><?php echo $breadlast['text']; ?></li>
            </ul>
            ]]></add>
        </operation>
    </file>
     
    Последнее редактирование: 11 авг 2015
    Ecsiron, solunski.d и sold нравится это.
  3. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    Суперский пример, очень помог!
     
    Последнее редактирование: 21 авг 2016