• Какие сейчас cms лучшие для интернете магазина?

    Посмотрите на связку October CMS + Shopaholic.

    Кратко (по озвученным требованиям)


    1. не хочу время тратить на переобучение если учить "слабую" cms

      October - мощная, набирающая популярность, современная CMS с Laravel под капотом.


    2. какую выбрать для максимального удовлетворения


      October и Shopaholic очень хорошо расширяются через экстенды не в пример другим решениям.



    Развёрнуто

    October - самая популярная CMS на базе Laravel Framework, который уже лет пять является самым популярным в мире фреймворком на PHP. Знание October это на 80% знание Laravel. Это как бы готовый CRUD над фреймворком с дополнительным API, которое адаптирует фреймворк к задачам, которые решают CMS. Очень хорошо владеть и Октябрем и Ларой. Можно работать в целом с одним и тем же стеком и подбирать наиболее подходящий инструмент под конкретную задачу.

    Октябрь очень аскетичный из коробки, даже управление навигацией решается через отдельный плагин. В админке не будет ничего, что не нужно пользователю, т.к. вся функциональность ставится по требованию. Эту же философию продолжает и Shopaholic. В целом, если нужна современная CMS под e-commerce с хорошим DX (Developer Experience) и хорошей основой для дальнейшей кастомизации силами разработчика, то обязательно присмотритесь к этой связке.

    Плюсы:

    - это все ещё CMS, а не фреймворк, потому стартовать можно так же легко, как с любой другой CMS;
    - это действительно кастомизируемое решение, т.к. в пайплайн любых данных можно вклиниться своим экстендом и, обработав их своей кастомной бизнес-логикой, вернуть обратно без костыляния "в ядре";
    - под капотом у October CMS полноценный Laravel Framework и его мощнейшая экосистема;
    - отлично держит нагрузки (среднее время отклика страницы при 50 пользователях онайлн, создающих 2 запроса в секунду - 100мс, см приаттаченный скриншот);
    - отличная производительность - время отклика каталога, размером 210 товаров 100-150 мс, фильтрации - 80-100 мс, при 21 000 товаров - 900-1100 мс и 500-600 мс соответственно;
    - низкая средняя стоимость платного плагина 19$ (для сравнения Magento - 199$, Prestashop - 105€, WooCommerce - 82$, OpenCart - 36$, MODX (miniShop) - 23$).

    5e8f5fb053550413266369.png

    Минусы:

    - в силу возраста проекта (2 года) все еще небольшая экосистема по сравнению с другими платформами, потому может не понравится ни одна готовая тема или не будет подходящего плагина под дополнительную потребность;
    - сравнительно небольшое сообщество, но оно компенсируется огромным сообществом Laravel, специалисты которого очень быстро осваивают Oсtober;
    - тех поддержка не уровня ITSM и пр., а "домашняя" ламповая а чате сообщества на уровне прямого общения в с разработчиками платформы (но это опять же является следствием молодости, а также может быть и плюсом для небольшого проекта).

    P.S. Тесты гонялись на стандартном дроплете DO 2CPU/4GB RAM.
    P.P.S. Недавно вышла большая статья на Smashing Magazine, ориентированная на новичков Building An E-Commerce Site With October CMS And S....
    Ответ написан
    2 комментария
  • Онлайн-дизайнер схем баз данных MySQL

    @andrei24
    Ответ написан
    Комментировать
  • На каком фреймворке сделать свою CMS для развлекательного сайта?

    lukoie
    @lukoie
    0 берешь buzzy
    1 доделываешь то, что нехватает, и выпиливаешь то, что не нужно
    2 ура

    Подскажите, что лучше использовать для такой задачи: Laravel, YII, или что-то еще?

    Ларавель
    Может есть какие-то готовые стартовые решения для последующего расширения функционала?

    OctoberCMS
    Ответ написан
    Комментировать
  • Хорош ли MODx и чем?

    zooks
    @zooks
    Frontend
    В принципе, можно и на MODX сделать, но это будет явно не филиал 2gis.

    Если нужна именно CMS, то попробуйте October CMS. Он немного похож на MODX, в его основе лежит Laravel. И хорошо интегрируется с Vue.js.
    Ответ написан
    1 комментарий
  • Где правильно держать логику приложения node.js?

    @vshvydky
    function(req, res, next) {
      res.render('index', { title: 'Express' });
    }

    выносишь это в контроллер
    ./controllers/controllerName.js:
    module.exports.routeName = function(req, res, next) {
      res.render('index', { title: 'Express' });
    };

    В апп подключаешь:
    const controllerName = require('./controllers/controllerName.js');
    router.get('/', controllerName.routeName);
    Ответ написан
    Комментировать
  • Как правильнее организовать код?

    vitali1995
    @vitali1995
    Передавать все одинаковые или связанные данные в объекте. Входные данные можно передавать очередью как пришли или тоже группировать, если в этом есть необходимость.

    let options = {db, redis, gogleApi, app};
    
    app.onText(/\/start/, msg => {
      funcOne(options, msg);
    }); 
    
    app.onText(/\/exit/, msg => {
      funcTwo(options, msg);
    });
    Ответ написан
    Комментировать
  • Почему при сборки на webpack модуль не работает?

    @Sayto
    Просто Webpack не умеет подгружать es6 модули. Подключите babel-loader.
    module.exports = {
        entry: "./server.js",
        output: {
            path: __dirname,
            filename: "dist.js"
        },
        module : {
            loaders: [ { 
                    test   : /.js$/,
                    loader : 'babel-loader'
                }
            ]
        }
    };
    Ответ написан
    2 комментария
  • Как в node.js делать динамичную консольную строку?

    @Aves
    https://nodejs.org/api/readline.html
    const readline = require('readline');
    
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
    });
    
    rl.question('node.js это круто? ', (answer) => {
      switch (answer.toLowerCase()) {
        case 'да':
        case 'yes':
          console.log(answer, '- это правильный ответ');
          break;
        default:
          console.log(answer, '- ошибочное мнение');
      }
      rl.close();
    });
    
    rl.write('Да');
    Ответ написан
    1 комментарий
  • Как вывести gift пока не придет ответ ajax?

    azovl
    @azovl
    Элементарно, Ватсон!
    beforeSend

    function sendAjaxForm(result_form, ajax_form, url) {
        jQuery.ajax({
            url:     url, 
            type:     "POST", 
            dataType: "html", 
            data: jQuery("#"+ajax_form).serialize(),
    beforeSend: function() {
            $(placeholder).addClass('loading');
        },
    success: function(html){  
        $("#result_form").html(html);  
        	},
        	error: function(response) { 
        		document.getElementById(result_form).innerHTML = "Error.";
        	}
     	});
    }
    Ответ написан
    Комментировать
  • Как реализовать похожий эффект при движении мышки?

    mudrenokanton
    @mudrenokanton
    frontend dev
    Чето подобное видел тут:
    https://github.com/ironwallaby/delaunay
    codepen.io/zadvorsky/pen/dILAG
    Ответ написан
    Комментировать
  • Как правильно спроектировань БД?

    Wolfnsex
    @Wolfnsex Куратор тега Веб-разработка
    Если не хочешь быть первым - не вставай в очередь!
    Есть две таблицы. Таблица с этими товарами и таблица с брендами. Эти две таблицы связаны друг с другом через третью таблицу.

    У вас один товар может иметь сразу несколько брендов?

    Я так понимаю надо сделать таблицу соотношений, где два поля - id_товара и id_его аналога
    Допустим у товара с ID 1 есть три аналога - получается на один товар три записи. А у этого аналога в аналогах - товар с ID 1 и оставшиеся два товара. Уже 6 записей. В общем что то мне такое решение не нравится.

    В целом, это вполне нормальная практика, по крайней мере, с точки зрения логики. Например, "лампочка А", логически может быть заменена на "лампочка Б", но обратная замена может быть не целесообразной, по каким-то признакам. Так же, при таком раскладе Вы сможете сортировать вывод аналогов по степени "рекомендуемости" их применения, на каждый товар и так далее. Но, у этого подхода безусловно есть и недостатки, в частности, это избыточность данных, дополнительные телодвижения по добавлению аналогов в каждый товар, лишнее место на диске, раздувание БД и так далее.

    Если же все товары между собой являются абсолютными аналогами друг-друга, есть альтернативный подход. Он заключается в том, что вы создаёте какую-то группу аналогов, например, в таблице analog_groups, каждая запись в которой = 1 группа аналогов. Далее, Вы указываете в товаре, к какой группе аналогов он принадлежит, это можно делать как по ID группы, так и по её заголовку (или любому другому параметру, который Вы к ней добавите) или по параметру id_группы_аналогов у любого другого товара, который в эту группу уже входит.

    Особенности такого подхода:
    а) Отсутствие избыточности данных
    б) Все товары в одной группе аналогов всегда будут аналогами для всех остальных товаров в этой же группе
    в) Нам не нужно будет делать множество одинаковых телодвижений, постоянно перелинковыая аналоги товаров друг у друга
    г) Экономиться место на диске и не раздувается БД
    д) Мы не можем выставить сортировку или приоритеты вывода аналогов для каждого отдельно товара без жестких костылей
    Ответ написан
    5 комментариев
  • Как сделать подобный элемент?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    5 комментариев
  • Как правильно реализовать такой макет?

    edalis
    @edalis
    HTML, CSS, JS, Node.js
    Комментировать
  • Как выбрать часть текста из строки в БД?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Ответ написан
    Комментировать
  • Можно ли сделать кастомную страницу публикации wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    1. Создать страницу на которой будет форма, например "Write for us" со слагом "add-post"
    2. Создать для этой страницы кастомный шаблон в теме - page-add-post.php
    3. Запретить доступ к этой странице для неавторизованных юзеров (редиректить на авторизацию), либо выводить тут форму для входа и обрабатывать авторизацию (больше работы)
    4. Запилить на странице нужную форму для создания записи.
    5. В шаблоне страницы сделать обработчик формы.
    6. В обработчике обязательно валидировать и очищать все данные, после чего сохранять с помощью wp_update_post().

    Вообще способов много. Можно добавить кастомный endpoint и перехватывать обработку формы там, можно шорткод для формы сделать вместо шаблона страницы и тд. Не считая готовых плагинов (а они есть в родном репо).
    Ответ написан
    Комментировать
  • Как называется такая навигация на сайте?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    До чего же опустились разработчики.
    Это простая навигация по якорям.
    Делается на коленке за пять минут.

    Применительно к WordPress:
    1, Произвольные ссылки в меню
    2, Простейший скрипт типа такого
    $('a[href^="#"]').click(function(){
    var $target = $(this).attr('href');
    $('html, body').animate({scrollTop: $($target).offset().top}, 1000);
    return false;
    });
    Ответ написан
    Комментировать
  • Как создать панель в консоле типа welcom-panel?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    /**
     * Добавляет виджет в консоль.
     *
     * Эта функция подключается к действию 'wp_dashboard_setup'.
     */
    function example_add_dashboard_widgets() {
        wp_add_dashboard_widget(
            'example_dashboard_widget',         // Идентификатор виджета.
            'Пример виджета консоли',           // Заголовок виджета.
            'example_dashboard_widget_function' // Функция отображения.
        );	
    }
    add_action('wp_dashboard_setup', 'example_add_dashboard_widgets');
    
    /**
     * Функция для вывода содержимого нашего виджета.
     */
    function example_dashboard_widget_function() {
        // Отображаем то, что мы хотим увидеть.
        echo "Привет, мир! Я классный виджет консоли";
    }
    Ответ написан
    2 комментария