Делаю модификатор для генерации мета-тегов

Тема в разделе "Обо всём", создана пользователем DeCeRt, 16 ноя 2015.

  1. DeCeRt

    DeCeRt Новичок

    Сообщения:
    18
    Симпатии:
    7
    Всем привет!

    Хотел тут сделать модификатор для генерации мета-тегов по шаблонам. Генерация работает, все круто, но пытаюсь убрать обязательность заполнения поля title, и что-то работает не так.

    В связи с чем у меня пара вопросов по ocmod.

    1. Мне нужно удалить несколько строк из файла admin/controller/catalog/product.php

    Я реализовал это так:

    Код:
    <file path="admin/controller/catalog/product.php">
        <operation>
            <search><![CDATA[if ((utf8_strlen($value['meta_title']) < 3) || (utf8_strlen($value['meta_title']) > 255)) {
                    $this->error['meta_title'][$language_id] = $this->language->get('error_meta_title');
                }]]></search>
            <add position="replace"><![CDATA[]]></add>
        </operation>
    </file>
    Не работает. Подозреваю, что в <search> нельзя пихать три строки сразу или нельзя использовать замену на ни что.

    2. Далее мне нужно дважды изменить абсолютно одинаковый кусок кода из файла admin\model\catalog\product.php

    Я реализовал это так:

    Код:
    <file path="admin\model\catalog\product.php">
        <operation>
            <search><![CDATA[$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_title = '" . $this->db->escape($value['meta_title']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");]]></search>
            <add position="replace"><![CDATA[$this->db->query("INSERT INTO " . DB_PREFIX . "product_description SET product_id = '" . (int)$product_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "', tag = '" . $this->db->escape($value['tag']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "'");]]></add>
        </operation>
    </file>
    Это позволяет изменить код один раз. Чтобы изменить второй такой же кусок, мне нужно ещё раз эту же инструкцию сделать?

    Прошу не пинать, только разбираюсь ещё. В благодарность за помощь модуль будет выложен для всех.
     
    Последнее редактирование: 16 ноя 2015
  2. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.438
    Симпатии:
    780
    по умолчанию многострочного поиска нет. Пользуйтесь смещением offset . описано в документации

    Сколько раз найдет строку, столько раз ее и заменит или удалит. Если не указаны ограничения. О ограничениях читайте в документации.
     
    DeCeRt нравится это.
  3. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    обязательно рекламировать свой блог посредством форума? Ведь не для этого тут люди помогают, чтобы кто то куда то решения выкладывал. Распишите тут как и что сделали и модификатор положите.
     
    Romans нравится это.
  4. DeCeRt

    DeCeRt Новичок

    Сообщения:
    18
    Симпатии:
    7
    Даже при бесплатности модуля обычно ссылаются на автора. Удивлен, что Вас так возмутило, что я указал ссылку на подробную инструкцию по установке и настройке у себя в блоге. Все обновления, если обнаружены ошибки, я выкладываю у себя (что логично, ведь правда? модуль размещен ведь не только здесь), и, соответственно, люди могли получить всегда актуальную версию.

    Также мне непонятно почему я не могу выложить решение, которое написал, в свой блог? Но раз нет, то на нет и суда нет.

    Тогда просто спасибо, что помогли разобраться с некоторым функционалом ocmod.
     
    Последнее редактирование: 16 ноя 2015
  5. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Я что то пропустил? Вы что то утаили? )) Выкладывайте решение сюда.... не надо никакие блоги.. Помогли тут вам, помогите тут другим.
     
  6. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    все это детские отговорки, извините если обидел. Хотите чтобы вам помогали, так помогайте другим в рамках форума.
    Никому не нужны типа обновления, людям нужно решение!

    Мне понятно ваше желание заработать с формочкой принять деньги. Но скажу вам по секрету, что у людей с репутацией на форуме (а ее заработать такими методами как у вас сложно) зарабатывают не на пожертвованиях, а на реальных задачах в разы больше и без усилий с блогом и прочими премудростями. Одна только грамотная статья в инструкциях приносит прямой доход...
     
  7. DeCeRt

    DeCeRt Новичок

    Сообщения:
    18
    Симпатии:
    7
    Влад, я не зарабатываю на модулях, поэтому выкладываю их бесплатно. Я зарабатываю на основной своей деятельности - seo. Формочка лишь приятное дополнение, что твою работу кто-то оценил. Зарабатывать здесь репутацию человека, который занимается допиливанием опенкарта нет смысла, я не программист, не занимаюсь доработками. У меня недостаточно для этого знаний. Модификаторы появляются только потому что пилю свой магазин. Собственно, поэтому сюда и попал.

    Не согласен. С модулем меню, например, уже выходило несколько обновлений, так как допустил пару ошибок. Можете посмотреть сколько комментариев к статье о меню, где люди пишут об этом.

    Файл с модификатором во вложении.

    Краткая инструкция:
    1. Скачайте архив и распакуйте его;
    2. Откройте файл meta.ocmod.xml с помощью текстового редактора;
    3. В части file path="catalog/controller/product/category.php" измените шаблоны тегов для разделов на свои;
    4. В части file path="catalog/controller/product/product.php" аналогично измените шаблоны тегов для элементов на свои;
    5. Залейте файл модификатора в папку system в корне сайта. После того, как файл будет залит, обязательно зайдите в административную панель -> модули -> модификаторы и нажмите кнопку «Обновить» в правом верхнем углу.
     

    Вложения:

    • meta_v1.1.zip
      Размер файла:
      1,3 КБ
      Просмотров:
      11
    Bkmz, RoS, Ален и ещё 1-му нравится это.