Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Кастомная обработка для показать еще

  • 7 марта , редакция: 7 марта
  • Ребят, кто может в курсе, в файле paginator.inc.php можно увидеть сл.комментарий:
    Цитата

    // TO_DO: если аналагичный метод описан в класс Модуль_action, то будет задействован именно такой метод. По умолчанию задействуется метод в классе Модуль_model. То есть при необходимости можно перегрузить дефолтное поведение, создав аналогичный метод в класс Модуль_action.


    Если перевести на более понятный язык, то из этого будет ясно что если при вызове
    Код

    $this->diafan->_paginator->get()


    передать 2 аргумент, вместо стандартной обработки кнопки "показать еще" будет задействован action. Что очень круто, можно использовать свою обработку кнопки, и грузить самый разный контент.

    Но вот я что то не пойму, в файле init.php, в методе module() (стр. 699), мы видим подключение класса для работы кнопки "показать еще", загвоздка в том, что там жесткое условие на подключение, а именно

    Код

    if(! empty($_POST["more"]) && isset($_POST["mode"]) && $_POST["mode"] == 'model')


    $_POST['mode'] проверяется на model, а при кастомной обработке, передается action, это мы можем увидеть в paginator.inc.php

    Код

    $mode = $action && Controller::method_exists($module, 'action', $action) ? true : false;
    "mode" => $mode ? 'action' : 'model',


    А значит можно сделать вывод, что класс просто не подключается, может он подключается где то еще, кто может подсказать?

    Или если он нигде не подключается, а значит мой метод просто не вызывается, тогда зачем существует такой комментарий, или я не верно его понимаю?

    Если быть точнее, то мой метод из action вызывается, это факт, но только он вызывается стандартными средствами CMS, согласно обработке POST запросов, при условии что я в моймодуль.php указал как обрабатывать полученное значение из POST. Но это никакого отношения не имеет к работе "Показать еще"
  • 7 марта , редакция: 7 марта
  • TO_DO значит "сделать позже" или "в планах".

    • 7 марта
    • Понятно.
      Уже 2 года или даже 3 как есть эта кнопка, проще было не писать этот TO_DO.
      • 7 марта
      • Цитата

        проще было не писать этот TO_DO


        Так это и реализовано. Внимательно читайте:

        Цитата

        // TO_DO: если аналагичный метод описан в класс Модуль_action, то будет задействован именно такой метод. По умолчанию задействуется метод в классе Модуль_model. То есть при необходимости можно перегрузить дефолтное поведение, создав аналогичный метод в класс Модуль_action.
        • 8 марта
        • Виталий, ты все прочитал что я написал? При mode = action, класс More_action не вызывается. Я спросил где он тогда вызывается, раз это реализовано?

          Я не спрашивал реализовано это или нет, а попросил помочь.
    • 7 марта
    • Цитата

      TO_DO значит "сделать позже" или "в планах".


      В комментарии к коду обозначен не план на будущие, а то, что реализовано. То есть дефолтное поведение можно перегрузить в любом модуле как угодно. При этом в каждом модуле может быть именно своё поведение.
  • 8 марта , редакция: 8 марта
  • Виталий, на этот вопрос можешь ответить только ты, ну и Марина, только она тут не сидит. Насколько мне известно этот функционал написал ты, если ты говоришь что это реализовано, ответь, пожалуйста, где подключается класс для работы с показать еще "More_action", при mode = action?

    И раз уж написан комментарий, о том что это есть, может стоит в документацию это написать, порядок полный как с этим правильно работать?

    P.S. Для себя то я сразу все сделал и у меня все работает, но мне пришлось action.php полностью взять в custom, ибо методы в классе "More_action" не заменяются при replace и других метках, но еще была проблема что из module.action.php при вызове оттуда module->model->result, его обратно не получает класс More_action, мне пришлось написать какую то дичь, чтобы все заработало как надо.

    Если на такие сложные вопросы некому ответить, а именно вопросы связанные с коробкой (других я и не задаю уже несколько лет), честно, уже не вижу смысла оставаться тут с вами, я давно дорос до сложных задач, а эти палки в колоса поднадоели уже, не уверен что в другом месте лучше, но там точно на вопросы адекватно отвечают.

    И не нужно мне писать смотреть куда то внимательней, после того как я написал это

    Цитата

    Или если он нигде не подключается, а значит мой метод просто не вызывается, тогда зачем существует такой комментарий, или я не верно его понимаю?


    Сам смотри внимательней, прежде чем другим это писать.

    Еще P.S. я уже несколько раз находил коробочные ошибки (исправлял их), отправлял их Марине, с указанием что нужно поправить, но только ей не интересно, отправила меня на форум, и? Что дальше делать? Кому писать, ало? Хватит игнорировать.
    • 8 марта , редакция: 8 марта
    • Жесть, так он и не вызывается нигде, нашел я где есть mode = action, в отзывах, а ничего что там стандартная обработка post запроса? В контролере вызывается show, и в action мы видим тот самый show, где и подставляется пагинация. Скопированный тупо код из more_action.
      Это то самое о чем я написал выше
      Цитата

      Если быть точнее, то мой метод из action вызывается, это факт, но только он вызывается стандартными средствами CMS, согласно обработке POST
      запросов, при условии что я в моймодуль.php указал как обрабатывать полученное значение из POST. Но это никакого отношения не имеет к работе "Показать еще"


      Это ведь тупо полностью своя обработка, в чем смысл этого комментария тогда? Поясни
      Цитата

      // TO_DO: если аналагичный метод описан в класс Модуль_action, то будет задействован именно такой метод. По умолчанию задействуется метод в классе Модуль_model. То есть при необходимости можно перегрузить дефолтное поведение, создав аналогичный метод в класс Модуль_action.
    • 8 марта
    • Цитата
      Кому писать, ало? 

      В такой форме никому. И не только тут, а вообще, ни с кем не надо так разговаривать. Просто совет, в целом, касается любой области.
  • 8 марта , редакция: 8 марта
  • Цитата
    находил коробочные ошибки (исправлял их)

    Не для тебя, а для всех я скажу, что это уже большая накопленная масса устаревшей многолетней структуры 5.4, перешедшей в 6.0. Лепить костыли, исправляя проволокой и изолентой какие-то вещи, как исправляешь ты, и тем более внедряя новую функциональность мы решили, что не будем. У нас в конце февраля уже была обсуждена, спроектирована и заложена 7.0, в которую накоплено правильное исправление всех артефактов и новая функциональность
    • 8 марта , редакция: 8 марта
    • Цитата

      многолетней структуры 5.4, перешедшей в 6.0.


      Корзина новая написана в 6.0
      Импорт написан в 6.0
      Бекенд для заказов написан в 6.0
      Показать еще написано в 6.0
      • 8 марта
      • Ну вот видишь, для тебя даже 6.0 - это не 5.4 ;)
        Корзина - это первый проброс верстки нового демо-шаблона, уход от некоторых мигрирующих косяков из 5.4. Внедрили вроде, но не по маслу. Сделали выводы. Многие вещи только отметили на кардинальное исправление.
        Импорт новый написан с нуля, он универсален, но учитывает особенности 5.4, поэтому не без нюансов. А старый импорт так и лежит отдельно, его не стали даже улучшать.
        "Показать ещё" и остальные последние фишки наклеивались на 5.4 как сайдинг на старый кирпич, со смекалкой и хитростями, то через js, то через css
        "Защищённый режим" впендюривался тоже непросто и вынужденно, так как мы дали волю по кастомизацию, и всё начали её использовать надо и не надо, правильно и неправильно, через пень-колоду, а потом обновления падали сайты, несовместимость соседних дополнений, падение производительности... Это всё надо переделывать. К кастомизации у нас самих уже куча претензий, типа after, не имеющей смысла в функциях с return, она должна втыкаться до него. И пр. Короче, рефакторинг нужен большой. Ну и новая функциональность не пролезет в текущем алгоритме автообновления и тем более механизме откатов через upgrade/downgrade, у нас новые надёжные механизмы. Надёжность системы не должна зависеть и ложиться на плечи разработчиков дополнений и/или обновлений. Это всё переделается.
        • 8 марта , редакция: 8 марта
        • Цитата

          Короче, рефакторинг нужен большой.

          Мое первое сообщение в этой теме как раз для этого, а вместо того чтобы обсудить это тут начинается выяснение отношений не понятно зачем. Свои задачи то я сам в силе решить, просто хочется это сделать правильно, а иногда оно тупо не возможно, хотя об этом есть речь, и это дико не круто сидеть писать код, думая что оно обязано работать, а оно не работает, и ты сидишь и выясняешь а почему, пишешь на форум, а тебе "ты не внимательный, так не пиши, так не разговаривай, да и вообще ты кто такой" - я утрировал.
          • 8 марта
          • Цитата
            Мое первое сообщение в этой теме как раз для этого
            Степан, у тебя есть все личные контакты всех из тех, кто ответственный за концепцию, мои в том числе. Обсудить конструктивнее лично, всё внимание тебе в таком диалоге. А вот на форуме - это какая показуха непонятно для кого. Марина тут не сидит, Виталя тоже весьма прохладно относится к форуму, Паша тоже любит говорить конкретно, я не люблю этой истерики и пр.
            Цитата
            а тебе "ты не внимательный, так не пиши, так не разговаривай, да и вообще ты кто такой" - я утрировал.
            Всё мы люди. Ты грубо напал - получи ответную защитную реакцию. И часто такие перепалки заканчиваются переходом на личности и не приводят к результату. Пиши в Скайп, мол, мне надо то-то и то-то и всё решим.
            • 9 марта
            • Я никогда не был против писать лично, и ты точно это знаешь. Не будем тут продолжать эту тему, я тебя услышал, в сл.раз попробую. Но посмотри еще раз на эту цитату, пожалуйста:

              Цитата

              отправлял их Марине, с указанием что нужно поправить, но только ей не интересно, отправила меня на форум


              Это к тому, что я пытался))
  • 8 марта
  • Цитата

    У нас в конце февраля уже была обсуждена, спроектирована и заложена 7.0, в которую накоплено правильное исправление всех артефактов и новая функциональность


    Можно поподробнее, что и когда планируется и главное, что будет с теми шаблонами, которые есть сейчас и которые (скорее всего) без доработки ничего нового поддерживать не будут.
    • 8 марта , редакция: 8 марта
    • Планируем сохранить совместимость. Там же теги, а они никуда не денутся.
      Безусловно, если речь о новой функциональности, типа складов и наличия на них, всем партнёрам сообщим всё заранее и окажем поддержку по добавлению новых тегов в шаблоны.
      Но если не внедрять, ничего страшного не случится, в текущем виде они будут работать.
      Но не забегайте вперёд ) Мы всё анонсируем весной

Блоги

  • 16.11.2019
  • Достаточно широкой проблемой, которая вызывает множество вопросов, обращений в тех.поддержку и тем на форуме, является обновление, а именно ошибки, с ним связанные. Корни проблем, возникающих при этом, совершенно различны, но наиболее часто причина в кастомизации. И хоть определение это слишком широкое, всё же процедура выявления проблемы вполне стандартизована и проста. Об этом и пойдёт речь в статье.