OptimBlog – блог для Opencart 3

Тема в разделе "Готовые модули и модификаторы. Бесплатно", создана пользователем optimlab, 9 июн 2018.

  1. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Функционал и возможности модуля OptimBlog
    Категории:
    1. Заголовок H1
    2. Краткое описание
      Можно вывести в категории с помощью: {{ short_description }}.
    3. Дополнительные изображения
      Можно вывести в категории с помощью:
      {% for image in images %} -> {{ image.thumb }} , {{ image.popup }} .
    Товары:
    1. Заголовок H1
    2. Краткое описание
      Можно вывести в категории и в модулях выводящих товары с помощью:
      {{ short_description }}.
    3. Главная категория
      Используется для определения хлебных крошек в «URL от базового домена» находящихся в индексе Поисковых Систем.
      Для правильной настройки свойства canonical на разных URL товара.
    4. Рекомендуемые товары
      Нет добавления товара самого на себя.
      Рекомендовать можно в трёх направлениях: на товар, от товара, в обе стороны.
    5. Рекомендуемые статьи
      Рекомендовать можно в трёх направлениях: на статью, от статьи, в обе стороны.
    Статьи:
    1. Заголовок H1
    2. Краткое описание
      Можно вывести в категории и в модулях выводящих товары с помощью:
      {{ short_description }}.
    3. Основное изображение
    4. Дополнительные изображения
    5. Главная категория
      Используется для определения хлебных крошек в «URL от базового домена» находящихся в индексе Поисковых Систем.
      Для правильной настройки свойства canonical на разных URL статьи.
    6. Рекомендуемые статьи
      Нет добавления статьи саму на себя.
      Рекомендовать можно в трёх направлениях: на статью, от статьи, в обе стороны.
    7. Рекомендуемые товары
      Рекомендовать можно в трёх направлениях: на товар, от товара, в обе стороны.
    8. Теги
    9. Дата добавления статьи
    10. Дата начала и конца публикации статьи
    11. Автор
    12. Атрибуты
    Возможности для разработчиков:
    1. Заложены на будущее некоторые функции и возможности, которые разработчики могут использовать для создания своих модулей. Например: «дополнительные изображения» в настройках категории, можно выводить с помощью слайдера. А «Производителя» использовать для соответствующих привязок и сортировок.
    2. Модули разработчиков связанные с выводом товаров, можно легко переопределить для Статей. Так как php-код контролеров и моделей практически зеркальный.
    3. Использовалась верстка с классами Bootstrap 3. Что можно легко использовать для своих шаблонов без лишних заморочек и потерей времени.

    Концепция и отличие от других блогов для Опенкарт.
    Концепция и основная идея
    1. Категории присваивается тип — Товар/Статья.
    2. Функционал Статьи расширяется аналогично функционалу Товара.
    3. Отзывы аналогично категориям разделены на 2 типа — Товар/Статья.
      А также добавлена возможность вывода «Ответа магазина» на «Отзыв» с использованием HTML.
    4. Данный модуль блога не заменяет родных файлов Opencart 3.
    5. Сохранена концепция Опенкарт в названиях и определениях, а также сохранён привычный для администратора магазина внешний вид интерфейса.
    6. Нет конфликтов по SEO URL, так как используется штатный функционал Opencart. Который вы можете расширить приложенными модификаторами.
    7. Модуль на 90% состоит из файлов модификаторов, которые можно удалить или отключить в любое время.
    Другие блоги для Opencart 3
    Большинство (как бы не 100%, аналогов не видел) модулей блогов и других аналогичных используют концепцию клонирования программного кода(контроллеров и сопутствующих файлов - Model-View-Controller) категорий товаров и самих товаров, превращая скрипты:
    1. «категорию товаров» → «категорию статей»
    2. «товар» → «статья»
    3. клонирование таблиц Базы Данных аналогично категориям и товарам.
    Такой подход вызывает много конфликтов. Например наименования таблиц при смене одного модуля на другой совпадали, а неопытные пользователи недоумевали от полученных ошибок и не понимали причины. Ошибок и несостыковок на практике было более чем достаточно. Описывать их все тут не имеет смысла..


    Состав модулей и модификаторов OptimBlog
    1. OptimBlog — Главный модуль.
    2. Модификатор «Admin Filter».
    3. Модуль «Новые статьи».
    4. Модуль «Лучшие статьи».
    5. Модуль «Рекомендуемые статьи».
    6. Модуль «Категории статей».
    7. Модуль «Поиск статей».
    8. Адаптация под шаблон Frame.
    Адаптация под свой шаблон:
    Если ваш шаблон отличается от шаблона по умолчанию, то необходимо сгенерировать в модуле дополнительный модификатор. Скачайте и установите модификатор .ocmod.zip под свой шаблон. Если он не помог или помог не полностью, то нужно самостоятельно разобраться исправив его или заказать адаптацию под ваш шаблон. Так же необходимо знать, что шаблон категории статей находится по пути catalog/view/theme/default/template/information/category.twig.


    Установка OptimBlog:
    1. Установить optimblog.ocmod.zip.

    2. Обновить кэш модификаторов.

    3. Активируйте модуль OptimBlog для своего магазина.

    4. Редактируйте настройки модуля OptimBlog и сохраните.

    5. Добавьте макет для Категории статей, если его нет.
      Зайти в «Дизайн» -> «Макеты».
      Добавить Макет: «Category Information».
      Добавить Путь: information/category
      Добавить модули.
      Сохранить.

    6. Добавьте макет для Результатов поиска статей, если его нет.
      Зайти в «Дизайн» -> «Макеты».
      Добавить Макет: «Search Information».
      Добавить Путь: information/search
      Добавить модули.
      Сохранить.

    Информация:

    Демо: http://demo.optimcart.com
    Админка: http://demo.optimcart.com/admin

    GitHub: https://github.com/optimlab/optimblog


    Обновление c 3.0.0.x до 3.0.1.x:

    1. В выпадающем списке раздела «Модули / Расширения» выберите «Статьи».
    2. Деактивируйте модуль OptimBlog.
    3. Скчайте новые версии модулей и модификаторов модуля OptimBlog.
    4. Зайдите в «Модули / Расширения» -> «Установка расширений».
    5. Удалите старые версий модулей и модификаторов модуля OptimBlog.
    6. Установите новые версии модулей и модификаторов модуля OptimBlog.
    7. Следуйте инструкциям по установке модулей..

    3.1.0.1
    1. Исправлена карта сайта.
    2. Исправлено автозаполнение Статей и Категорий.
    3.1.0.0
    1. Упрощена установка.
    2. Новая структура файлов.
    3. Переименованны расширения OptimBlog.
    4. Установка расширений и модулей внутри OptimBlog.
    5. Переименование файла резервной копии настроек.
    6. Новый путь в макете «Category Information».
    7. Генератор адаптации темы ".ocmod.zip".
    8. Отмена загрузки модели товара через событие, возврат к модификатору.
    9. Исправлены макеты Категорий статей.
    3.0.1.5
    1. Добавлены правила исключений для всех статей в категории.
    3.0.1.4
    1. Добавлен отдельный файл шаблона Категорий статей.
    2. Исправлен баг Google Captcha.
    3.0.1.3
    1. Расширен языковой пакет от модификатора «Фильтр Админки для Категорий, Товаров и Статей».
    2. Исправлен баг автозаполнения категорий.
    3.0.1.2
    1. Адаптация под шаблон Frame.
    2. Защита от ошибки #8043.
    3. Исправления слайдера Swiper в дополнительных изображениях статьи.
    4. Удаление кнопки «Продолжить», если нет статей и категория используется как Страница.
    5. Мелкие исправления.
    3.0.1.1
    1. Исправлен вывод главного изображения статьи.
    2. Активация вывода скриптов дополнительных изображений в «footer».
    3. Исправлена длинна краткого описания в рекомендуемых статьях.
    4. Добавлены индексы в модули статей.
    3.0.1.0
    1. Frontend-код переписан заново.
    2. Отказ от OCMOD в пользу Events System.
    3. Упрощена установка.
    4. Возможность добавлять свой перевод.
    5. Добавлена настройка «Canonical URL» для категорий и статей.
    6. Добавлена настройка «Хлебных крошек» для категорий, товаров и статей.
    7. Резервное Копирование и Восстановление
    8. Управление кодом «Поделиться».
    9. Улучшены интуитивно-понятные настройки модуля.
    10. Отдельный файл контроллера для Категорий статей, включающийся через Events System.
    11. Обновлена Инструкция по установке.
    12. Обновлено Описание модуля.
     
    Последнее редактирование: 6 апр 2022
    RoS, APCEN, Romans и 3 другим нравится это.
  2. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Модуль Тестировался на Русской сборке OpenCart 3.0.2.0 (rs.3).

    Новое описание, инструкция и версии будут тут: OptimBlog – блог для Opencart 3
     
    Последнее редактирование: 23 июн 2018
  3. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Вопрос. А почему все в модификаторах? Ведь многое можно вынести в контроллер.. удобно ведь. Ну а так, конечно ++++
     
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    а может лучше иметь свой преобразователь?
    ведь addrewrite зачем-то был сделан, но не доведен до логичного окончания.
    И не надо никуда встраиваться.
     
  5. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Ну, есть же событие

    Например

    Код:
          <operation error="skip">
            <search><![CDATA[description = '" . $this->db->escape($value['description']) . "', ]]></search>
            <add position="replace"><![CDATA[header = '" . $this->db->escape($value['header']) . "', short_description = '" . $this->db->escape($value['short_description']) . "', description = '" . $this->db->escape($value['description']) . "', ]]></add>
          </operation>
    

    И вот кто-то пришел, и а там ваш код.. и .. баста карапузики
    На чем экономите, на одном двух update

    Не надо менять так код..

    Кроме того, вы например добавляете целый таб в админку

    А че нельзя сделать это как-то через view, т.е. и в основном шаблоне только вывод вашего шаблона, и.. не нарушает порядок основных блоков

    видел такое replace offset=128 т.е. в этот блок уже не влезть

    Кроме того, можно вызвав событие after view, немного упростить окмоды в шаблонах

    Т.е.основной ocmod становится простым, наглядным, управляемым
     
  6. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Или вот

    вы добавляете в модель свои методы..

    Да проще подключить свою модель, и вызывать ее методы, чем в случае необходимости править километровый файл
     
  7. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Для полной совместимости с Темами. Контроллер категории я тоже хотел вынести, но что-то меня остановило, уже не помню что. По моему там был "тупиковый маршрут".
     
  8. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Chukcha, блин бро, завалил пул-реквестами. Я уже стакан винца опрокинул и вообще стало неохото думать...))))
    Предлагаю пока их скопить и тут пока не писать.

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

    Приятных выходных!
     
  9. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    только Алазанская долина, или Киндзмараули
    Но лучше - ирландский самогон. :)

    Прям таки завалил :)
    Не буду форкать..
    Причину я попытаюсь объяснить

    С точки зрения ООП
    Страница в вебе Это всего лишь некий объект page
    Который может иметь тип - категория, товар, статья и прочее, но!!! обладающая общими свойствами, такие как
    title, seo tags, slug

    В зависимости от типа, страница может расширяться дополнительными свойствами - например,
    товар иметь атрибуты и опции
    А категория иметь parent_id


    И тогда ..ну.. далее все просто (почти)

    Имеем ОГРОМНУЮ родительскую таблицу (впрочем это почти идеология ВП - getpost(), так кажется?
    Но по сути методы и модели только дополняются,

    Опенкарт пошел немного другим путем.
    Сущность - таблица, соответственно, методы, модели для каждой сущности
    Отсюда и обилие различных моделей..
    Ну вот пример

    product - name
    information - title
    С какого перепугу?

    То что вы предлагаете - прекрасно (ну, я не глубоко смотрел, а так вскользь)
    километровый окмод - убил

    Поддерживать такое - не зна...

    Я делаю след..(расскрою секрет)

    $this->laod->model('my_model')
    $data = array_merge($data, $this->model->my_model(нужное)

    или
    $this->laod->model('my_model')
    $data['my_module'] = $this->model->my_model->method(нужное) // так можно делать
    И.. для админки это нормально, потому что модель не требует валидации permission

    Т.е., минимальное вмешательство, все выношу во внешние файлы

    И вы увидите, что ваш окмод превратится в элегантные шорты (с)


    ps Если что, это не я, это - ирландец.
     
    pomansur нравится это.
  10. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    Однозначно плюс за труды, но минус за подход. Модификаторы должны использоваться по минимуму....
    С наступающим праздником!!!!!
     
  11. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
  12. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Это как раз я и не хотел. Я старался сделать всё по минимуму и чтоб было совместимо. Да модели статей в некоторых местах пришлось перепрошить полностью. Но новая модель отвечает всем требованиям прошлого запроса и не должна мешать другим модулям пользоваться ей.
    Все сделано для того чтоб было максимально эффективно переходить с версии на версию. И подходили модули. Да возможно новые модификаторы могут не попасть или не найти нужный код. Но а вы когда нить видели чтоб модификаторы от разных разрабов работали в унисон? Такого не бывает. Это на грани фантастики. Для этого есть штатный программист в магазине, который должен в этом всём разбираться...
    Ну а если нет штатного - у кого-то на форуме появляется заказ....
     
  13. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Вот как раз по минимуму мое решение

    Я имею шаблон поля, и я его рисую в контроллере

    Передавая туда нужные данные
    Таким образом - в самом шаблоне это {{ my_field }}
    а в контроллере, например

    $data['myField'] = $this->model->getMyField($data)

    Ну просто нереально огромный модификатор, и еще с языковыми переменными

    + использование событий..
     
  14. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Это матрешка. Я понял что вы предлагаете. Я как раз и не хочу этого. То что вы предлагаете используется сейчас в комон хейдер и футер. И что? Ничего хорошего. Я как раз следующий модуль задумал чтоб можно было наоборот создавать свои позиции в шаблоне и внедлять в эти лайауты модули. Т.е. я хочу распотрошить хейдер и футер на склееные там модули и будет счастье!))

    Я против матрешек! Буду соблюдать опенкартовский MVC.

    Блин вот кто-то матрешек любит, что-то вообще антипод - модель+контроллер в одном файле...))))

    https://shop.opencart-russia.ru/optimlab
    Последняя фраза)))

    [​IMG]
     
    Последнее редактирование: 14 июн 2018
  15. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Как ничего?

    Своя сущность - свой контроллер (модель)

    И.. свои языковые данные..

    А если многоязычный сайт?
     
  16. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Ну мне не нравится когда контроллер подключает еще кучу контроллеров, а в них еще подключения.. Хейдер по сути состоит и модуля закладок, поиска, корзины и меню. Че нельзя разве было это всё разделить?
    А клиент недавно спрашивает, а как ему меню вставить в блок "top".
    И вот как ему объяснить?
    Да я пока объясню...мне быстрее сделать чем объяснить...
    Кстати, да! Думал о языковом фреймворке и отложил..
    Я пока еще думаю, может еще чего добавить из переменных...
    Сегодня думаю: "а напишу ка я в инструкции, что можно менять языковые переменные в языковом редакторе..." Начал менять... А оно не тут то было!
    В результате узнал, что: https://github.com/opencart/opencart/issues/6672 :(

    Там у меня уже есть недоделка со скрытием страниц в зависимости от костумерсов-гуестов, и фильтрацией, но я это вырезал из основного релиза, так как большинству это не нужно. И там лишние джойны к БД. Скорее всего будет доп-модификация.
     
    Последнее редактирование: 14 июн 2018
  17. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    А в чем проблема?

    Вот мое мнение таково
    офтоп:

    Как должен выглядеть шаблон

    {{ header }}
    {{column_left}}
    {{ content }}
    {{column_right}}
    {{footer}}
    ОДИН!!! Для всех
    может дополнительно, еще несколько фиксированных дополнительных позиций
    + небольшой фикс для оптимизации, в случае большого количества используемых модулей (позиций)
    на каждую позицию до двух запросов

    Инициализация
    {{ content }}

    {{column_left}}
    {{column_right}}

    {{footer}}
    {{ header }}

    Далее, каждый контроллер, может иметь свои позиции - контроллере

    header
    {{ head }}
    {{ top }}
    {{ language }}
    {{ currency }}
    {{ search }}
    {{ menu }}

    и т.д

    Тогда это получается красивый, удобный, настраиваемый MVC c ООП

    А не эта "поделка" с которой нужно смириться.

    конец офтопа

    Это я все к тому, что нужно уходить от портянок

    оффтоп 2
    Вот я делаю так (стал делать)
    Например в админке, мне нужно обратиться куда-то к своему модулю
    Я не делаю огормной вставки в контроллер - сложно править
    Я тупо объявляю метод в родительcком

    public myMethod {
    mymodel
    myModel->myMethod()
    }

    Т.е. нет проверки на access моего контроллера
    ускорена возможность отладки и апдейта - апдейтятся только файлы

    А в вашем случае? нужно проапдейдить весь модификатор
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Кстати, сюда входят и отдельный контроллер или view для хлебных крошек и пагинации

    Ну почему пагинация вынесена в либу, а ХК нет
     
  19. optimlab

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

    Сообщения:
    924
    Симпатии:
    240
    Итак, кто хочет предложить что-то. Делаем реквест на Гитхабе. Специально для этого залил.
    Вырезал из категории часть отвечающую за шаблоны, для того чтоб вы могли сделать копию для своего шаблона.

    Прошу не писать загадками и прочими намеками. Делаем реквест и все. Так будет быстрее, чем чернила тут тратить.
     
  20. Korko

    Korko Новичок

    Сообщения:
    7
    Симпатии:
    0
    [QUOTE="XDX, post: 52061, member: 390"

    Добрый день!
    Я скачал с сайта все 14 файлов, сначала загрузил все. Изменений не произошло. Потом сделал все как у вс написано в форуме, в выпадающем меню нет "статьи" при загрузке первого файла появляется такая картинка, не знаю так и должно быть?
     

    Вложения: