На форуме 9558 тем, 76452 сообщений, 44664 участников
тема · 1 351 просмотр · 5 ответов

Создание своего ocmod'а

Модули и дополнения
читают: 0 участников и 1 гость
порядок
13 июл 2017 19:30#1
Прочитал документацию, все равно не получается сделать замену. Покажите пожалуйста на примере.

Имеется код

code
<?php if ($logo) { ?>
                        
                        <!-- Logo -->
                        <div class="logo"><a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></a></div>
                        <?php } ?>


Необходимо заменить на
code
<?php if ($logo) { ?>
                        
                        <!-- Logo -->
                        <?php if ($class != 'common-home') { ?>
                        <div class="logo"><a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" width="170" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></a></div>
                        <?php } else { ?>
                        <div class="logo"><img src="<?php echo $logo; ?>" width="170" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></div>
                        <?php } ?>
                        <?php } ?>


Пишу следующий ocmod
code
<operation>
        <search><![CDATA[   
        <?php if ($logo) { ?>
        <!-- Logo -->
        <div class="logo"><a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></a></div>
        <?php } ?>
        ]]></search>
        <add position="replace"><![CDATA[
        <?php if ($logo) { ?>
        <!-- Logo -->
        <?php if ($class != 'common-home') { ?>
        <div class="logo"><a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" width="170" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></a></div>
        <?php } else { ?>
        <div class="logo"><img src="<?php echo $logo; ?>" width="170" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></div>
        <?php } ?>
        <?php } ?>
        ]]></add>
    </operation>


Система пишет
Цитата:NOT FOUND - OPERATIONS ABORTED!


Спасибо.
13 июл 2017 21:10· изменено#3
Chukcha написал(а): ↑Поиск происходит только в одной строке!!!!

Спасибо тебе мил человек :) Получилось, вот только теперь другая проблема, модификатор не применяется на сайте, то есть все создалось, ошибок нет, а на фронте без изменений.

upd. Разобрался, оказывается проблемы была в самой теме, путь был прописан еще в одном файле и система брала не кэшированный а оригинальный файл
19 июл 2017 17:31#4
Такой вопрос, нужно удалить кусок кода из темплейта, как это правильно сделать? Единственно что придумал, это указать начало строки, допустим
code
<?php if ($review_status) { ?>
и реплейс с офсетом
code
<add position="replace" offset="30">
правильно так делать? Или есть более элегантный способ?
19 июл 2017 19:37#5
Вроде так все и делают. Если не нет желания удалять все, то можно той же заменой но одной строки, например на
php
<?php if ($review_status == 9999) { ?>
23 июл 2017 20:34#6
Я иногда предпочитаю закомментировать такой код
Т.е. найти точку входа и точку выхода

<add position="before"><?php /*

<add position="after"> */ ?>

причина - чтобы не сломать работу другого модификатора, если ему понадобится.
сообщения 1–6 из 6
Чтобы ответить, войдите или зарегистрируйтесь.

Похожие темы