• Кто подскажет как установить Мадженто 2.2 на ОпенСервер?

    @springimport
    Полтора года назад я был бы очень рад ответу на этот вопрос. Собственно, пишу.

    Во-первых, выкидывайте весь старый хлам и если уже делаете на винде, то используйте последние версии ПО, а именно: nginx-1.11, php-7.1-x64, mysql-5.7-x64. Маджента все это поддерживает без каких-либо проблем.
    На быстром ПК полезно будет настроить эту связку, как минимум, дав php больше памяти и включив opcache.
    Для понимания: раньше с конфигом как у вас с версией 2.0 страницы загружались около 30 секунд в режиме dev. Сейчас с частичными кэшами и последними версиями ПО страницы загружаются за 1-2 сек.

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

    В-третьих, для себя я использую файл Nginx-1.11_vhost.conf для поддержки nginx. Его нужно положить в папку домена.
    server {
        listen         %ip%:%httpport%;
        listen         %ip%:%httpsport% ssl;
        server_name    %host% %aliases%;
    
        ssl_certificate               "%sprogdir%/userdata/config/cert_files/server.crt";
        ssl_certificate_key           "%sprogdir%/userdata/config/cert_files/server.key";
        add_header Strict-Transport-Security "max-age=94608000; includeSubDomains; preload";
    
        set $MAGE_ROOT "%sprogdir%/domains/domainname.localhost";
        set $MAGE_MODE developer;
        include "%sprogdir%/domains/domainname.localhost/nginx.dev-local.conf";
    }

    Так же для dev-разработки я продублировал файл nginx.conf.sample (он идет с системой) в nginx-dev-local.conf. В нем достаточно заменить все fastcgi_pass с fastcgi_backend на backend.

    В-четвертых, мне хорошо зашел phpstorm с плагинами для мадженты. Стоит попробовать если еще не пробовали.
    Ответ написан
  • Почему медленно работает localhost?

    @springimport Автор вопроса
    Проблема решилась сама собой. Задержка не стала 0, но и не секунда.

    А curl -o /dev/null -s -w %{time_total} example.localhost всегда выдавал без задержки.
    Ответ написан
    Комментировать
  • Возможно ли для composer иметь несколько auth-файлов?

    @springimport Автор вопроса
    Нашел ответ: нет поддержки разных конфигураций за исключением конфигурации в папке проекта, но это не рекомендуется.

    https://github.com/composer/composer/issues/5434
    Ответ написан
    Комментировать
  • Как в Yii2 удалять блоки в Cache?

    @springimport Автор вопроса
    Нашел. Нужно использовать так называемые Cache Tags которые уже реализованы в yii.
    Ответ написан
    Комментировать
  • Как выводить ошибку если баланс меньше суммы?

    @springimport
    Надеюсь что вы придете на светлую сторону чистого кода.

    А решение без исключений будет выглядеть как-то так.

    function add_deport($val) {
        $expected = array(
            'link' => '',
            'type' => '',
            'reason' => ''
        );
    
        extract(array_merge($expected, $val));
        $time = time();
        $db = db();
        $user_id = get_userid();
        $link = sanitizeText($link);
        $type = sanitizeText($type);
        $reason = sanitizeText($reason);
        $credit = get_creditgift_balance($user_id); // отображает баланс пользователя
        $balance = $credit[0]['credit_balance'];
        $amount = 10; // сума транзакции
    
        if ($amount < $balance) {
            $new_balance = $balance - $amount;
            $db->query("UPDATE users SET credit_balance='$new_balance' WHERE id='$user_id'");
            $db->query("INSERT INTO deports (user_id, type, link, message, time) VALUES('" . $user_id . "', '" . $type . "', '" . $link . "', '" . $reason . "', '" . $time . "')");
            fire_hook('deport.added', null, array($val));
    
            if (has_deported($link, $user_id)) {
                return true;
            }
        }
        
        return false;
    }
    Ответ написан
    Комментировать
  • Самый быстрый веб-сервер php для windows?

    @springimport
    Сижу на OpenServer на php 5.6. На OpenServer потому что Docker имеет проблему со скоростью в shared-папках, на линуксе (убунте) шрифты и интерфейс не то. А php 5.6 потому что проект так сейчас требует. И получается довольно медленно все. Примерно в 3-5 раза медленее чем в линуксе.

    Что может помочь ускорить работу:
    - если в проекте есть кэш, то включить, хотя бы частично;
    - opcache наше все, обязательно;
    - переход (в моем случае, например) на PHP 7 или 7.1;
    - SSD (даст как в сумме все вышеперечисленное).

    Apache менять на Ngnix не вижу вообще смысла. На сами запросы тратится меньше 1% по сравнению с работой PHP и MySQL.
    Ответ написан
    Комментировать
  • Как установить тему на magento2?

    @springimport
    Есть несколько способов, зависит от того откуда берется тема. Документация.

    Вкратце: нужно скачать/положить тему в проект, в админке зайти в настройки (Content > Design > Themes) и выбрать ее.
    Ответ написан
    4 комментария
  • Как сделать замену с массивом с помощью регулярных выражений?

    @springimport Автор вопроса
    Думаю что нашел решение вопроса. Выглядит правильным.

    <?php
    
    //$string = "Carrier with such method not found: %, %";
    //$string = "Carrier with such method not found: %1, %2";
    //$string = "Carrier with such method not found: %2, %3";
    $string = "Carrier with such method not found: %1, %1";
    $replacements = [
        'ups',
        'GND'
    ];
    
    echo preg_replace_callback('/\%(\w+)/', function($matches) use (&$replacements) {
        return array_shift($replacements);
    }, $string);
    Ответ написан
  • Как сделать выход из аккаунта во всех открытых вкладках?

    @springimport
    Да, можно сделать так. Куча же вариантов.
    Ответ написан
    Комментировать
  • Как сгенерировать форму на JS из JSON?

    @springimport Автор вопроса
    Решение получилось вот такое.

    var generateInputs = function(name, data, form) {
        var content = '';
        
        if (data !== null && data !== undefined) {
            if (typeof data === 'object') {
                for (var key in data) {
                    if (!data.hasOwnProperty(key)) {
                        continue;
                    }
                    var value = data[key];
    
                    var deedName = (!name) ? name + key : name + '[' + key + ']';
                    content += generateInputs(deedName, value, form);
                }
            } else {
                // append input control at end of form
                $('<input type="hidden">')
                    .attr('name', name)
                    .attr('value', data)
                    .appendTo(form);
                content += '<input type="hidden" name="' + name + '" value="' + data + '">';
            }
        }
    
        return content;
    };
    Ответ написан
    Комментировать
  • Почему из переменной не вычитается значение?

    @springimport
    Откройте для себя https://learn.javascript.ru/switch для начала. А потом напишите console.log(shakeHP) в начале функции.
    Ответ написан
    Комментировать
  • JS фреймворки и тупик в развитии навыков?

    @springimport
    Мне кажется многие вообще не поняли проблему и пытаются дать советы как сделать заглушку для json. Сейчас бы решать проблемы с заглушками...

    Автор, как я понял, хочет понять как сдавать верстку которая требует динамического интерфейса.

    Случай №1.
    Автор берет абстрактный vue.js и лепит интерфейс и ... заглушку, конечно :)
    Заказчик получает чек на некую сумму куда будет включены часы работы над интерфейсом. Довольный заказчик идет нанимать программистов, а те смотрят на него как на дурака и говорят что на vue.js уже давно никто ничего не делает и предлагают использовать модный-молодежный ХХХ фреймворк. Понятно что ситуация из учебника.
    Случай №2.

    Автор делает заглушку... нет, не ту заглушку которую тут все хотят сделать. А заглушку в самом интерфейсе, без логики. Остается вопрос как сделать верстку для динамических частей. Это, собственно, и спрашивал автор.
    Заказчик в этом случае получает почти готовую верстку, но с некоторыми особенностями. Вполне приемлемый вариант.

    Случай №3.
    Автор находит компаньона и предлагает новую услугу: верстка + программирование интерфейса. Этот вариант выглядит наиболее оптимально с моей точки зрения. Все хорошо, все довольны.

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

    В общем, я бы посоветовал найти партнера.
    Ответ написан
    Комментировать
  • Как аргументировать начальству создание существующего проекта заново, с ноля?

    @springimport
    Прямо скажем - ситуация не айс и переписывать вряд ли дадут. А даже если так то кто благодарить будет? Никто.

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

    @springimport
    OpenCart может поставляться через composer (если я не ошибаюсь), а для composer'а есть расширения для патчинга пакетов. Можно так попробовать. Но у OP вся проблема в архитектуре и ничего тут не сделаешь.

    Если хотите по-настоящему расширяемую систему, то попробуйте magento 2. Можно расширять, переопределять да и вообще делать все что захочется не касаясь ядра. Правда, у вас должен быть хороший опыт. Система нереально сложная и требует огромного количества времени.
    Ответ написан
  • Как добавить источники в composer.json?

    @springimport Автор вопроса
    Как и предполагал, нужно просто добавить еще один ресурс.

    "repositories": [
        {
            "type": "composer",
            "url": "https://repo.magento.com/"
        },
        {
            "type": "composer",
            "url": "https://packagist.org/"
        }
    ],


    Подсказка.
    Ответ написан
    Комментировать
  • Как правильно генерировать ключевые слова?

    @springimport
    Скрипты точно есть.

    Общий алгоритм прост: текст разбивается на слова, выкидываются: запятые, точки и другой мусор. Убираются стоп-слова. Потом массив сортируется по количеству повторений. В зависимости от требований берется первый десяток слов, к примеру.
    Ответ написан
    1 комментарий
  • В чем ошибка при создании модуля?

    @springimport
    Не знаю, актуально ли еще? Ну да ладно.

    Во-первых, активируйте режим разработчика. Это даст возможность увидеть ошибки прямо на странице.
    Во-вторых, вы пишите app/Dev.... когда должно быть app/code/Dev.....
    В-третьих, модуль включается так: php -f bin/magento module:enable MyVendor_Module. Вы так включали?

    Кстати, у вас контроллер не полный, посмотрите гайд еще раз.
    Ответ написан
    Комментировать
  • Проект в Netbeans?

    @springimport
    Обычно это происходит когда файлов по заданному пути нет.
    Путь складывается с части из подключения, например, /www/data и пути самого проекта, например, projectXXX. В итоге путь = /www/data/projectXXX.
    Ответ написан
    Комментировать