• Хорош ли MODx и чем?

    @asd111
    Админки в laravel генерируются, либо для CRUD генерируется код и потом добавляется проверка прав доступа - вот и вся админка. Поверьте лучше один раз научится этому чем копаться внутри CMS.
    В вашем случае главный недостаток modx в том что если вы научитесь им пользоваться, то не сможете потом этот навык продать. А если вы сделаете на laravel (пусть без vuejs), то потом сможете найти хорошую работу.
    CMS подходят когда нужно быстро сделать и не менять логику работы, т.е. поставил - работает, разве что шаблон поменять, а если нужно менять логику работы, то архитектура CMS скорее мешает чем помогает.

    Для laravel много бесплатных генераторов админок:

    https://the-control-group.github.io/voyager/
    laraadmin.com
    https://github.com/LaravelDaily/quickadmin
    https://github.com/z-song/laravel-admin
    labs.infyom.com/laravelgenerator
    https://github.com/appzcoder/crud-generator
    https://backpackforlaravel.com/
    https://github.com/LaravelRUS/SleepingOwlAdmin
    Ответ написан
    4 комментария
  • Где вызывается функция woocommerce_template_loop_product_link_close?

    MikeKosulin
    @MikeKosulin
    Можно посмотреть в гите Woocommerce

    Дальше использовать remove_action и add_action, чтобы переопределить функцию.
    Ответ написан
    Комментировать
  • Не загружается файл index.php Wordpress темы, что делаю не так?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    если бы index.php не загружался, хэдера бы вы не видели, ибо вызываете вы его именно в нем, дело в том, что после хэдера у вас вылетает ошибка, какая именно можете увидеть посмотрел логи или включив дебаг в конфиге
    Ответ написан
    Комментировать
  • Не загружается файл index.php Wordpress темы, что делаю не так?

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

    xtala
    @xtala
    Постигает Дзен
    Lingualeo + Rosetta Stone.
    Lingualeo для словарного запаса. Перед обучением обязательно пройди тестирование и укажи направление обучения IT.
    Rosetta Stone для слуха. Очень удивился когда буквально пару раз позанимался с этой программой и начал в англоязычных аудио четко различать почти каждое слово. До этого вообще речь на слух не воспринимал хотя читал вполне уверенно. Было что-то типа: "Blalalala bool bool Blalalala Bool Fuck Suck..."
    Лингвалео бесплатен, розетский камень тоже хм.... бесплатен... На торрентах бесплатен, если ты конечно понимаешь о чем я :).
    Найдешь усе сам.
    Ну а если не найдешь, то лучше иди перебирать картофель на овощебазу.
    Ответ написан
    7 комментариев
  • Как провести настройку MX записей в ISPmanager?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Если "там где он хостится" предоставляются 2 IP адреса в разных подсетях класса C, то да - можно. Домен нужно будет делегировать на эти IP.
    Но вообще - help.yandex.ru/pdd/hosting.xml вам в помощь. Проще будет.
    Ответ написан
    Комментировать
  • OctoberCMS - Годится ли как основа для web-студии?

    parotikov
    @parotikov
    Wordpress, Laravel, OctoberCMS, Vue, Nuxt.js
    Отвечу по существу:
    Октябрь для вас будет идеальным вариантом, учитывая, что вы уже работаете с ларой.
    Джуны входят на раз-два. Куча плагинов, легкость разработки, клиенты радуются админке.
    Ну и плагин Билдер - мой фаворит. Творит просто чудеса. В чем-то похож на Pods для вордпресса.
    С ним конвеерная разработка типового функционала (например, модули каталог предприятий, галерея, афиша и т.д.) превращается в трехкликовый копипаст. А учитывая, что все сделанное можно экспортировать в виде плагинов и устанавливать в Октябре через Project ID, то это прям рай для вебстудии.
    Так что для мелко-средних проектов категорически рекомендую.
    Ответ написан
    5 комментариев
  • CMS на базе Yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    1. Перебрал все магазины на yii2 - все ужасно. Либо крайне не универсально, либо крайне медленно работает.
    2. Не стоит искать cms на yii, надо писать cms на yii
    3. Если нужен хороший магазин на базе framework - есть shop-script, на базе их же framework webasyst. Как cms - намного лучше всего написанyого на yii (имею в виду opensource cms магазинов), как framework - барахло полное. Если надо именно на yii, см. пункт2
    4. Если нужна модульная структура, то не надо искать cms, надо искать набор готовых модулей, совместив которые, получите cms. Модульная структура удобна, и в этом кроется ответ на вопрос "почему нет готовых CMS для магазинов на yii". Они есть, но в виде модулей. Отдельно RBAC, отдельно авторизация, отдельно nestedsets для категорий, отдельно яндекс касса и т.д. Просто совместите их, натяните одинаковый дизайн и все.

    PS: не буду говорить от Вашего имени, но когда я задавался этим вопросом ситуация была в том, что я знал азы yii, но не мог написать магазин. Тогда я задумался, а может взять готовый и моих азов хватит его дорабатывать и видоизменять? Путь в деградацию и гавнокод. Лечится чтением документации и глубоким разбором кода framework, а так же практикой. Теперь я смотрю на проекты типа eximuscommerce и понимаю, что быстрее напишу сам, чем заставлю правильно работать это.
    Ответ написан
    8 комментариев
  • Как сделать такую ​​кнопку вниз чтобы она прыгала?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    В данном случае используется jquery animate
    откройте код страницы и поиском найдите ".down-scroll" там будет сам элемент и js который заставляет ее прыгать.
    Ответ написан
    5 комментариев
  • Как же реализуется такой эффект анимации при прокрутке страницы?

    zo0m
    @zo0m
    full stack developer
    Поглядите в сторону:
    johnpolacek.github.io/superscrollorama
    Ответ написан
    Комментировать
  • Как провести a/b 2х разных сайтов?

    renat79
    @renat79
    dude with laptop
    Комплексный вопрос

    хорошую пошаговую инструкцию видел на vwo
    https://vwo.com/ab-testing/

    Плюс рекомендовал вам почитать блог unbounce
    у них много советов и кейсов по а/б тестированию

    unbounce.com/landing-page-articles
    Ответ написан
    Комментировать
  • Английский с нуля?

    @evg_96
    Есть канал на YT "English Galaxy". На нем нсть плейлист 350+ уроков, вся грамматика. Каждый урок делится на два. Теория, потом по этой теории практика. Перевод предложений.
    Единственное что мне помогло самостоятельно начать изучать английский. Подобного я больше не встречал.
    На данный момент прошел пока что только 58 уроков, но результат просто удивляет. Самому не верится что так продвинулся...раньше вообще думал нереально мне выучить английский.
    На данный момент на практике перевел около 8000 предложений. Как по маслу все ложится, без какого либо напряга. + очень много новых слов во время теории изучается. Сейчас уже знаком с Present Simple, Past Simple and Future Simple.
    Через урок будет большая контрольная практика по 3м временам.
    В общем очень советую. можете почитать отзывы под любым роликом, 99.9% положительные. к тому же все абсолютно бесплатно. + недавно вышло приложение 5555 тестов по граматике
    Ответ написан
  • Какой есть хороший PHP класс для отправки E-Mail?

    Quber
    @Quber
    PHP Team lead
    Однозначно SwiftMailer
    Ответ написан
    Комментировать
  • Как сделать шаблонизатор на php?

    copist
    @copist
    Empower people to give
    Сначала - зачем нужен шаблонизатор. Тут подмена понятий. Скорее вопрос такой: как отделить вывод от заголовков. Если не отделять, то может быть такая ошибка

    <html>
    <body>
    <?php
    // начать сессию
    session_start(); // отправить куку PHPSESSID через заголовки HTTP
    // но она не может отправиться, потому что уже начался вывод HTML в строке "<html ..."
    
    // если не авторизован, то отправить на страницу логина
    if (empty($_SESSION['username']))
        header('Location: /login.php'); // но заголовок HTTP тоже не может отправиться, как и кука
    ?>
        <h1>Hello, <?php echo $_SESSION['username'] ?></h1>
    </body>
    </html>


    Проблема решается, если вывод HTML делать после вывода заголовков. Например, использовать буфер
    <?php ob_start(); // открыть буфер ?>
    <html>
    <body>
    <?php
    session_start(); //  кука PHPSESSID отправится, потому что HTML ещё в буфере
    if (empty($_SESSION['username']))
        header('Location: /login.php'); // заголовок HTTP отправится, потому что HTML ещё в буфере
    ?>
        <h1>Hello, <?php echo $_SESSION['username'] ?></h1>
    </body>
    </html>
    <?php ob_end_flush(); // выбросить содержимое буфера наружу и закрыть его ?>


    Однако так придётся писать в каждом месте, где формируется HTML. Можно ли сократить?

    Простейшее представление через буфер

    <?php
    function render($viewPath)
    {
        if (!is_file($viewPath))
            return 'View "'. $viewPath . '" not exists';
        ob_start();
        include($viewPath);
        return ob_get_clean();
    }
    
    session_start();
    if (empty($_SESSION['username']))
        header('Location: /login.php');
    
    $viewsPath = __DIR__.'/views/'; // где лежат представления
    render($viewsPath . 'page.php'); // нарисовать страницу HTML


    <?php
    # page page.php
    ?>
    <html>
    <body>
        <h1>Hello, <?php echo $_SESSION['username'] ?></h1>
    </body>
    </html>


    А дополнительно ещё решают проблему отделения логики от формирования интерфейса. Работа с внешними данными в одном месте, а отображение их - в другом. Для этого в представление передают всё, что нужно показать. И точка. Лишних данных там не надо. В некоторых фреймворках стоит Exception если представление начнёт работать с базой данных, читает данные из входного запроса или пытается отправить заголовки.

    <?php
    function render($viewPath, $vars)
    {
        if (!is_file($viewPath))
            return 'View "'. $viewPath . '" not exists';
        extract($vars); // extract делает из массива набор переменных в локальной области видимости
        ob_start();
        include($viewPath); // эти переменные будут видны внутри подключаемого файла
        return ob_get_clean();
    }
    
    session_start();
    if (empty($_SESSION['username']))
        header('Location: /login.php');
    
    $viewsPath = __DIR__.'/views/'; // где лежат представления
    render($viewsPath . 'page.php', array( // отображаемые данные передаются массивом
        'username' => $_SESSION['username'],
    ));


    # page.php
    <?php
    /**
     * Подсказки для IDE, чтобы не подсвечивал переменные как неопределённые
     * @var string $username
     */
    <html>
    <body>
        <h1>Hello, <?php echo $sername ?></h1>
    </body>
    </html>


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

    В фреймворках вместо функции render может использоваться объектная реализация

    <?php
    class ViewException extends Exception {}
    
    class View
    {
        public $viewsPath = __DIR__.'/views/';
        
        public function __construct($viewsPath = null)
        {
             // настройка представлений
            // например, можно перепределить место хранения представлений
            if (!is_null($viewsPath))
                $this->viewsPath = $viewsPath;
        }
    
        public function render($viewPath, $vars)
        {
            if (!is_file($this->viewsPath . $viewPath))
                throw new ViewException('View "'. $viewPath . '" in folder "'. $this->viewsPath . '" not exists');
            extract($vars);
            ob_start();
            include($this->viewsPath . $viewPath);
            return ob_get_clean();
        }
    }
    
    $view = new View();
    $view->render('page.php', array(
        'username' => $_SESSION['username']
    ));


    Как таблицы шаблонизаирова если в одной 3 столбца, в другой 5?

    Никто в представлениях не запрещает использовать языковые конструкции. Это могут быть конструкции языка PHP или какой-нибудь другой язык, специально написанный для шаблонизатора. Например, в Smarty, Blade, Pug свои языки. Передай в представление количество колонок и сделай цикл :)

    у первой первый столбец должен быть 70% а у второй последний?

    В представлениях можно подключать стили CSS, через которые меняется отображение (колонка 70%).
    У каждого представления может быть свои стили.
    Если нужно, чтобы были некоторые общие стили и дополнительные, нужные только для этой страницы, используют что-то типа буферизирования вывода блока стилей.

    <?php
    class Assets
    {
        public static $cssLinks = array();
        public static $css = array();
    
        // добавить ссылку на файл стилей
        public function addCssLink($link)
        {
            self::$cssLinks[$link] = $link;
        }
    
        // добавить блок стилей
        public function addCss($name, $css) // $name - это чтобы не дублировались блоки стилей, на всякий случай
        {
            self::$css[$name] = $css;
        }
    
        public function renderCss()
        {
            foreach(self::$cssLinks as $url)
                echo '<link href="'.$url.'" rel="stylesheet" type="text/css" />';
            echo '<style type="text/css">';
            foreach(self::$css as $css)
                echo $css;
            echo '</style>';
        }
    }


    # index.php
    
    $assets = new Assets();
    // общие стили
    $assets->addCssLink('https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css');
    
    // ...
    
    $view = new View();
    $view->render('page.php', array(
        'username' => $_SESSION['username']
    ));


    # page.php
    <?php
    /**
     * @var string $username
     */
    $assets = new Assets();
    $assets->addCssLink('/path/to/my/styles.css'); // ещё один файл стилей
    $assets->addCss('h1 { color: red; }'); // или даже что-нибудь микроскопическое, только для этой страницы
    ?>
    <html>
    <head>
    <?php $assets->renderCss() ?>
    </head>
    <body>
        <h1>Hello, <?php echo $username ?></h1>
    </body>
    </html>


    И аналогично про JS.
    Ответ написан
    7 комментариев
  • Как сделать с помощью svg такие скошенные углы?

    MindMinimal
    @MindMinimal
    Front-end Developer, веб-разработчик
    Если мы говорим про аватар, то можно сделать через clip-path svg, подбробное (это если говорить за обрезку именно):
    https://sarasoueidan.com/blog/css-svg-clipping/
    bennettfeely.com/clippy

    т.к. сам аватар можно сделать через border-radius
    Ответ написан
    3 комментария
  • Передача $_POST и $_FILES одновременно в метод?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    А смысл передавать куда-то то что доступно везде?
    Ответ написан
    2 комментария