• Какой модуль есть для отображения категорий в виде фотографий для opencart 4.0.1.1?

    nefone
    @nefone
    Junior PHP разработчик
    Тут модуль не требуется.
    Надо менять верстку выводе катерий в шаблоне: product/category.twig
    Ответ написан
    Комментировать
  • Как решить проблему Error: Could not load config default!?

    nefone
    @nefone
    Junior PHP разработчик
    Такая же проблема возникла при переносе сайта на OpenCart с одного домена на другой.
    Решил в несколько шагов:
    Сначала проверил наличие файла: system/config/default.php
    Потом занялся отладкой путей прописанных в константах в файлах:
    config.php из корневой директории и admin/config.php , оказалось что не все константы указывали правильные пути на новом сервере.
    Ответ написан
    Комментировать
  • Почему в кастомном виджете пишется "Устаревший виджет"?

    nefone
    @nefone
    Junior PHP разработчик
    Начиная с WordPress версии 5.8 "классические" виджеты стали не актуальными.
    На замену им пришли блоки из редактора записей Guttenberg.
    Что бы вернуть поддержку классических виджетов, есть плагин Classic Widgets, но поддержка его не обещает быть вечной.

    P.S. а вообще актуальнее будет осваивать новые возможности - это дает больше плюсов и более эффективно позволяет решать задачи.
    Ответ написан
    Комментировать
  • Как поэтапно раскрыть/скрыть пост?

    nefone
    @nefone
    Junior PHP разработчик
    Можно использовать jQuery, по клику на кнопке вызывать:
    fadeIn()
    fadeOut()
    на требуемых блоках.
    Ответ написан
    Комментировать
  • Как остановить создание кэша в wpo-minify в wordpress?

    nefone
    @nefone
    Junior PHP разработчик
    Я для избежания этого, во время разработки и внесения правок отключаю плагин WP-Optimize.
    После того, как все сделано - можно включить обратно.
    Ответ написан
    Комментировать
  • Как избежать создания папки .idea в PhpStorm?

    nefone
    @nefone
    Junior PHP разработчик
    Каталог .idea, содержит служебные файлы среды PHPStorm, с опциями проекта.

    Перед открытием проекта в среде PHPStorm создайте его с помощью vue-cli, после этого открываете проект в среде разработки.

    Чтобы лишние файлы не попадали в проект, нужно их указать в .gitignore файле.

    1. Добавьте в файл .gitignore строки:
    */.idea/
    .idea

    Эти строки сделают так, чтобы git не обращал внимания на содержимое папок .idea, где бы в репозитории они ни находились.

    2. Перейдите в корень репозитория и выполните команду для удаления файлов из git. Удаляется папка .idea в корне и папки .idea из подпапок первого уровня.

    git rm -r --cached .idea */.idea

    Выполнение команды git-rm необходимо, так как добавление строки в .gitignore, не ведет остановке контроля над уже отслеживаемыми файлами. Ключ -r нужен, чтобы команда была применена рекурсивно ко всем файлам и папкам в .idea и */.idea. Ключ --cached нужен, чтобы файлы были удалены только из кэша git, а не из файловой системы.
    Ответ написан
  • Что указывать в переменной $accountId php-sdk moneta.ru?

    nefone
    @nefone
    Junior PHP разработчик
    Должно быть примерно так:
    $monetaSDK = new Moneta\MonetaSdk(); 
    $accountId = $monetaSDK->getRequestedValue('moneta_sdk_account');
    $result = $monetaSDK->showAccountBalance($accountId); 
    echo $result->render;
    Ответ написан
    Комментировать
  • Как сделать разный title если header везде одинаковый?

    nefone
    @nefone
    Junior PHP разработчик
    PHP позволяет решить эту задачу множеством способов, использовать готовый шаблонизатор, например Twig.

    Или реализовать свой с использованием функций ob_start() и ob-get-clean(): создаете файлы index.php и functions.php, каталог templates в котором будут храниться все файлы шаблонов. В каталоге templates создаете файлы: layout.php, header.php, footer.php, content.php.

    Файл functions.php:
    /**
     * Функция загрузки шаблона
     * 
     * @param string $template Путь до файлов шаблона
     * @param mixed[] $data Данные для подстановки в шаблон
     * @return string Возвращает готовый код шаблона
     */
     function render_template($template, $data = []) {
         ob_start();
         if (file_exists($template)) {
             extract($data);
             require($template);
         } else {
             print('Нет файла шаблона: '.$template);
         }
         $html = ob_get_clean();
         return $html;
     }

    Файл index.php:
    require_once __DIR__ .  '/functions.php';
    
    $header = render_template('templates/header.php', ['title' => 'Главная страница']);
    $footer= render_template('templates/footer.php');
    $content = render_template('templates/content.php');
    $page_layout = render_template('templates/layout.php',  
                                   ['header' => $header, 'footer' => $footer,  'content' => $content]);
    print($page_layout);

    Файл templates/header.php:
    <head>
    <title><?=$title?></title>
    </head>

    Файл templates/layout.php (в котором вместо <?=$header?> будет выводиться содержимое из файла templates/header.php и т.д.):
    <!DOCTYPE html>
    <html lang="ru">
    <?=$header?>
    <body>
    <?=$content?>
    <?=$footer?>
    </body>
    </html>
    Ответ написан
    1 комментарий
  • Почему неправильно отображается значек navbar toggle в Bootstrap4?

    nefone
    @nefone
    Junior PHP разработчик
    Мне помогло добавить в файл своих стилей код:
    .navbar-toggler-icon {
        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
    }

    Взят из исходников самого Bootstrap, но по сути, если хочется, то можно написать полностью свои стили для класса .navbar-toggler-icon
    Ответ написан
    Комментировать
  • Почему не могу выполнить миграции в докере?

    nefone
    @nefone
    Junior PHP разработчик
    Попробуй выполнить в консоли:
    php artisan db
    и проверить свое подключение к базе данных.
    Так же конфигурацию подключения к БД не только в .env но в config/database.php файле.
    Если все хорошо, то возможно проблема с самой миграцией, невозможно найти указанную таблицу "cennik" или базу данных.
    Ответ написан
    Комментировать
  • Локальная разработка на Битрикс. Bitrix VM + IDE. Как правильно организовать, чтобы работало быстро?

    nefone
    @nefone
    Junior PHP разработчик
    Можно создать в BitrixVM нового FTP пользователя и в PHPStorm настроить нужный деплой.
    В данном видео рассказывается, как это можно сделать.
    Т.к. на локальной машине у нас будут копии файлов, то проблема с индексацией решается.
    Ответ написан
    Комментировать
  • Как отключить доставку и оплату в Woocommerce?

    nefone
    @nefone
    Junior PHP разработчик
    Я реализовал данную фичу с помощью пары хуков:
    //отключаем параметры доставки по стране
    add_filter( 'woocommerce_cart_needs_shipping', 'woocommerce_disable_shipping' );
    function woocommerce_disable_shipping() {
    	return false;
    }
    //отключаем параметры оплаты
    add_filter( 'woocommerce_cart_needs_payment', 'woocommerce_disabled_payment' );
    function woocommerce_disabled_payment() {
    	return false;
    }

    Теперь параметры заказа просто падают в админку WooCommerce и на e-mail.
    Ответ написан
    Комментировать
  • Как в opencart 3 добавить свой slick slider?

    nefone
    @nefone
    Junior PHP разработчик
    В структуре файлов не разбираюсь, поэтому не в курсе где можно найти данный файл

    В OpenCart3 стандартный шаблон отзывов находится в
    \catalog\view\theme\default\template\product\review.twig

    Там же рядом можно посмотреть шаблоны других страниц и разделов.
    Можно ли в структуре файлов написать свой html и js?

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

    nefone
    @nefone
    Junior PHP разработчик
    Варианта может быть два, или у вас ошибка при подключение к базе данных, надо проверять, что соединение установлено и проверять на успешное выполнение запроса:
    $login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);
    $password = filter_var(trim($_POST['password']), FILTER_SANITIZE_STRING);
    
    $mysql = new mysqli('localhost', 'root', 'root', 'reg-bd');
    if ($mysql->connect_errno) {
        exit('Ошибка при соединении с базой данных:  ' . $mysql->connect_error);
    }
    
    $result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND `password` = '$password'");
    if (!$result)
    {
      exit('Ошибка при выполнении запроса: ', $mysql->error);
    }
    $user = $result->fetch_assoc();
    
    setcookie('user', $user['name'], time() + 3600, "/");
    
    //что бы проверить, что в переменно что то есть, можно вывести ее через: var_dump($user)
    Ответ написан
    Комментировать
  • Как создать на сайте кнопку для редактирования поста?

    nefone
    @nefone
    Junior PHP разработчик
    Как вариант использовать в шаблоне вывода поста:

    <?php edit_post_link( 'Редактировать' ); ?>

    если авторизованному пользователю будет разрешено изменять пост, то будет выведена ссылка на его редактирование.
    Ответ написан
    Комментировать
  • Сбор ИНФО с формы сайта в CRM?

    nefone
    @nefone
    Junior PHP разработчик
    Отлавливать с помощью jQuery отправку формы с определенным идентификатором или именем и смотреть какие там поля формы заполнены и посылать POST запрос с ними в CRM
    $('#formName').submit(function(e) {
           console.log('form sending...');
           $.post(`https://АДРЕС_СИСТЕМЫ/forms/wtl/КОД_ФОРМЫ`, {
               key: КОД_ФОРМЫ,
               name: ЗНАЧЕНИЕ_ДЛЯ_ПОЛЯ_NAME,
               phonenumber: ЗНАЧНИЕ_ДЛЯ_ПОЛЯ_PHONENUMBER,
               xxx: ЗНАЧНИЕ_ДЛЯ_ПОЛЯ_ХХХ,
           });
           e.preventDefault();
    });
    Ответ написан
    Комментировать
  • Почему в таблицу mysql не добавляется форма за смайлами (эмодзи)?

    nefone
    @nefone
    Junior PHP разработчик
    Нужно посмотреть ошибку, которая у вас возникает при выполнения запроса к базе данных.

    Для этого изменить ваш код на этот:
    <?php
    require_once 'connect.php';
    
    $h = $_POST['smail'];
    var_dump($_POST['smail']);
    
    if (!mysqli_query($connect, "INSERT INTO `soobchenie` (`id`, `otpravit`, `nku`, `avu`, `nkchata`, `forma`, `time`, `prosmotr`) VALUES (NULL, '$h', 'g', 'l', 'l', 'l', 'l', 'l')") {
        printf("Ошибка при добавлении в базу данных: %s\n", mysqli_error($connect));
    }
    ?>

    Также следует убедиться, что в файле "connect.php" у вас действительно создается подключение к базе данных.
    Ответ написан
    Комментировать
  • Как сбросить пароль админа Moto 3 CMS?

    nefone
    @nefone
    Junior PHP разработчик
    Искать где в коде выполняется проверка пароля и делать всегда true при сравнении пароля.
    Ответ написан
    Комментировать
  • Как генерировать красивый PDF с помощью PHP?

    nefone
    @nefone
    Junior PHP разработчик
    Использовать библиотеки заточенные под работу с PDF из PHP:
    FPDF
    Ответ написан
    Комментировать
  • Как сделать независимый скрипт php и взаимодействовать с ним?

    nefone
    @nefone
    Junior PHP разработчик
    Как мне это сделать?

    Если Вам очень хочется, то:
    index.php
    <?php
    require_once 'MyString.php';
    $mystr = new MyString();
    echo $mystr->getString();
    $mystr->setString('stop');
    echo $mystr->getString();


    MyString.php
    <?php
    
    class MyString
    {
        private $string;
    
        public function __construct(string $str = ' start ')
        {
            session_start();
            if (empty($_SESSION['string'])) {
                $this->string = $str;
            }
        }
    
        public function setString(string $str) 
        {
            $this->string = $str;
            $_SESSION['string'] = $this->string;
        }
    
        public function getString()
        {
            return $_SESSION['string'] ?? $this->string;
        }
    }


    всё заработает и выведет "start stop", но если обновить страницу то будет тоже самое, а мне хотелось бы чтобы теперь выводило "stop stop"

    Данное решение при первом открытии выведет "start stop", а если обновить страницу, то "stop stop".
    Ответ написан
    Комментировать