Author Archives: Pashaster

About Pashaster

Создатель и основной автор данного проекта. Профессиональный разработчик с 4-летним стажем.

Laravel админка: 8 готовых решений

laravel-admin-panelПриветствую вас, друзья! :-)

Наконец-то завершился мой затянувшийся отдых от написания статей о Laravel PHP framework, который я себе устроил полгода назад, написав последнюю на данный момент публикацию об обновлении версий Laravel на существующих проектах.

Честно скажу, что не планировал делать его таким долгим. Изначально в планах был месяц и 2-3 статьи о капче, принципами работы и заработком на которой я тогда увлёкся. Да и от Laravel я на тот момент тоже устал, т.к. на протяжении нескольких месяцев писал только о нём.

В итоге, запланированный месяц затянулся на 6, а 2-3 статьи на 22 публикации на посторонние темы. Естественно, всё это привело к тому, что я жутко соскучился по Laravel, т.е. цель отпуска была достигнута в полной мере :-)

Итак, свой Laravel comeback я решил начать, продолжив создание корпоративного сайта на данном фреймворке, у которого на данный момент доступна только фронтальная часть с контактной формой.

Поскольку на нём предполагается возможность ведения блога, то, естественно, без админки нам не обойтись. При её выборе есть два пути: использовать готовую или написать свою.

Поэтому для того, чтобы определиться, я решил рассмотреть сегодня существующие Laravel admin panel packages: их возможности, преимущества и недостатки.

Поехали! :-)

Обзор Laravel admin panel: особенности

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

В статье вы увидите описание лишь тех продуктов, которые совместимы с Laravel 5.5, т.к. на данный момент — это текущая версия нашего Laravel portfolio сайта (в ближайшем будущем, когда я наконец начну реализовывать админку на сайте, я планирую обновиться до 5.6, поэтому следите за коммитами в репозитории).

Устаревшие пакеты, которые у меня не запустились, вы увидите в конце статьи.

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

Ещё одна особенность обзора заключается в том, что кроме сортировки пакетов по категориям они будут расположены в порядке убывания по количеству звёзд на Github, откуда они все, естественно, и устанавливались.

И отсюда следует последняя особенность — все рассматриваемые в данной статье решения являются opensource, т.е. бесплатными и с открытым кодом. Коммерческим продуктам типа BackPack я решил не уделять внимание.

Визуальные конструкторы Laravel admin panel

Основной особенностью данной категории решений для Laravel административных панелей является максимальная визуализация рабочего процесса. Они очень похожи на те, которые доступны из коробки в популярных CMS: WordPress, OpenCart, Magento и др.

Вам не нужно будет вникать в принципы генерации кода и его структуру. Вместо этого визуальные конструкторы предоставляют удобный UI для произведения необходимых действий.

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

Laravel Voyager

Рейтинг на Github: 5875 звёзд

Исходный код: https://github.com/the-control-group/voyager

Официальный сайт: https://laravelvoyager.com/

Установка простая и состоит из 3 шагов: установки пакета через Composer, создание пустой БД и установки данных пакета (зависимости, запуск миграций и т.д.).

Если вы вдруг пользователь Laravel 5.4 или более ранней версии, то вам нужно будет добавить сервис провайдер в код Laravel приложения. Новых версий данное требование не касается.

При установке данных пакета можно воспользоваться опцией —with-dummy, чтобы установить админку с набором демо-данных (dummy data). В них входит 1 аккаунт администратора (если до сих пор у вас не было пользователей в БД в таблице users), 1 демо страница, 4 поста, 2 категории и 7 настроек.

После установки данная Laravel админка доступна по адресу site.url/admin, при переходе на который вы увидите слегка экстравагантную форму входа:

laravel-voyager-admin-panel

Лично я — не любитель захламлять сайт различной тестовой информацией, которую потом всё равно придётся рано или поздно удалять. Поэтому себе я поставил Laravel Voyager админку без демо данных.

В итоге, после установки Laravel Voyager admin и входа я увидел следующее:

laravel-voyager-nastrojka

После я приступил к настройке Laravel Voyager и изучению её особенностей.

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

Также в ней ещё есть инструмент просмотра логов, справочник со списком Artisan команд (большинство из которых стандартные для Laravel, так что это больше краткая шпаргалка, составленная по официальной документации) и перечень классов элементов иконочного шрифта, используемого админкой, чтобы вы могли его употреблять при кастомизации как админки, так и сайта (при подключении CSS файла админки, естественно).

Честно говоря, польза этих «плюшек» весьма сомнительная. Первое, что мне пришло на ум при виде всей этой красоты «шоб було» :-) Найти перечисленный функционал можно в пункте меню Compass.

Также у Voyager Laravel admin panel есть своя система хуков, с помощью которой существует возможность расширять функционал админки и сайта дополнительными возможностями. На данный момент Voyager hooks не очень много, с полным перечнем которых вы можете познакомиться здесь — https://larapack.io/.

Из самых интересных — WordPress import и возможность проводить опросы на сайте.

Ну, и несомненная изюминка Voyager Laravel admin panel — это наличие менеджера БД и BREAD builer, которые позволяют иметь прямо в админке упрощённый аналог phpMyAdmin.

Менеджер базы данных позволяет редактировать структуру БД и таблиц, а BREAD builder — по сути, обыкновенный CRUD генератор для заполнения таблиц БД данными через админку, только вместо привычных Create, Read, Update, Delete создатели Voyager решили почему-то зашифровать иные действия: Browse, Read, Edit, Add, Delete.

Видимо, маркетологи и различные брендмейкеры в их команде тоже имеются :-)

Должен сказать, что встроенный в админку менеджер БД — штука очень полезная, особенно, когда заказчики не дают доступ к базе, но хотят её структуру поменять :-) Либо используют shared хостинг без SSH доступа, что делает невозможным запуск Laravel миграций в консоли сервера.

Сам уже однажды с такой ситуацией столкнулся, и наличие Voyager Laravel admin panel на сайте клиента меня тогда сильно спасло.

Ну, и ещё одна полезная плюшка — это возможность перевода UI админки (очень полезная фича, если ваш заказчик захочет локализованную панель) и поддержка мультиязычности у сущностей из коробки.

Проще говоря, Voyager Laravel admin panel позволяет задавать значения различным полям (названия товаров, тексты постов) на разных языках с возможностью быстрого их переключения.

Единственное, что мне не понравилось в Voyager, — это документация, которая доступна по этой ссылке — https://voyager.readme.io/docs.

Несмотря на то, что составлена она весьма недурно, в ней описаны далеко не все моменты, возникающие при работе с данной Laravel admin panel. Про ту же самую мультиязычность пришлось читать на GitHub — https://github.com/the-control-group/voyager/pull/561

В прочем, разработчики и сами признают этот недостаток, указав на стартовом экране доки приписку still in development.

Ну, и не по душе мне пришлась повёрнутось авторов Voyager Laravel admin panel на морской теме админки, которая может не каждому понравится. Так что готовьтесь к тому, что её, возможно, придётся кастомизировать по требованию заказчика.

Ну, а в целом, данная панель — достаточно простое и мощное решение, обладающее всем необходимым функционалом для реализации типовых блогов, Интернет магазинов и др. стандартных проектов, позволяя сделать из любого Laravel сайта некоторое подобие WordPress.

Laravel QuickAdmin

Рейтинг на Github: 438 звёзд

Исходный код: https://github.com/LaravelDaily/quickadmin

Официальный сайт: https://quickadminpanel.com/

Установка Laravel QuickAdmin прошла реально быстро (судя по переводу названия), просто и понятно.

Документация составлена достаточно подробно и описывает все основные моменты, возникающие при работе с админкой, начиная от её установки, заканчивая настройкой — http://laraveldaily.com/packages/quickadmin/. Правда, исчерпывающей её также нельзя назвать.

При входе в админку после Voyager меня лично ждало небольшое разочарование, т.к. внешне данная Laravel админ панель выглядит достаточно примитивно:

laravel-quickadmin-package-dashboard

Что же я увидел из возможностей?

Во-первых, CRUD генератор сущностей присутствует. При создании новой сущности таблица в БД генерится автоматически. Поля можно добавлять, сколько угодно, с различными типами.

Правда, после создания CRUD контроллера ни удалять его, ни редактировать набор полей нельзя. Единственный вариант: удалить и создать снова или сделать всё вручную путём ручного прописывания в БД и модели.

Во-вторых, по умолчанию доступен менеджер пользователей, их ролей (есть обычный пользователь и администратор, который может создавать CRUD контроллеры).

В-третьих, есть возможность добавления новых элементов в меню админки с возможностью их Drag-and-drop позиционирования с изменением уровней вложенности.

laravel-quickadmin-package-menyu-generator

Правда, пункты меню удалять нельзя, только вручную через БД.

В отличие от Voyager админки, мне понравилась удобная кастомизация генерируемого админкой кода. Все контроллеры и модели создаются в директориях Laravel по умолчанию (app/Http/Controllers/ и app/, соответственно). Не нужно их искать по всему проекту.

Теперь о том, что мне не понравилось в Laravel QuickAdmin. Прежде всего, это будущие проблемы при добавлении на сайт мультиязычности сущностей (в отличе от упоминавшегося уже Laravel Voyager admin).

Проблемы обеспечены тем, что из коробки данной Laravel админ панелью такая возможность не предусматривается.

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

Помимо открытого кода на GitHub у Laravel QuickAdmin также есть SaaS решение, цены на которое начинаются со 100$ в год. Помимо настройки админки в облаке тарифные планы подразумевают установку специально разработанных под QuickAdmin Premium модулей, саппорт разработчиков и удаление лейбла QuickAdmin из панели.

Более подробно о расценках и возможностях можете узнать на официальном сайте по ссылке в начале.

Генераторы Laravel админок

Главным отличием генераторов Laravel админок от визуальных конструкторов является то, что создание CRUD контроллеров, новых элементов меню и страниц происходит не после кликов на UI элементы, а в консоли либо вообще после создания вручную новых классов и наследования от имеющихся в пакете генератора.

Отличительной особенностью генераторов является то, что многие из них предоставляют возможность использования Laravel CRUD генераторов и прочих билдеров отдельно, даже размещая их в отдельных репозиториях. Преимуществом такого подхода является возможность использования своей кастомной frontend темы админки.

Благодаря данным особенностям, данные продукты отлично подходят для реализации крупных проектов (причём, не только их админок), позволяя сокращать время на разработку однотипных классов и методов.

Однако, это обстоятельство предъявляет к ним серьёзные требования относительно чистоты и понятности кода. Если CRUD-классы будут плохо структурированы, а процесс генерации Laravel админ панели будет запутан, то использование данных продуктов может, наоборот, только увеличить сроки реализации.

Z-Song Laravel admin

Рейтинг на Github: 3201 звезды

Исходный код: https://github.com/z-song/laravel-admin

Официальный сайт: http://laravel-admin.org/

Документация у данного продукта, пожалуй, самая полная из всех, описанных ранее. Она затрагивает не только банальные процессы установки и настройки, но и касаются многих тонкостей и даже организации кода.

После логина в админке я сразу увидел, что она разработана на основе популярного AdminLTE admin template:

laravel-admin-panel-generator-zsong

По умолчанию в данной Laravel admin panel доступен редактор меню, пользователей и их прав, которые были добавлены лишь с целью демонстрации возможностей админки, т.е. как могут выглядеть созданные через неё формы редактирования сущностей.

Добавление же новых происходит исключительно в консольном режиме.

Пакет предоставляет набор artisan команд для генерации контроллеров моделей, model-grid (страниц со списком сущностей с возможностью кастомизации её внешнего вида), model-form (страниц редактирования атрибутов отдельной сущности) и роутов для доступа ко всему этому.

Всё, что вам потребуется сделать самостоятельно, — это создать таблицу БД (проще всего с помощью Laravel миграций) и сгенерировать для неё модель.

Отличная функциональность без различного рода излишеств, режущих глаз, как, например, у Laravel QuickAdmin.

В общем, данный Laravel admin generator реально очень крутой и произвёл на меня положительное впечатление. Не зря им пользуются тысячи Laravel разработчиков, судя по звёздам на GitHub :-)

InfyOm Laravel Generator

Рейтинг на Github: 1817 звёзд

Исходный код: https://github.com/InfyOmLabs/laravel-generator

Официальный сайт: http://labs.infyom.com/laravelgenerator/

Достаточно мощный Laravel package со слоганом «Получите ваше API и панель администрирования за считанные минуты», которым создатели делают акцент, в первую очередь, даже на генерацию API, а не на admin panel.

В состав данного Laravel пакета входит целых 3 генератора, использовать которые можно как в комплекте, так и поодично в рамках одного проекта:

  1. генератор API;
  2. генератор Laravel admin panel;
  3. генератор Swagger документации для API.

Также, помимо данного инструментария, пакет предоставляет возможность генерации Laravel миграций со структурой будущих таблиц в БД, а также моделей и контроллеров для доступа к хранимым значениям.

Чтобы сообщить генератору, на основании каких данных стоит создавать модели и CRUD контроллеры, вы можете ввести всю необходимую информацию в консоли или использовать в качестве источника JSON файл. Также генерация возможна на основании существующих таблиц БД.

А ещё InfyOm Laravel Generator позволяет создавать тестовые данные с помощью Faker для тестирования генерируемых API методов.

Отличительной чертой пакета является то, что он генерирует код в соответствии с паттерном Репозиторий, поэтому сгенерированный код контроллера будет содержать следующий код:

class BookController extends AppBaseController
{
    /** @var  BookRepository */
    private $bookRepository;

    public function __construct(BookRepository $bookRepo)
    {
        $this->bookRepository = $bookRepo;
    }

    /**
     * Display a listing of the Book.
     *
     * @param Request $request
     * @return Response
     */
    public function index(Request $request)
    {
        $this->bookRepository->pushCriteria(new RequestCriteria($request));
        $books = $this->bookRepository->all();

        return view('books.index')
            ->with('books', $books);
    }

Ещё одна классная фишка данного генератора — он позволяет использовать четыре типа графических тем для оформления интерфейса админки: AdminLTEMetronicBootstrap и FlatLab. Можно даже подключать свою собственную тему, если будет такая необходимость.

Единственное, что мне не понравилось при работе с данной админкой, — это её лёгкая замудрённость. Для её установки и запуска с минимальными настройками лично у меня ушло раза в 3 больше времени, чем при использовании Z-Song Laravel Admin, к примеру.

О том как сделать это, а также произвести установку и настройку пакета в целом, читайте в документации на официальной сайте. Особенность её в том, что она организована по принципу официальной Laravel documentation: можно выбирать версию Laravel, чтобы прочитать об особенностях работы с генератором админки, актуальным для выбранной версии движка.

Laravel Sleeping Owl Admin

Рейтинг на Github: 486+496 (для старой версии) = 982 звёзды

Исходный код: https://github.com/LaravelRUS/SleepingOwlAdmin

Официальный сайт: https://sleepingowladmin.ru

Старая версия с саппортом Laravel до версии 5.1 включительно доступна здесь — https://github.com/sleeping-owl/admin

Одна из самых древних генераторов админок, которая за историю своего существования успела даже сменить репозиторий. Старая версия с саппортом Laravel до версии 5.1 включительно доступна здесь — https://github.com/sleeping-owl/admin

А также Sleeping Owl Laravel admin generator — это первый package админки, с которым мне пришлось поработать.

Дело было года 2 назад. Я тогда пришёл работать в компанию, у которой был корпоративный сайт на Laravel 4.2. Поскольку фирма делала первые шаги, и заказов было немного, мне было поручено заняться саппортом данного творения.

В качестве одной из первых тасок нужно было прикрутить админку, чтобы была возможность редактировать портфолио и контент страниц. Laravel я на тот момент не знал вообще, английский свой пускать в дело стеснялся, поэтому было принято решение поискать готовый продукт с русскоязычной документацией.

Sleeping Owl Admin тогда идеально подошла под мои требования (особенно порадовало, что это отечественный продукт с обширной докой и даже статьями на Хабре от создателей), после чего я стал с ней разбираться. Скажу честно, что с задачей я справился спустя неделю мучений :-)

Не смотря на то, что, с первого взгляда, админка подошла идеально, в использовании она оказалась крайне неудобной (лично для меня). Было очень много действий руками, в первую очередь из-за того, что генератор, по сути, представляет собой набор классов, которые нужно использовать в своих кастомных моделях и контроллерах. Никакими Laravel CRUD generators, консольными командами для создания моделей, миграций и прочего и не пахнет :-)

Методов у классов генератора, правда, хватает на все случаи жизни. Можно конфигурировать тексты всплывающих сообщений, настраивать фильтры колонок списков объектов, настраивать поля форм — и всё в едином файле, без поисков необходимых элементов по всему коду проекта. Но, с другой стороны, данная структура пакета накладывает серьёзные ограничения на кастомизацию стандартных компонентов.

Ещё одной серьёзной проблемой, которую не решал Sleeping Owl Laravel Admin, была невозможность организации мультиязычности хранимых в БД данных. Кроме того, на многие вопросы я не мог найти ответы в официальной документации, не смотря на то, что она довольна обширна — https://sleepingowladmin.ru/docs.

Поскольку я использовал данный Laravel package достаточно давно, я решил для уверенности установить его повторно, чтобы убедиться, насколько он изменился:

laravel-sleepingowl-admin-package

Честно говоря, эффекта «Вау» я не испытал. Заметил лишь, что админка достаточно серьёзно изменилась на фронте: её переписали под Vue.js, в качестве графического темплейта, похоже, использовали знакомую AdminLTE. Но на бэке всё осталось как в доке по старой, используемой мною 2 года назад версии.

Кроме всего, экран авторизации у меня был с поломанными стилями, т.к. он предполагает наличие стандартных Laravel Bootstrap app.js и app.css, которые уже давно могли быть удалены на существующих проектах (как у меня). Поэтому в плане прикручивания данной Laravel админки к существующим проектам, она стала даже ещё хуже, чем раньше.

По всем указанным выше причинам я решил не использовать данный генератор в дальнейших проектах. Но опять, повторюсь, что всё это строго субъективно, и моя оценка — не повод отказываться от использования данного Laravel admin generator.

Laravel CRUD Generator от AppzCoder

Рейтинг на Github: 777 звезд

Исходный код: https://github.com/appzcoder/crud-generator

Официальный сайт: отсутствует

Простое и удобное решение, которое отлично подойдёт тем, кто устал постоянно создавать руками контроллеры, модели, миграции и шаблоны страниц, которые для большинства сущностей выглядят одинаково.

Данный Laravel admin генератор позволяет сделать всё вышеперечисленное в консольном режиме с помощью команд следующего формата:

php artisan crud:api-controller Api\\PostsController --crud-name=posts --model-name=Post

От вас потребуется только указать значения параметров или путь к JSON-файлу с соответствующим содержимым.

По примеру выше видно, что данный Laravel пакет позволяет генерировать не только модели и контроллеры для действий с БД через UI сайта, но и с доступом через REST API.

Как видите, данный Laravel CRUD генератор отлично подходит для создания любых сущностей, моделей и CRUD контроллеров на их базе без предметной области. Хоть админку блога вы делаете, хоть MarketPlace — использовать его можно везде.

Полная документация с перечнем возможностей доступна здесь — https://github.com/appzcoder/crud-generator/tree/master/doc (поскольку проект не коммерческий, на отдельный сайт автор решил не раскошеливаться).

Помимо рассмотренного генератора админки Laravel у его разработчика есть в наличии также и полноценный визуальный конструктор, доступный в данном репозитории — https://github.com/appzcoder/laravel-admin

Судя по скриншотам, доступным на странице описания пакета на GitHub, выглядит она достаточно простенько и со вкусом. По базовому функционалу и интерфейсу очень похожа на QuickAdmin. В неё также встроен рассмотренный ранее генератор админки.

Так что по сравнению с той же QuickAdmin у неё налицо явное преимущество — генератор можно использовать отдельно, не привязываясь к фронтэнд теме панели.

Однако, после установки меня ждал фейл :-)

Данная админка использует для своей работы Laravel Bootstrap файлы (public/css/app.css и public/js/app.js), которые я на данный момент успешно удалил. Таким образом, использовать данную Laravel admin panel в моём случае, равно как и на любом другом существующем проекте, не получится.

Можно было бы, конечно, заморочиться изменением файловых путей, но это дополнительные телодвижения, вместо которых можно просто использовать другой Laravel пакет :-)

Поэтому я решил её даже детально и не рассматривать, а также не рекомендую прикручивать её к готовому коду, впрочем, ваше дело…

Laravel админка: забракованные решения

Далее следуют Laravel админки, которые были мною опробованы в рамках написания данного обзора, но по тем или иным причинам я решил не рассказывать о них подробнее.

Laraadmin

Рейтинг на Github: 926 звёзд

Исходный код: https://github.com/dwijitsolutions/laraadmin

Официальный сайт: http://laraadmin.com/

По всей видимости, очень крутая админка (судя по описанию на официальном сайте и скриншотам) с CRUD генераторами сущностей БД, онлайн редактором кода и другими полезными фичами, но, к сожалению, устаревшая.

В то время, как комменты коммитов репозитория проекта говорят о том, что добавлена поддержка Laravel 5.4 (при том, что активная версия фреймворка на данный момент 5.6), по факту вы не установите данную Laravel admin panel на версию движка старше 5.2, т.к. инсталлятор выдаст вам ошибку об отсутствии файла маршрутизации app/Http/routes.php.

Ну, и помимо данного фейла вы получите ещё много интересных error messages :-)

FrozenNode Laravel-Administrator

Рейтинг на Github: 1954 звезды

Исходный код: https://github.com/FrozenNode/Laravel-Administrator

Официальный сайт: http://frozennode.com

Некогда достаточно популярная и одна из самых древних визуальных конструкторов Laravel админок. На GitHub описана процедура установки для Laravel 3 (!!!), который увидел свет в далёком, по меркам IT мира, 2012 году. Судя по скринам, выглядит неплохо и обладает достаточно обширной функциональностью.

Но она уже на протяжении 2 лет не поддерживается, официальный сайт недоступен, и поэтому рассчитывать на совместимость с новыми версиями Laravel глупо.

Я всё же решился на авантюру, попытавшись установить её на свой проект под Laravel 5.5, но в процессе получил сообщение об использовании deprecated метода, поэтому не стал особо и пытаться её воскресить.

В принципе, если у вас где-то завалялись проекты на старых версиях Laravel, которые нужно поддерживать, пакет вам может пригодится, но использовать её для стартапов — абсурд полнейший.

На этом обзор Laravel admin panel packages подошёл к концу. В целях сохранения интриги я решил не рассказывать вам сегодня, на чём я решил остановиться, и что вы увидите на скриншотах в дальнейших статьях.

Данная информация появится совсем скоро в следующей публикации. Поэтому подписывайтесь на обновления сайта на email и на push-уведомления, чтобы быть в числе самых первых читателей.

Также наряду с этой новостью (даже раньше) в официальном репозитории, ссылку на который я размещал в начале статьи, появится соответствующий коммит с установленной админкой.

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

Пишите ваши отзывы в комментариях, а также делитесь своими мыслями и идеями по поводу будущих публикаций, которые будут способствовать моему и вашему профессиональному развитию :-)

Всем удачи и до новых встреч! :-)

Опять 35… или скидка на шаблоны сайтов TemplateMonster неизбежна

skidka-na-shablony-sajta-templatemonsterВсем привет :-)

По названию статьи становится понятно, что на страницах cccp-blog.com намечается очередная минутка рекламы в качестве информера об акциях наших партнёров.

Сегодня на повестке дня предложение от TemplateMonster, который помог запустить не одну тысячу сайтов на WordPress, OpenCart, Joomla и прочих CMS, снабжая их владельцев шаблонами всевозможных тематик и обладающих различными возможностями.

Итак, в чём суть акции?

Опять 35 я её окрестил по той причине, что сравнительно недавно у них уже была похожая, о которой я рассказывал в одном из предыдущих постов. Только в этот раз размер скидки не будет зависеть от стоимости заказа.

Всё максимально просто и прозрачно: в период 9 по 11 апреля 2018 года предоставляется скидка 35% на все доступные у них на сайте шаблоны. Таким образом, у вас будет 3 дня на то, чтобы определиться с необходимым для вашего сайта шаблоном, вдоволь им попользоваться, вернуть обратно и даже купить новый, если первый вариант вас чем-то не устроит.

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

Реклама рекламой, а предложение действительно очень стоящее. И к нему стоит прислушаться даже тем, кто не занимается разработкой сайтов, как это ни странно :-) Думаю, принцип «купить дешевле, продать дороже» известен всем.

Особенно — работникам фриланса, а также аутсорсинговых студий и компаний, причём, независимо от способа создания сайтов. Среди шаблонов сайтов у TemplateMonster есть решения на все случаи жизни — как для CMS, так и написанные на HTML+CSS+JS, которые подойдут для ресурсов на базе любой платформы (того же самого Laravel, о котором скоро возобновятся публикации).

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

Ну, а если вы — счастливый обладатель собственного ресурса, то данная акция плюс Пасхальные выходные — отличный повод подумать о редизайне, который, кстати, планируется и на данном ресурсе.

Поэтому на этом сегодняшний новостной пост подошёл к концу, и я побежал на TemplateMonster присматривать себе шаблончик, чего и вам желаю :-)

Настройка и установка CS-Cart для запуска реального магазина

nastrojka-cs-cart-internet-magazinaДоброго времени суток, друзья :-)

После знакомства с характеристиками CS-Cart, обзор которых был представлен в предыдущей статье, и которые меня действительно впечатлили, я решил рассмотреть процесс создания полноценного Интернет-магазина на базе данной CMS.

Для этого я по традиции, начатой при обзоре OpenCart и WordPress, расскажу вам, где скачать и как установить CS-Cart в виде подробной пошаговой инструкции, а также как его настроить и на какие параметры нужно будет обратить особое внимание.

Помимо этой информации я также решил изучить процесс расширения базового функционала CMS за счёт добавления модулей и графических тем (шаблонов, templates), т.к. рано или поздно вам всё равно предстоит с этим столкнуться.

Для демонстрации возможностей и настройки CS-Cart я для эксперимента решил сделать простенький магазин спортивного питания, разработку которого я буду вести на своём локальном компьютере.

Поэтому напоследок я расскажу, как готовый магазин на CS-Cart установить на хостинг и выбрать подходящий хостинг-провайдер, чтобы ваш проект был доступен в сети и начал приносить вам деньги.

Сами видите, что материал вас ожидает объёмный и увлекательный, поэтому устраивайтесь поудобнее, запасайтесь попкорном и — в путь! :-)

Установка CS-Cart

Итак, для того, чтобы запустить свой Интернет-магазин на CS-Cart, первым делом нужно скачать сам движок и установить его либо на свой локальный компьютер, либо сразу на хостинг.

Сейчас я рассмотрю первый вариант, т.к. считаю его наиболее правильным, а со вторым я вас познакомлю в конце статьи, когда буду переносить CS-Cart сайт на удалённый сервер.

Если же вы хотите установить CS-Cart сразу на хостинге, а затем настраивать его прямо там, то вам после скачивания дистрибутива нужно будет скопировать его на сервер хостинга по FTP или SSH и запустить процесс установки, который будет описан далее.

Итак, скачать CS-Cart бесплатно (не смотря на то, что данный продукт платный) можно здесь — https://www.cs-cart.ru/download.html

После ввода своих персональных данных на странице, открывающейся по ссылке, приведённой выше, мне на указанный email пришла ссылка для скачивания дистрибутива. При переходе по ней произошла загрузка архива с файлами движка.

По поводу системных требований могу сказать, что CS-Cart в этом плане весьма неприхотлив. К необходимому минимуму относятся наличие установленных PHP и MySQL на компьютере. Для удобства разработки на локальном Windows компьютере лично я рекомендую использовать WAMP сборки и, в частности, OpenServer, которому я остаюсь верен на протяжении уже более 3 лет :-)

С полным списком всех системных требований, необходимых для стабильной работы магазина (пригодится при размещении сайта на хостинге), рекомендую ознакомиться на официальном сайте производителя — https://www.cs-cart.ru/docs/4.7.x/install/system_requirements.html

После этого я создал новый сайт в каталоге OpenServer domains под названием cscart.test (по данному адресу сайт будет доступен в браузере), скопировал туда архив, распаковал его и перезапустил сервер, чтобы он воспринял новый сайт, а затем перешёл на него в своём веб-браузере.

В итоге, я увидел на экране следующее сообщение:
kak-ustanovit-cs-cart-cherez-brauzer

Вариантов дальнейших действий, как вы видите, немного — нужно нажать на ссылку install, после чего запустится инсталлятор:

cs-cart-ustanovka-shag-pervyj

Первый шаг – лицензионное соглашение, с которым нужно ознакомиться, принять и перейти далее:

cs-cart-baza-dannykh-nastrojki-soedineniya

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

Как вы понимаете, для того, чтобы данный шаг завершился успешно, БД у вас уже должна быть. Если же вы испытываете трудности при её создании, то в качестве инструкции можете воспользоваться рекомендациями по созданию БД через phpMyAdmin из комплекта OpenServer, которые изложены, например, в статье о создании блога на WordPress.

Помимо настроек подключения к БД и данных админской учётки на данном шаге есть возможность установки демо данных, которые представляют собой тестовый набор товаров, категорий, новостей и т. д., чтобы не лицезреть пустые и скучные страницы в готовом магазине.

cs-cart-ustanovka-nastrojka-administrirovaniya

Однако, я решил установить CS-Cart без данной опции, т.к. всё равно демо товары, категории и фильтры перед запуском реального проекта, процесс создания которого я решил вам продемонстрировать, придётся удалять.

После того, как вы нажмёте на кнопку «Установить», инсталлятор направит вас на завершающий шаг установки, где вам нужно будет выбрать вариант лицензии.

cs-cart-licenziya-vybor-pri-ustanovke

Вариантов, как видите, два: либо ввести приобретённый ключ, либо воспользоваться 30-дневным пробным периодом. Естественно, я выбрал второй вариант, т. к. в мои планы входило исключительно ознакомление с возможностями CS-Cart :-)

После нажатия на кнопку «Выбрать» и выполнения всех необходимых действий инсталлятором в автоматическом режиме вас должно будет перенаправить на следующий экран:

cs-cart-ustanovka-zavershayushchij-etap

Если же этого не произошло, то внимательно изучайте сообщения об ошибках, возникающие в процессе установки, и пишите о них в службу технической поддержки CS-Cart или в комментариях под данной статьёй — постараюсь вам помочь, если это будет в своих силах.

Настройка CS-Cart с помощью мастера

В принципе, после того, как вы увидели экран с сообщением об успешной установке CS-Cart, вы можете приступать к настройке магазина, введя в адресную строку браузера http://доменное_имя_сайта/admin.php или нажав на соответствующую кнопку на завершающем экране установки движка.

Однако, не спешите это делать и закрывать текущую страницу :-)

Дело в том, что на ней находится ещё одна «фишка» CS-Cart – это кнопка запуска мастера настройки, которого я не встречал ни у каких-либо других CMS и движков.

На самом деле, суть его предельно проста: мастер представляет собой набор форм, на которых содержатся различные поля для выбора наиболее часто используемых настроек, а также различные рекомендации, необходимые для комфортной работы с магазином.

Выглядит всё это дело следующим образом:

cs-cart-nastrojka-cherez-master

Благодаря мастеру вы сможете произвести следующие CS-Cart настройки, которые разделены на 5 шагов:

  • конфигурация учётной записи админа (может ли пароль содержать символы и цифры, возможность смены пароля при первом входе и т. д.);
  • настройки CS-Cart для HTTPs соединения с сайтом (можно проверить правильность установки SSL сертификата на сервере и включить защищённую передачу данных как для админки, так и для витрины магазина отдельно);
  • выбор редактора HTML кода (TinyMCE, Redactor, Redactor 2) и инструмента просмотра фотографий (LightBox, MagnificPopup и т. д.);
  • валюта (доступны рубли, доллары США, евро и фунты стерлингов);
  • языки по умолчанию, формат даты и времени;
  • информация о компании (название, адрес, сайт, контакты);
  • возможность быстрой регистрации;
  • включение необходимых модулей, имеющихся в CS-Cart по умолчанию, и их отключение

В целом, как вы могли заметить, предназначение данного мастера — дополнительное удобство пользователей при настройке CS-Cart Интернет-магазина, особенно тех, кто имеет дело с данной CMS впервые и не знает, где что находится в админке.

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

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

Создание категорий товаров в CS-Cart

Итак, после установки CS-Cart без демо-данных и беглой настройки будущего магазина с помощью мастера мы имеем витрину с симпатичной базовой темой оформления, однако, этого мало, чтобы начать продажи:

cs-cart-internet-magazin-posle-ustanovki

По той простой причине, что нам ещё нечего продавать, т.к. в магазине на данный момент нет ни одного товара :-)

Ну что ж, пора исправить этот недостаток… Начнём с создания категорий в CS-Cart, в которые мы будем группировать наши товары.

Для этого в админке открываем пункт меню Товары > Категории и нажимаем на кнопку с плюсиком в правом верхнем углу экрана, после чего откроется форма добавления новой категории в CS-Cart магазин:

cs-cart-kategorii-tovarov-novaya

Я заполнил лишь базовые, на самом же деле их намного больше, среди которых масса SEO настроек, конфигурация отображения (кому и как, вплоть до смены макета страницы), а также способы начисления бонусных баллов для всех товаров.

После сохранения изменений у нас добавилась новая категория, которую теперь нужно вывести на витрину магазина. Для этого в админке переходим на страницу Дизайн > Меню:

cs-cart-menyu-kategoriya

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

Чтобы кастомизировать его, наводим курсор сначала на соответствущую надпись, а затем на появившуюся кнопку в виде шестерёнки, где нажимаем на пункт Редактировать элементы.

После этого откроется страница, на которой будут отображаться текущие элементы главного меню витрины, которые почему-то отличаются от тех, которые на самом деле показываются на витрине после установки CS-Cart без демо-данных :-) .

В любом случае, они нам не нужны, поэтому удаляем их все и добавляем новый элемент главного меню нажатием на кнопочку с крестиком, после чего на экране появится следующее окно:

cs-cart-menyu-novyj-element

Для добавления ссылки на только что созданную категорию мне пришлось вводить всю информацию вручную, что жутко неудобно, если честно. По каким-то причинам добавлять готовые CS-Cart категории в меню можно только в подпункты создаваемого элемента, а в корень — нет :-(

Зато имеется возможность добавления CSS класса создаваемому пункту.

Итак, сохраняем изменения, после чего наше главное меню витрины CS-Cart магазина примет следующий вид:

cs-cart-vitrina-menyu

Однако, при переходе по созданной ссылке пока что нам доступна лишь пустая страница, т.к. в ней ещё нет товаров. Этим мы сейчас как раз и займёмся.

Наполнение CS-Cart товарами

Для добавления товаров в CS-Cart есть два способа: автоматический и ручной. Первый больше подходит для массовой загрузки большого количества товаров, а второй — для добавления единиц с уникальными характеристиками и попутного редактирования их свойств.

Рассмотрим оба.

Для массовой загрузки товаров в CS-Cart есть модуль импорта данных, о котором я уже упоминал в предыдущей статье с обзором движка. Получить к нему доступ из админки CS-Cart можно следующим образом:

cs-cart-tovary-import

Как видите, с помощью данного модуля в CS-Cart магазин можно массово добавлять не только товары, но и их характеристики, пользователей, переводы и многое другое. При загрузке в CS-Cart товаров данный модуль предоставляет следующие опции:

cs-cart-opcii-tovara-pri-massovoj-zagruzke

На стартовом экране представлен длиннючий список атрибутов товаров, которые могут присутствовать в импортируемом файле в виде колонок с соответствующими названиями, данные из которых будут добавляться в БД при создании товаров. Обязательные поля выделены жирным.

Для эксперимента я быстренько набросал простенький файлик в обычном текстовом редакторе (подойдёт обычный Блокнот, но лично я люблю Notepad++) с названием import.txt следующего вида:

Product code;Language;Category;Product id;Product name;Price;Quantity
tovar1;ru;Спортивное питание;1;Протеин Optimum Nutrition 1кг;100;10
tovar2;ru;Спортивное питание;2;Креатин Scitec Nutition 0,5кг;200;20

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

В качестве категории я указал только что созданную. Если же данное поле оставить пустым, то автоматически будет создана CS-Cart категория Products, в которую будут добавлены загружаемые товары.

После загрузки файла и нажатия на кнопку Импорт в правом верхнем углу страницы на экране появилось следующее сообщение, свидетельствующее об успешном создании товаров с использованием данных из файла:

cs-cart-tovary-uspeshnyj-import

Также на вкладке Товары модуля импорта данных можно помимо самих товаров массово создавать ещё и комбинации опций товаров, оптовые скидки, загружать изображения для них способом, описанным выше, т.е. с помощью файла.

Данные возможности рассортированы по вкладкам, доступным в самом верху страницы.

После импорта товаров в CS-Cart из текстового файла я решил проверить, что же мне CS-Cart понасоздавал. Самый простой способ сделать это — обновить страницу категории товаров на витрине магазина:

cs-cart-kategoriya-s-tovarami-na-vitrine

Вуаля! :-) Товары появились на витрине с теми атрибутами, которые были им указаны в файле. Чтобы просмотреть их список в административной панели CS-Cart, достаточно выбрать пункт меню Товары > Товары.

cs-cart-nastrojka-tovarov-v-adminke

Здесь же можно добавлять новые вручную, а также редактировать и удалять существующие. Я решил отредактировать один из созданных товаров, чтобы изучить список его атрибутов.

Среди самых интересных мне удалось обнаружить следующие:

  • действия при отсутствии товара в наличии (предзаказ, подписка на уведомления и т.д.);
  • рейтинг товара в зависимости от добавлений в корзину, просмотров и заказов с возможностью редактирования;
  • SEO-атрибуты (meta-теги, просмотр отображения товара в результатах поисковой выдачи);
  • просмотр клиентов, подписавшихся на уведомления о появлении товара в наличии;
  • включение обсуждений и оценок товара;
  • указание товаров, обязательных для приобретения вместе с данным.

В итоге, после всех моих правок карточка товара CS-Cart магазина на витрине приняла следующий вид:

cs-cart-kartochka-tovara

Как наполнять CS-Cart магазин товарами, а также как настраивать их атрибуты, я вам продемонстрировал. Помимо данных базовых функций в CS-Cart есть масса дополнительных плюшек, которые позволяют клиентам более удобно искать товар и совершать покупки.

Прочие настройки витрины CS-Cart

Первая из них — фильтры CS-Cart товаров, которые добавлять проще простого.

Для этого в главном меню админки CS-Cart переходим на страницу Товары > Фильтры, которая по умолчанию пустая, и нажимаем на кнопку с плюсиком для добавления нового фильтра. После этого перед нами появится следующее окно:

cs-cart-nastrojka-filtrov

Как видите, по умолчанию в CS-Cart фильтров у вас много добавить не получится. Есть возможность фильтрации по цене, наличию и доставке. Для начала я решил сделать фильтр по цене.

После нажатия на кнопку Создать в моём списке фильтров появился новый элемент, а на витрине на странице категории автоматически добавился следующий блок:

cs-cart-filtr-tovara-na-vitrine

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

Как видите, добавление фильтров в CS-Cart реализовано действительно очень удобно и понятно. Единственный минус — что из коробки идёт мало критериев фильтрации. Но этот вопрос решаем за счёт характеристик товаров, которые после добавления автоматически появятся в критериях фильтрации.

Чтобы в CS-Cart добавить новые характеристики товара, необходимо перейти в админке на страницу Товары > Характеристики и нажать кнопку с плюсиком вверху страницы, после чего появится следующее окно:

cs-cart-kharakteristiki-tovara

Вводим необходимые для вас значения (я решил сделать характеристики Для набора массы и Вкус, чтобы продемонстрировать разные варианты фильтров) и сохраняем, после чего при добавлении нового CS-Cart фильтра мы увидим добавленные характеристику в списке параметров фильтрации:

cs-cart-filtr-po-kharakteristikam-tovara

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

Для этого заходим в карточку товара CS-Cart и переходим на вкладку Характеристики, где выбираем необходимые:

cs-cart-nastrojka-kharakteristik-tovara

Для протеина я указал значения вкуса, а для креатина то, что он нужен для увеличения силы. В результате, фильтр у нас получился такой:

cs-cart-filtr-po-kharakteristikam-na-vitrine

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

Лично мне данное решение понравилось намного больше стандартного фильтра OpenCart за счёт своего удобства.

Помимо характеристик товаров в CS-Cart есть ещё возможность добавления опций, которые, в отличие от характеристик, нельзя использовать при фильтрации, но можно указывать при заказе из карточки товара. Характеристики также показываются в карточке товара, но выбрать их нельзя. Поэтому лучше использовать всё вместе: при создании товара в CS-Cart добавлять ему и характеристики, и опции.

Опции в CS-Cart создаются аналогично характеристикам, только на странице Товары > Опции, и их так же нужно выбирать при редактировании конкретных товаров на соответствующей вкладке.

В итоге, карточка товара в моём CS-Cart магазине приняла следующий вид:

cs-cart-kartochka-tovara-itog

После того, как я наполнил свой CS-Cart Интернет-магазин товарами и настроил их категории, опции, характеристики, а также создал фильтры, всё, что остаётся сделать перед стартом продаж — это разобраться с настройками оформления заказа, чтобы покупатели могли оплатить и получить его.

Оформление заказа в CS-Cart и связанные настройки

По умолчанию CMS предоставляет два способа оформления заказа:

  1. стандартный, с добавлением товара в CS-Cart корзину и дальнейшим заполнением подробной информации о заказе;
  2. быстрый с вводом минимального количества информации.

Для быстрого оформления заказа достаточно нажать на кнопку «Купить в один клик» в карточке товара, после чего на экране появляется следующее окно:

odnoshagovoe-oformlenie-zakaza-v-cs-cart

После этого данный заказ можно будет увидеть в панели администрирования CS-Cart на странице Заказы > Обратный звонок в следующем виде:

cs-cart-obratnyj-zvonok-nastrojka

Всё, что вам останется, как администратору, — это связаться с покупателем по указанному email или телефону, чтобы выяснить, как клиент будет оплачивать покупку, куда и как её доставить.

Для тех покупателей, кто не любит болтать о данных вещах по телефону, есть стандартный вариант оформления заказов через CS-Cart корзину:

cs-cart-korzina

После нажатия на кнопку Оформить заказ клиент должен будет ввести свои контактные данные (список полей, кстати, редактируется в админке) и указать способ доставки, а также оплаты.

По умолчанию в CS-Cart доставка может осуществляться следующими способами:

  • самовывоз;
  • обсуждение способа с менеджером по телефону;
  • международное почтовое отправление;
  • EMS (Почта России);
  • курьером «до двери»;
  • Почта России.

Первые два способа доступны всегда, остальные же подбираются CS-Cart на основании введённых клиентом контактных данных:

cs-cart-dostavka-pri-zakaze

Система, кстати, настроена очень тонко: стоит вам только указать почтовый индекс, который не соответствует введённому адресу, способ доставки Почтой России у вас в списке не появится.

Кроме самих способов доставки на этапе оформления заказа ещё и автоматически просчитывается её стоимость на основании адреса компании, указанного в панели администратора.

Управлять способами доставки в CS-Cart можно в админке на странице Администрирование > Доставка и налоги > Способы доставки. При добавлении нового способа доставки, если выбрать расчёт тарифа в режиме реального времени, появится список доступных в системе служб доставки:

cs-cart-sposob-dostavki-dobavlenie

Нужно учесть, что для успешного добавления службы доставки в CS-Cart следует указать ваш уникальный идентификатор, полученный при регистрации в сервисе, в настройках соответствующего модуля CS-Cart.

После выбора необходимого способа доставки следующим шагом при оформлении заказа является выбор способа оплаты, список которых по умолчанию выглядит так:

cs-cart-sposoby-oplaty-zakaza

Кроме представленного на скриншоте выше есть ещё варианты оплаты с помощью электронных денег (WebMoney, Qiwi, Яндекс.Деньги), квитанциями от Сбербанка, переводом денег с мобильного счёта и т.д., которые находятся на соседних вкладках Интернет платежи и Другие варианты оплаты.

Настройка способов оплаты в CS-Cart производится в панели администрирования на странице Администрирование > Способы оплаты. Для добавления нового способа нужно нажать на привычную кнопочку с плюсиком и заполнить следующую форму:

cs-cart-nastrojka-sposobov-oplaty

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

В плане выбора платёжных систем CS-Cart приятно удивил, т.к. в выпадающем списке Процессор на данной странице их доступно больше 100, среди которых можно найти как отечественные, так и зарубежные, включая банки и электронные деньги.

На этапе выбора способа оплаты расширенное оформление заказа в CS-Cart подходит к концу, после чего клиентам будет предложено просмотреть его детали в следующем виде:

cs-cart-detali-zakaza-dlya-klienta

Как видите, здесь, помимо введённой вами контактной информации присутствует итоговая цена с учётом доставки и различных комиссий платёжных систем и налогов (если таковые у вас были предварительно настроены в админке). Даже штрих-код есть.

Ну, и возможность печати заказа, сохранения в PDF и открытия переписки с менеджером именно по данному заказу также не может не радовать :-)

Для вас же, как для администратора магазина, детали заказа будут выглядеть так:

cs-cart-status-zakaza-dlya-administratora

Тут, кроме всего прочего есть даже отображение адреса доставки на Яндекс.Картах, а также возможность изменения в CS-Cart статуса заказа и перевода его на определённого менеджера.

Список же всех совершенных через магазин заказов можно посмотреть в админке CS-Cart на стартовой странице (дашборде) и на Заказы > Все заказы.

Расширение функционала CS-Cart

Итак, настройки CS-Cart для наполнения магазина товарами и комфортного произведения заказов клиентами, а также возможности, которые при этом становятся доступными, мы рассмотрели.

Настало время рассказать, как их теперь расширять :-)

С этим делом у данного движка всё предельно просто и стандартно. Внешний вид CS-Cart магазина и его возможности, как и на большинстве других CMS, могут быть изменены путём установки модулей (аддонов) для добавления новых функций и графических CS-Cart шаблонов (тем, templates) для изменения интерфейса (внешнего вида) витрины сайта.

Далее я рассмотрю, как оба эти процесса производятся в CS-Cart, где модули и темы можно раздобыть и сколько они стоят.

Установка модулей в CS-Cart

Итак, где можно найти и скачать CS-Cart модули?

Прежде всего, в официальном каталоге дополнений, который доступен по адресу http://marketplace.cs-cart.com/add-ons.html.

Правда, здесь представлены не продукты команды CS-Cart, а ссылки на сайты партнёров, которые занимаются разработкой дополнений (причём, информация и цены в официальном каталоге могут отличаться от того, что на самом деле).

На данный момент здесь доступно 1287 модулей, совместимых с различными версиями CS-Cart. Цены начинаются от 1$ до 2000$ за модуль Gold Marketplace.

Наиболее крупными производителями CS-Cart аддонов на данный момент являются следующие:

  1. https://store.cart-power.ru/cs-cart-add-ons/ — есть бесплатные CS-Cart модули, цены от 57 до 53541 российских рублей — скорее всего, цены привязаны к курсу, поэтому могут меняться;
  2. http://www.alt-team.ru/cs-cart-modules.html — бесплатных нет, цены от 9$ до 545$, для некоторых есть возможность ввода своей цены;
  3. https://cs-cart.alexbranding.com/ru/ — премиум-партнёр CS-Cart, разработки которого включены даже в официальное демо, есть бесплатные модули, на платные цены начинаются от 30$ и доходят до 299$;
  4. https://www.ecom-labs.ru/cs-cart-multi-vendor-moduli — есть бесплатные CS-Cart модули, цены доходят до 3639 рублей;
  5. https://sweetcart.ru/addons/ — есть бесплатные, цены доходят до 10300 рублей за модуль синхронизации с Авито;

Для демонстрации процесса установки я решил установить бесплатный модуль, добавляющий кнопку «Вверх» на страницы сайта, при нажатии на которую страница пролистывается к самому началу. Качал отсюда — https://marketplace.cs-cart.com/add-ons/customer-experience/cs-cart-up-button-add-on.html?sl=ru

Чтобы добавить модуль в CS-Cart магазин, заходим в админку на страницу Модули > Управление модулями и нажимаем знакомый крестик, после чего откроется следующее окно добавления модуля:

cs-cart-moduli-dobavlenie-novogo

CS-Cart addons должны быть файлами с расширением .tgz, .gz или .zip, которые можно загрузить с диска, сервера магазина (если он туда уже был загружен) или вообще по ссылке.

Я воспользовался первым вариантом, после чего, спустя несколько секунд, устанавливаемый модуль отобразился в списке аддонов моего магазина:

cs-cart-moduli-spisok-v-adminke

И, вместе с этим, на витрине CS-Cart Интернет-магазина появилась обещаемая кнопка «Вверх», которая выглядит так:

cs-cart-addons-na-vitrine

У данного модуля CS-Cart куча настроек, которые я не буду рассматривать, т.к. статья посвящена не ему :-) Лучше всего его скачать вам самостоятельно и посмотреть на них своими глазами.

В целом, что я могу сказать по поводу процесса установки модулей CS-Cart? Всё предельно просто и понятно. Если сравнивать данный процесс с установкой модулей OpenCart, то у CS-Cart существует явное преимущество за счёт отсутствия необходимости вникать в нюансы всевозможных VQmod, ocMod и думать каким же из 4 способов нужно устанавливать конкретный аддон.

Установка темы CS-Cart

С установкой CS-Cart тем ситуация во многом похожая с модулями. Наибольший ассортимент CS-Cart themes также представлен официальным каталогом, где на данный момент 374 темы. Среди них есть как бесплатные CS-Cart шаблоны, так и платные. Цены от $10 до $499.

Посмотреть весь список можно здесь — https://marketplace.cs-cart.com/themes.html

Также скачать CS-Cart шаблоны можно на следующих сайтах:

  1. https://store.cart-power.ru/cs-cart-themes/ — уже знакомый по списку ресурсов для скачивания модулей отечественный CS-Cart партнёр и разработчик собственных решений. Цены от 5693 до 11443 российских рублей.
  2. https://themeforest.net/category/ecommerce/cs-cart — оказывается, CS-Cart темы можно найти даже на ThemeForest. Цены в районе $49-63
  3. http://cscarttemplates.com/cs-cart-templates — на данный момент 33 CS-Cart шаблона, цены на все 69 евро
  4. https://www.ecom-labs.ru/temy/ — ассортимент ограничен 4 темами, но, возможно, кому-то подойдёт именно данные варианты. Цены в российских рублях.

Для демонстрации установки я также выбрал бесплатный CS-Cart шаблон, который качал отсюда — https://marketplace.cs-cart.com/themes/cs-cart-theme-free-shoes-orange.html

Обращайте, кстати, особое внимание на версию CS-Cart, с которой совместимы скачиваемые вами шаблоны, иначе все ваши труды и деньги будут напрасны.

Итак, для добавления CS-Cart theme нужно перейти в панели управления на страницу Дизайн >  Темы, нажать на кнопочку с крестиком вверху страницы и через открывшуюся форму загрузить архив с темой.

После этого шаблон должен будет появиться на странице со списком тем во вкладке Просмотреть все доступные темы. Однако, у меня этого не произошло :-)

Уж не знаю, чья эта вина — то ли разработчиков CS-Cart, то ли создателей темы, но после установки файлы темы у меня оказались не по пути cscart_каталог/var/themes_repository/, а cscart_каталог/var/themes_repository/var/themes_repository/. В общем, кто-то накосячил с путями :-)

Для решения проблемы я просто перенёс файл темы в нужную директорию, после чего CS-Cart template появился у меня в админке:

cs-cart-shablony-spisok

После активации необходимого скина (стиля) темы изменения вступят в силу и на витрине ваши покупатели увидят только что установленную вами CS-Cart theme:

cs-cart-temy-na-vitrine

Подкорректировать её, конечно, ещё нужно, но зато моя оранжевая кнопочка «Вверх» идеально вписалась под оранжевые цвета темы :-)

Из своего негативного опыта, полученного при установке CS-Cart темы, следует вывод, что данный процесс, помимо стандартного мастера, может быть произведён ещё и вручную путём распаковки архива и копирования файлов в директорию, указанную мною выше.

Вообще, если тема была разработана корректно, то структура её файлов должна совпадать с файловой структурой самого CS-Cart, поэтому для установки достаточно скопировать файлы темы просто в корень сайта, подтверждая перезапись существующих файлов (если такая потребуется).

Данный подход применим также и к CS-Cart модулям.

Перенос CS-Cart на хостинг

CMS установлена, наполнена товарами и расширена необходимыми модулями и темами. Теперь единственное, что осталось для начала продаж, — сделать наш магазин доступным глобально в сети Интернет.

Если вы изначально устанавливали CS-Cart на хостинг и производили его настройку там, то следующий материал будет для вас бесполезным.

В противном же случае, если вы, как и я, вели разработку локально, то вам нужно будет перенести готовый магазин на хостинг для CS-Cart. О том, что он уже должен быть куплен и выбрано доменное имя для доступа к сайту, думаю, говорить не стоит :-)

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

По поводу требований к хостингу для CS-Cart магазинов могу сказать, что здесь нет ничего особенного. Подойдёт практически любой из ныне существующих, главное, чтобы они поддерживали PHP, Apache и MySQL. Для выяснения деталей рекомендую обратиться к техническим характеристикам CS-Cart, ссылку на которые я указывал в начале статьи.

Для демонстрации процесса я решил развернуть CS-Cart магазин на поддомене своего сайта — cscart.cccp-blog.com.

Итак, переезд CS-Cart с одного сервера на другой начинается с копирования файлов сайта по FTP/SSH (для ускорения можете запаковать их в архив, если на удалённом сервере есть деархиватор). Лично я пользуюсь старым-добрым FileZilla.

После завершения копирования, пока FTP-клиент у нас ещё открыт, меняем права на директории design, images и var с 755 на 777, а для файла config.local.php устанавливаем 666 вместо 644.

Далее нам нужно будет сделать дамп БД на нашем локальном сервере и развернуть из него базу на хостинге.

Если вы будете испытывать с этим какие-то сложности, то рекомендую к просмотру следующее видео, где помимо упомянутого момента рассматриваются другие детали установки CS-Cart на хостинг:

После того, как вы перенесёте базу данных вашего магазина на удалённый сервер, необходимо будет указать параметры подключения к ней в файле конфигурации config.local.php, лежащем в корне сайта.

Править нужно будет, естественно, файл, лежащий на сервере, поэтому пользуйтесь для этого SSH-клиентами либо файловыми менеджерами, встроенными в панель управления хостингом.

У моего хостинг-провайдера TheHost, например, он выглядит так:

cs-cart-nastrojki-perenosa-na-hosting

На скриншоте выше также представлены настройки поключения к БД, которые вам нужно будет изменить при переносе CS-Cart на другой сервер.

Также в данном файле нужно будет изменить корневой url сайта, иначе в админку мы не попадём — нас будет редиректить на наш локальный сайт:

cs-cart-hosting-nastrojki

Сохраняемся и после этого заходим в панель администратора CS-Cart магазина уже на новом сайте. По идее, если вы всё сделали верно, вы увидите форму авторизации.

С витриной у CS-Cart дела обстоят немного сложнее. Несмотря на все введённые нами ранее настройки, при входе в витрину сайта на хостинге перед нами будет следующая ошибка:

cs-cart-perenos-magazina-na-hosting

Изучая ответ от сервера в отладчике браузера, я обнаружил сообщение о том, что для данного домена витрина не определена.

Чтобы исправить эту ошибку, идём в панель администрирования на страницу Администрирование > Магазины, выбираем наш текущий магазин и меняем значения в полях URL витрины и безопасный URL витрины, указывая в них новое доменное имя вашего магазина.

Также эти значения можно поменять напрямую в БД. Как это сделать, подробно описано на видео, которое я приводил в тексте статьи ранее.

В итоге, после всех манипуляций сайт будет доступен по новому URL. В моём случае это, напомню, cscart.cccp-blog.com, которым вы можете насладиться, пока не закончилась моя 30-дневная пробная лицензия :-)

Если же при переносе CS-Cart магазина на хостинг с локального либо другого сервера у вас возникли какие-то проблемы, вы всегда можете поделиться ими в комментариях под статьёй. Постараюсь вам помочь.

Также вы можете рассчитывать на помощь команды разработчиков CS-Cart, которые могут развернуть сайт на вашем хостинге вместо вас (пр соответствующем обращении к ним на официальном сайте). Всё, что от вас потребуется — не бездействовать и обращаться за помощью :-)

Итак, полный цикл настройки CS-Cart для запуска реального Интернет-магазина, начиная с наполнения его товарами, а также оформления заказов, и заканчивая переносом готового продукта на хостинг, мы рассмотрели.

Если материала в статье вам оказалось мало, и вы хотите большего, то рекомендую вам принять участие в отличном проекте, организованном командой CS-Cart — CS-Cart eCommerce reality show, более подробно о котором вы можете узнать, а также получить доступ ко всем его выпускам здесь — https://www.cs-cart.ru/ecomshow

Если вкратце, то целью проекта было продемонстрировать процесс создания Интернет-магазина с нуля и необходимые меры для раскрутки вплоть до получения реальной прибыли за его счёт, чего удалось достичь спустя 3 месяца после запуска проекта.

Лично я считаю, что идея очень интересная, увлекательная (аплодисменты маркетологам CS-Cart) и весьма полезная с практической точки зрения, особенно для начинающих предпринимателей.

Ведущим проекта выступил опытный eCommerce предприниматель Александр Верес, который в ходе шоу поделился своим опытом и организовал проект — bokal.ru, успешно функционирующий по сегодняшний день.

О том, кто это такой и что он планирует рассказывать в рамках ecomshow, вы можете узнать из следующего видео:

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

Всем удачного запуска и крупных продаж!

До новых встреч :-)

CS-Cart обзор: возможности и знакомство с движком

cs-cart-obzor-kharakteristikПриветствую вас, друзья! :-)

После достаточно продолжительного перерыва в написании статей, вызванного запуском нового ответственного проекта на основной работе, я снова с вами.

Не знаю как вы, а я безумно рад нашей встрече :-) Настолько, что у меня аж руки чешутся написать вам что-нибудь интересненькое.

И таким интересненьким у нас сегодня будет очередная CMS для создания Интернет магазинов, написанная на PHP, — CS-Cart, обзор характеристик которой вас ждёт далее.

О данном продукте я уже упоминал в одной из своих предыдущих публикаций о лучших коробочных CMS для Интернет магазинов, где он занял, на минуточку, второе место после такого маркетингового монстра как 1С Битрикс.

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

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

Изначально мне хотелось сравнить CMS CS-Cart с 1С Битрикс, чтобы выяснить, кто же из них действительно лучший среди платных eCommerce CMS, но, к сожалению (а, на основании отзывов о Битриксе, может и к счастью :-) ) я не работал с последним и счёл сравнение на основании слухов не совсем корректным.

Поэтому вместо 1С Битрикс в роли сегодняшних оппонентов CS-Cart будут выступать известные бесплатные OpenSource продукты OpenCart и WordPress + WooCommerce, на базе которых сегодня создаётся масса eCommerce решений и о которых я достаточно много писал на страницах данного блога, а также сам имел удовольствие работать.

Так что, по традиции, запасайтесь попкорном — впереди вас ждёт много информации :-)

Что за зверь такой CS-Cart?

Своё и ваше знакомство с данным продуктом я решил начать с истории его создания, которая началась в 2005 году в Ульяновске, Россия (что на 4 года раньше современного OpenCart).

Так что если вы оттуда родом и какую-то информацию о данном продукте не найдёте в статье — можете сами пойти к ним в офис и расспросить их обо всём интересующем, а потом поделиться вашими знаниями в комментариях под статьёй со всеми :-) Адрес офиса и телефон можете найти на официальном сайте CS-Cart в разделе «Контакты».

Да, CS-Cart – отечественный продукт фирмы Simbirsk Technologies (или SimTech), что роднит его с 1С Битрикс и отдаляет от OpenCart и WordPress. Этот факт, кстати, уже сам по себе большой плюс, т. к. со 100% уверенностью можно рассчитывать на наличие русскоязычного саппорта и комьюнити (CS-Cart форум доступен по данному адресу — http://forum.cs-cart.com/forum)

На данный момент, по официальной информации производителей CS-Cart, на базе данного движка запущено более 35 000 магазинов по всему миру.

Среди самых ярких примеров работающих Интернет магазинов на CS-Cart можно выделить следующие:

  1. https://pudra.ru/ — огромный отечественный маркет косметики (больше 35 000 товаров);
  2. https://www.thesecretcellar.co.uk/ — британский винный Интернет-магазин;
  3. https://www.yumbles.com – CS-Cart multivendor магазин сладостей;
  4. http://obvalcen.ua/ — украинский магазин одежды и обуви с более 100 000 позиций;
  5. https://www.shopclues.com/ — индийский аналог eBay, где можно купить всякую всячину. Своим примером доказывает то, что highload ресурс на CS-Cart возможен. Сайт содержит 53 000 000 товаров и выдерживает тысячи посетителей в день. Однако, для жителей России есть неприятная новость — полюбоваться данным чудом можно будет через анонимайзер, т.к. доступ для посетителей из данного региона почему-то закрыт.

Кстати, отзывы о CS-Cart и впечатления от работы с ним владельцев перечисленных магазинов и более также доступны на официальном сайте данной CMS.

По приведённым примерам видно, что CS-Cart подходит не только для Интернет магазинов, торгующих различной продукцией, но и имеет очень широкую географию клиентов: от России и Украины до Австралии, Великобритании, Индии и США.

Также при изучении данных сайтов я обратил внимание на то, что они все имеют абсолютно различный дизайн и напичканы разнообразным функционалом, несмотря на то, что платформа у них у всех одна.

Отдельного слова также заслуживает документация CS-Cart по эксплуатации CMS и руководство для разработчиков, рассматривающие все процессы до мельчайших подробностей — https://www.cs-cart.ru/docs/4.7.x/, которых у OpenCart и WordPress просто нет.

У CS-Cart же я обнаружил не просто доку, а целую энциклопедию с кучей подробных статей для всех версий движка (естественно, на русском языке, т.к. движок отечественный) и массой видеоуроков, что не может не радовать :-)

Поскольку продукт, как уже говорилось, коммерческий, то у него есть несколько вариантов поставки или дистрибутивов, другими словами: русскоязычный «чистый» CS-Cart, CS-Cart с предустановленной Unitheme и CS-Cart Ultimate, у которых, естественно, разная стоимость, хотя различия между ними незначительны.

Самый простой способ определиться с тем, что вам нужно — посмотреть всё воочию :-)

Функционал самой дешёвой, «базовой» версии будет описан далее в статье.

CS-Cart UniTheme отличается от неё только тем, что вместо базовой темы оформления в данном дистрибутиве используется UniTheme. В качестве официального онлайн CS-Cart demo, кстати, используется именно данный вариант, который доступен по адресу — https://www.cs-cart.ru/demo-shop.html

В данной демо версии многие функции админки недоступны (например, манипуляции с модулями и шаблонами), поэтому, чтобы получить к ним доступ, у CS-Cart есть вариант предоставления персонального демо на 15 дней по данной ссылке – https://www.cs-cart.ru/personal-demo.html.

Дистрибутив же CS-Cart Ultimate отличается от базового тем, что в рамках его можно создавать неограниченное количество витрин (данная возможность будет интересна только желающим запустить несколько Интернет магазинов для управления ими из одной админки).

Кроме онлайн демо и персонального для ознакомления с возможностями данного движка есть ещё вариант скачать CS-Cart бесплатно для использования его в течении 30 дней. При этом вам предоставляется полноценный дистрибутив русифицированной базовой версии CMS, который можно установить на свой локальный или удалённый сервер и вдоволь «поклацать» :-) Даже заглянуть в код :-)

Причём, при данном варианте знакомства с характеристиками CS-Cart вы можете рассчитывать на помощь специалистов компании-разработчика продукта, которые сами установят вам движок на сервер и произведут все необходимые настройки.

Поскольку данный вариант ознакомления с CS-Cart даёт наибольшую свободу, то я решил воспользоваться именно им и поделиться с вами своим опытом и впечатлениями реального пользователя.

Изучаем админку CS-Cart

Итак, первое, что мы видим после установки CS-Cart и перехода в админку, — это дашборд со статистикой продаж, товаров, страниц, а также перечнем заказов и их основной информации:

cs-cart-adminka-dashbord-statistika

Админка CS-Cart имеет чёткую внутреннюю структуру: каждая страница содержит хэдер с главным меню, а также зону контента, где расположено содержимое страницы.

Главное меню в CS-Cart “слоёное”, т. е. состоит из нескольких уровней для удобства администрирования и содержит следующие пункты:

cs-cart-admin-menyu

Особенно порадовало наличие в CS-Cart такой фишки, как быстрое меню, которое представлено на изображении выше в развёрнутом виде и открытом в режиме редактирования.

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

Под меню располагается заголовок страницы с элементами управления и ещё на некоторых страницах в данном блоке присутствует кнопка «Посмотреть, как это работает», при нажатии на которую открывается блок с тематическими видеоуроками из официальной коллекции видео CS-Cart — https://www.cs-cart.ru/videos/admin/.

Под видеоплеером, кстати, есть ссылка на полный список видео:

cs-cart-video-v-adminke

Единственное, что мне не понравилось в CS-Cart admin panel — это то, что она неадаптивная, т.е. под размер экрана она не подстраивается и при администрировании с мобильного устройства вам придётся пользоваться зумом.

В этом плане CS-Cart немного проигрывает OpenCart, WordPress и другим CMS, которые уже давно переписали свои панели администратора с использованием адаптивных frontend тем.

Однако, разработчики CS-Cart вовсю работают над устранением данного упущения и даже запустили уже бета версию адаптивной админки, которая пока доступна в виде модуля, но совсем скоро будет поставляться вместе с CMS по умолчанию.

На мобильных устройствах выглядеть она будет так:

cs-cart-mobilnaya-versiya

Итак, пройдёмся по меню CS-Cart и рассмотрим наиболее интересные возможности, доступные в базовой комплектации CMS.

Хочу сразу сказать, что возможностей у CS-Cart много. Очень много… Поэтому далее последует обзор только наиболее интересных, которых я не видел у других CMS в принципе либо которые доступны только после установки специальных плагинов.

И для удобства изложения я решил разбить данный CS-Cart обзор возможностей на две части: в первой мы рассмотрим модули для управления функционалом магазина, а во второй — инструменты для изменения внешнего вида витрины.

Функциональные характеристики CS-Cart магазина

Описание таких банальных функций, как просмотр статистики заказов, продаж, администрирование товаров, их характеристик и категорий я решил упустить, т.к. их можно встретить в любой eCommerce CMS, поэтому читать о них лишний раз вряд ли кому-то понравится.

Если вы вдруг не увидите среди перечисляемых далее функций ту, которую вы хотите видеть в своём магазине — не расстаривайтесь :-) Это не значит, что её нет в CS-Cart.

Воспользуйтесь демо CS-Cart, чтобы убедиться в её наличии, а ещё лучше — скачайте и установите движок самостоятельно, чтобы изучить его как следует и настроить по своему вкусу — возможно, по истечении тестового периода вы захотите запустить на базе полученного результата реальный проект.

Итак, что в CS-Cart есть интересного по умолчанию?

Генерация штрих-кодов

В CS-Cart штрих-код товара можно генерировать сразу после установки CMS, т.к. в нём по умолчанию присутствует соответствующий модуль. Настройки его выглядят следующим образом:

cs-cart-modul-generacii-shtrikh-koda-tovara

Возможность генерации прайс-листов

Очень важная функция как для розничных, так и для оптовых покупателей. В CS-Cart прайс-листы можно генерировать как единоразово, так и автоматически в соответствии с расписанием планировщика задач CRON.

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

Синхронизация с Яндекс.Маркет

В CS-Cart “из коробки” также доступен модуль, позволяющий загружать товары, добавленные через админку магазина, на Яндекс.Маркет для охвата большей аудитории. Модуль позволяет настраивать статусы заказов, способы оплаты и др.

Для удобства переноса товаров из магазина на Яндекс.Маркет в CS-Cart также есть модуль генерации YML файлов прайс листов. При генерации нового YML файла доступны практически те же возможности, что и при генерации обычного прайса: выбор экспортируемых полей, фильтры товаров, варианты доставки и т. д.

Выгрузка товаров из Яндекс.Маркета в магазин CS-Cart также возможна.

Данная возможность, как и предыдущая, отсутствуют в OpenCart и WordPress по умолчанию, не смотря на то, что, как показывает мой опыт разработчика, она является весьма востребованной.

Администрирование нескольких магазинов из одной админки

Мультивитринность не является инновационной возможностью, которой никто, кроме CS-Cart, не обладает. Есть она и у OpenCart по умолчанию.

Однако, в CS-Cart, помимо банальной возможности наполнения товарами нескольких магазинов, доступен дополнительный интересный функционал, который будет полезен владельцам нескольких магазинов и торговых сетей.

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

Авторизация через социальные сети

Для того, чтобы ваши пользователи могли авторизовываться на вашем сайте через свои аккаунты в социальных сетях (по всем известной технологии OAuth2) в CS-Cart есть целых 3 модуля.

Первый из них позволяет производить все необходимые настройки путём добавления API ключа сервиса janrain.com, а остальные два разработаны на базе OpenSource библиотеки HybridAuth и позволяют добавлять авторизацию через российские и зарубежные социальные сети с возможностью выбирать какие-то одни.

Единственный момент, который мне здесь не понравился — это то, что в настройках модулей можно выбрать только размер иконок и возможность генерации случайных email. Сами же социальные сети выбираются в другом меню:

cs-cart-modul-socialnykh-setejПосле выбора социальной сети из списка появляется окно ввода API данных конкретного сервиса. Как по мне, данная реализация слегка неудобная, т. к. требует от пользователя много телодвижений. Но, она хотя бы есть, в отличие от OpenCart и WordPress, которые о Вконтакте, Одноклассниках и Яндексе по умолчанию слухом не слыхивали :-)

Создание рассылок

Из коробки CS-Cart также позволяет создавать email рассылки, с помощью которых можно уведомлять покупателей об акциях, предлагать им завершить заказ, если по каким-то причинам они оставили его в корзине, и вообще обо всех событиях магазина, какие сочтёте нужными.

Инструмент по работе с рассылками позволяет создавать шаблоны писем, формировать списки рассылок, кампании и т.д. Одним словом, вашим маркетологам будет чем заняться :-)

Водяные знаки

Достаточно интересный модуль, позволяющий добавлять на изображения, загружаемые в CS-Cart, водяные знаки, защищая их, таким образом, от копирования вашими конкурентами.

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

Возврат товаров

Как по мне, очень нужная опция, которая показывает уровень сервиса магазина и увеличивает доверие к вам пользователей. И очень приятно, что в CS-Cart она доступна по умолчанию.

При активации соответствующего модуля у ваших клиентов на витрине появится возможность оформлять запросы на возврат товара с выбором причины возврата и варианта компенсации (возврат денег или замена товара).

Безопасность магазина

CS-Cart позволяет менять url админки и блокировать доступ как к admin panel, так и к витрине отдельных пользователей по IP адресу.

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

Данное средство поможет вам поддерживать работоспособность вашего магазина и защитить его от атак, которые, как правило, производятся через модули и темы недобросовестных разработчиков.

Редактор файлов

В админке CS-Cart есть встроенный файловый менеджер, позволяющий загружать, редактировать и удалять различные файлы, используемые Интернет магазином в своей работе.

Выглядит он следующим образом:

cs-cart-fajlovyj-menedzher

Очень полезная вещь, позволяющая очистить дисковое пространство сервера, если оно ограничено вашим тарифным планом хостинга, за счёт удаления разного рода мусора.

Подарочные сертификаты

В CS-Cart также есть возможность создания подарочных сертификатов на определённую сумму, которая указывается в настройках модуля (минимальный и максимальный порог).

Также можно настраивать возможность оплаты доставки и создавать сертификаты на определённые товары магазина.

Режим каталога

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

В ближайшем сородиче CS-Cart – OpenCart я такого не встречал ни из коробки, ни в виде модуля.

Ещё один тип сайта, который можно сделать на базе CS Cart, — маркетплейс (на языке оригинала Marketplace) — торговая площадка, на которой пользователи могут выступать как в режиме продавца, так и покупателя (отсюда и второе название — Multivendor).

Реализуется, как и в большинстве eCommerce CMS, с помощью модуля, который так и называется — CS Cart Marketplace.

Разнообразие способов оплаты товаров

CS-Cart может похвастаться огромным количеством доступных способов оплаты, которыми могут пользоваться покупатели при расчёте.

В их числе характерные для российского рынка Assist, Яндекс.Касса, Webmoney, Сбербанк, PayAnyWay, PayMaster, ПлатиДома, РБК, Robokassa, ВсеВкредит, Авангард, Payler. Большинство из них не доступно в OpenCart и WP + WooCommerce по умолчанию по той же причине, что и отечественные соцсети.

Также есть возможность оплаты через PayPal, оформления кредитов через Альфа-банк, перевод на банковскую карту и, если ничего из вышеприведённого не подошло, вариант обсуждения способа оплаты по телефону.

Яндекс поиск по сайту

Данная возможность добавляется на сайт при включении соответствующего модуля. Преимущества данного вида поиска над стандартным можно встретить в Интернете повсеместно, основным из которых является более высокая точность и релевантность.

Кроме того, поиск производится по всем элементам страницы, включая комментарии и прочую второстепенную информацию, в то время, как стандартный поиск, как правило, работает только с названиями товаров и их описаниями. С помощью Яндекса вы сможете искать не только товары, но и посты блога, категории и др.

К слову, я тоже пользуюсь сторонним поиском на своём сайте, только от Google, и могу сказать, что прикручивание и настройка данной фичи впервые заняла у меня в районе 3-4 часов, которые можно сэкономить благодаря наличию в CS-Cart соответствующего модуля.

Бонусные баллы

В CS-Cart доступен функционал, позволяющий вам создавать для своих покупателей бонусную программу (система начислений бонусных баллов с возможностью расплачиваться ими за товары), а также настраивать её по различным параметрам.

Среди доступных опций имеется установка курса конвертации бонусов, пересчёт бонусных цен с учётом скидок, а также установка размера бонуса за приобретение товаров (в процентах от стоимости или фиксированное число), который можно делать разный для различных покупателей.

Достаточно банальная опция, которая есть в OpenCart, но в CS Cart она имеет однозначно больше настроек.

Скидки

В CS-Cart по умолчанию доступен такой востребованный функционал, как конструктор скидок, с помощью которого можно задавать различные условия, при которых будет доступна скидка и её размер.

Причём, условия могут даже объединяться в группы и указываться различая степень соответствия всем им или каким-то отдельным.

В итоге, товар со скидкой будет выглядеть следующим образом:

cs-cart-skidka-na-tovar

Если скидка действует некоторое время, то цена станет прежней по истечении указанного периода.

Доставка товаров

У CS-Cart из коробки идут модули для организации доставки товаров через Почту России, Boxberry и Яндекс.Доставка.

Также есть вариант доставки самовывозом. Для Почты России можно рассчитывать стоимость доставки.

Комбинации товаров

CS-Cart имеет большое преимущество над другими CMS (над OpenCart, в частности) благодаря возможности составлять помимо автоматических списков товаров (хиты продаж, товары из категории и с похожей ценой) ещё и произвольные комбинации, которые можно размещать на странице товаров и категорий магазина.

Названия данных комбинаций, естественно, могут быть самыми разными в зависимости от вашей маркетинговой политики.

Прикрепляемые файлы

CS-Cart имеет возможность добавлять на страницу товаров различные файлы.

Это очень полезная функция, позволяющая сэкономить массу времени и сил, если вы хотите дополнить описание товара различными сертификатами, характеристиками, которые очень сложно переносить в текст описания и форматировать.

Обратный звонок и покупка в один клик

Одноимённый модуль CS-Cart позволяет разместить на странице товара два новых элемента: кнопку для «заказа в один клик», т. е. без заполнения подробной информации о заказе (достаточно ввести только имя, телефон или email), и кнопку для заказа обратного звонка.

Форма заказа обратного звонка содержит поля для указания удобного времени для связи с клиентом, номер телефона и имя. После оформления заказа он появится в админке по пути Заказы > Обратный звонок.

SEO оптимизация

Среди инструментов для SEO в CS-Cart я также нашёл много всего интересного, позволяющего производить очень тонкую настройку контента страниц под требования поисковых систем.

Среди них:

  • генерация XML карты сайта для Google и Яндекс роботов;
  • создание правил формирования URL страниц и ЧПУ;
  • генерация пользовательской карты сайтов с произвольными ссылками для удобства навигации по сайту;
  • настройка файла robots.txt в CS-Cart админке;
  • создание 301 редиректов для переноса ссылочного веса с удалённых страниц и для SEO оптимизации сайта в целом.

Также хотелось отметить, что CS-Cart, помимо банальной возможности заполнения мета-данных, позволяет ещё и увидеть, как будет выглядеть страница в поисковой выдаче с учётом всех настроек:

cs-cart-google-predposmotr

Инструменты аналитики

Помимо стандартных графиков и табличек заказов и продаж, характерных для всех CMS для Интернет магазинов, данный движок содержит модули для быстрой интеграции CS-Cart сайта с Google Analytics и Яндекс.Метрика.

Всё, что от вас потребуется — зарегистрироваться в данных системах и получить код счётчиков.

Редактор переводов

Благодаря данному инструменту CS-Cart предоставляет возможность самостоятельного редактирования надписей и сообщений, если вдруг вам не понравится их перевод. Выглядит он так:

cs-cart-perevody-yazykovye-fajly

Через данный редактор переводов CS-Cart также позволяет добавить или удалить язык витрины магазина (по умолчанию доступны украинский, русский и английский).

Ведение журнала событий

Данный инструмент является отличной альтернативой стандартным логам Apache, PHP, MySQL и прочих серверных компонентов, к которым ещё и не всегда есть доступ.

Полный список логгируемых событий, из которых в дальнейшем будут состоять ваши CS-Cart логи, представлен ниже:

cs-cart-logi-dejstvij-i-oshibok

В журнале событий помимо действий, происходящих на сайте, отображается ещё и кто их совершал, чтобы можно было оперативно «найти виновных» :-)

Резервное копирование и восстановление

Думаю, вы знаете о том, что такое бэкап и зачем его делают :-) Если в большинстве CMS данное действие производится на хостинге либо вручную по FTP/SSH, то CS-Cart позволяет создавать резервные копии и восстанавливаться из них прямо в панели администратора.

Импорт и экспорт данных

В админке CS-Cart я нашёл ещё одну полезную фишку, которая в OpenCart, да и других бесплатных CMS добавляется только с помощью дополнительных модулей — это возможность импортировать и экспортировать различную информацию с сайта. В CS-Cart импорт товаров и прочей информации происходит из обычных текстовых файлов CSV формата.

Данная фича позволит вам автоматизировать процесс наполнения магазина и массовой выгрузки из CS-Cart товаров и их характеристик, пунктов самовывоза, заказов, переводов, пользователей и подписчиков.

Режим обслуживания

Порой случаются ситуации, когда нужно произвести какие-то действия на работающем сайте, но крайне нежелательно, чтобы пользователи весь этот процесс наблюдали.

Для этого в CS-Cart есть режим обслуживания, который позволяет решить данное неудобство с помощью кратковременного закрытия витрины магазина из админки:

cs-cart-zakryt-vitrinu

Как видно на скриншоте, помимо закрытия витрины CS-Cart представляет возможность генерации ключа доступа к закрытой витрине, которым можно делиться со всеми участниками процесса доработок магазина.

Возможность ведения блога

Ещё одна полезная вещь, которая идёт в CS-Cart по умолчанию, — это блог, который можно встраивать в свой магазин. Полезность данного инструмента заключается не только в возможности написания коротких новостных постов, но и в привлечении трафика на свой сайт из поисковых систем.

По поводу оформления статей на сайте в CS-Cart всё стандартно: WYSIWYG-редактор (который, кстати, можно выбирать), выбор категории, значения meta тэгов для SEO, однако, есть и интересные находки, которых нет в WordPress, например, хотя он является чисто блоговым движком.

К таковым можно отнести выбор группы пользователей, которым будет доступна статья, время доступности, а также создать вёрстку для каждого поста индивидуально за счёт конструктора форм.

Опросы и голосования

CS-Cart, как вы уже могли убедиться, предоставляет из коробки массу маркетинговых инструментов. Самым интересным, по моему мнению, является возможность создания опросов на любые интересующие вас темы, чтобы максимально удовлетворять потребности своих клиентов.

Благодаря данному инструменту вы сможете добавлять в голосование интересующие вас вопросы и их варианты ответов, а также смотреть статистику ответов на них.

Настройка дизайна витрины CS-Cart магазина

Итак, вторая часть данного CS Cart обзора, как я уже и говорил, будет посвящена инструментам для коррекции дизайна витрины.

Для настройки внешнего вида витрины CS-Cart Интернет магазина его создатели добавили в админку множество инструментов, которые доступны в пункте Дизайн главного меню.

Первый из них — редактор тем, который схож по своим функциональным возможностям с аналогичным инструментом, встроенным в WordPress:

cs-cart-redaktor-tem

С его помощью вы сможете легко и быстро изменить основные цвета сайта, логотип, шрифты, фон, выбрать другую тему, добавить произвольные CSS стили и мгновенно увидеть, как будет выглядеть магазин после сохранения внесённых вами изменений на превью в правой части экрана.

Также CS-Cart располагает редактором контента, который позволяет изменять текст основных элементов интерфейса прямо на сайте.

cs-cart-nastrojka-soderzhimogo-sajta

На скриншоте выше я в качестве примера изменил стандартную надпись в строке поиска «Искать товары» на «Поиск товаров».

Кроме того, CS-Cart позволяет изменять местоположение основных блоков страниц сайта:

cs-cart-nasrtojka-raspolozheniya-blokov-visual-composer

Лично мне он напомнил Visual Composer, который можно увидеть в некоторых темах того же WordPress. К слову «прикрутить» данный плагин к магазину на WP + WooCommerce будет стоить 59$, в то время, как у CS-Cart он идёт по умолчанию.

Как вы видите на скриншоте выше, корректировать можно абсолютно все страницы, включая даже страницу 404 ошибки. Типов блоков на данный момент для стандартной темы 62, причём вы можете дополнить данный список своими собственными наработками как на базе существующих, так и написать полностью собственный на чистом HTML + CSS.

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

cs-cart-redaktor-koda-shablonov

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

При запуске витрина принимает следующий вид:

cs-cart-rezhim-dizajnera

Как видите, в данном режиме возле всех элементов интерфейса появляются кнопки их редактирования, при нажатии на которые открывается окно редактирования кода выбранного элемента, содержащее полноценный IDE редактор с подсветкой синтаксических конструкций и форматированием:

cs-cart-redaktor-fajlov-temy

Если сравнивать CS Cart с OpenCart на данном шаге, то у последнего подобный редактор появился только сравнительно недавно и его нельзя вызывать из режима дизайнера для редактирования любого элемента витрины. В WordPress же данный редактор кода страниц вообще убог: через него можно править лишь некоторые файлы, и то, не понятно, в каком из них нужно искать необходимый для редактирования элемент.

Ещё одним полезным инструментом, доступным в меню Дизайн, является редактор шаблонов email, которые приходят пользователям и администратору (т.е. вам) с сайта при различных системных событиях (регистрация, восстановление пароля, изменение статуса заказа и т.д.). Выглядит он следующим образом:

cs-cart-redaktor-shablona-email-pisma

Здесь представлен макет письма, а также различные переменные, которые могут быть использованы при формировании итогового email (подобная штука имеется в WordPress, правда, в виде стороннего плагина).

Также данный редактор даёт возможность добавлять в письмо сниппеты — фрагменты HTML кода, которые можно встраивать в макеты писем, и прикреплять различные PDF файлы.

Кроме перечисленных возможностей корректировки дизайна сайта CS-Cart имеет инструмент для изменения структуры различных меню сайта (главное, быстрые ссылки, футер и т.д.). Он представляет собой список меню, при переходе на которые открывается страница со списком элементов.

При нажатии на каждый из них открывается окно с его настройками:

cs-cart-menu-builder

Настроек у элементов CS-Cart меню много, но лично мне данный редактор меню не понравился своей громоздкостью и я бы предпочёл тот, который реализован в WordPress как более простой. Однако, по сравнению с OpenCart, он вообще есть :-)

Ну, и последним пунктом доступным в рассматриваемом нами меню Дизайн является редактирование вкладок на странице товара (отзывы, характеристики, файлы и т.д.) с возможностью добавлять их, удалять, а также включать у определённых товаров.

Обзор возможностей CS-Cart: эпилог

При написании статьи с обзором коммерческих движков я часто называл их коробочными, т. е. таковыми, у которых всё необходимое для работы идёт «из коробки».

Данный CS-Cart обзор это наглядно подтверждает: как вы могли видеть в данном обзоре, после установки он содержит уже всё самое необходимое (и, по моему мнению, даже больше) для старта продаж.

Поэтому, сказать, что CS-Cart меня впечатлил — ничего не сказать :-)

Да, пусть он неидеален: админка не адаптивная, некоторые инструменты не совсем удобны в использовании, но в целом лично для меня он порвал OpenCart и WordPress как тузик грелку, т.к. у последних по умолчанию не доступно и 50% возможностей базовой комплектации CS-Cart.

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

Да, за такое удовольствие, согласитесь, можно и заплатить. Тем более, что лицензия пожизненная (не нужно постоянно её продлевать) и гарантирует вам постоянную поддержку производителей.

Возможно, кому-то цена CS-Cart в 385$ может показаться слишком высокой, однако, если взглянуть на прайс листы веб-студий, где цены на Интернет магазины «под ключ» начинаются от 1000$, то оказывается, что это не такие уж и космические деньги.

Даже если говорить о фрилансе, где ценник будет ниже (в районе 600-800$), экономия при использовании CS-Cart становится очевидной.

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

В CS-Cart же, если вы вдруг и захотите установить модуль (что при обширных базовых возможностях случится не скоро), то будете иметь дело с официальными продуктами и соответствующим саппортом.

Стоит ли покупать CS-Cart?

Использовать CS-Cart для запуска своего Интернет магазина или нет — решать в итоге всё равно вам. Я лишь высказал свою точку зрения на основании увиденного своими глазами.

Если же вам интересен будет мой ответ на вопрос Стоит ли покупать CS-Cart?, то после моего подробного знакомства с возможностями данного движка я скажу следующее.

Если вы далеки от программирования и не горите желанием искать модули, шаблоны, вникать во все его тонкости, а также в технические особенности выбираемой платформы (всякие там ocMod и VqMod для OpenCart, чтобы банально установить модуль, совместимость дополнений между собой и с версиями движка и т.д.), то ответ будет Да.

Если же Интернет магазин вы создаёте чисто из интереса, а не для бизнеса, располагаете лишним временем на поиск платформы и изучение её особенностей, а также сумма для приобретения CS-Cart вам кажется неподъёмной, то ответ будет Нет.

Поэтому решайтесь, определяйтесь — и в путь :-)

Надеюсь, что сегодняшняя статья была вам полезна. Пишите ваши отзывы и пожелания в комментариях, ставьте оценки с помощью звёздочек и подписывайтесь на обновления проекта, чтобы быть в курсе выхода новых публикаций.

За сим спешу откланяться… Удачи и до новых встреч :-)

Акция на шаблоны TemplateMonster: скидки до 35%

shablony-templatemonster-skidkiВсем привет! :-)

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

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

И первой в Новом 2018 году является акция на шаблоны TemplateMonster, позволяющая вам сэкономить до 35% от стоимости приобретённых шаблонов для сайта.

Не важно, новый вы клиент или постоянный. С 22 по 25 января 2018 года на все платные шаблоны, приобретённые у TemplateMonster, абсолютно для всех покупателей действует скидка в размере от 20% до 35% его стоимости.

Её размер зависит от суммы вашего заказа:

  • При заказе до $75 вы получаете скидку 20%.
  • Заказ $75-$139  поможет сэкономить 30%.
  • Заказы от $139 принесут вам 35% скидку.

Следовательно, чем больше вы тратите, тем больше у вас получится сэкономить. К примеру, вы можете приобрести шаблон, стоимостью 75$ за 60$. А 80$ шаблон за 56$ :-) Но я вам этого не говорил 😉

Если вы никогда не работали с TemplateMonster, то рекомендую перейти к ним на сайт и познакомиться с ассортиментом, который, думаю, заинтересует каждого без исключения благодаря наличию шаблонов и плагинов для сайтов, работающих на различных CMS:

Также вы сможете найти продукты различной сложности, посвящённые определённым тематикам и заказать для них ряд дополнительных услуг (установка на сайт, дополнение плагинами, интеграция визуальных конструкторов и т.д.).

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

Одним словом, пользуйтесь предоставленной TemplateMonster возможностью сэкономить, но спешите: их щедрость не безгранична и в этот раз будет длиться всего 4 дня…

По этой же причине я решил вас уведомить об этом событии пораньше, чтобы вы успели выбрать понравившийся вариант, а потом купить его по скидке 😉

Впрочем, кого я учу… вы и сами знаете, что делать :-)

Чтение файла в PHP. Выбираем оптимальный вариант

parser-fajla-phpПриветствую вас, друзья! :-)

Думаю, что, если не все, то, уж точно большинство из вас сталкивались на практике с необходимостью чтения информации из txt файлов на уровне серверных скриптов. У меня, по крайней мере, таких случаев было несколько, о последнем из которых я вам сегодня и расскажу.

Ничего в этом сложного нет, но иногда глаза разбегаются от обилия вариантов, предоставляемых средствами серверных языков. Если говорить конкретно о PHP, на котором я сейчас программирую, то с помощью его функций можно считывать содержимое файлов и построчно, и целиком в строку, и в массив, причём для последнего варианта существует ещё несколько способов… Вот такие пироги :-)

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

Поэтому, сегодня я продемонстрирую вам работу различных функций PHP для чтения файлов, чтобы, когда вам нужно будет создать PHP парсер файла для решения реальных задач, вы знали, из чего выбирать. А также подскажу, как именно в «боевых условиях» сделать правильный выбор.

Поехали! :-)

Создаём PHP парсер файла — начальные условия

Перед тем, как мы начнём, пару слов о задаче, для которой я создавал парсер файла на PHP, а затем выбирал из реализованных вариантов оптимальный.

Однажды у меня на работе возникла проблема, которая заключалась в том, что в БД хранились телефоны пользователей в неверном формате. Сам баг я, естественно, без проблем пофиксил.

Но, что делать с неверной информацией, которая на тот момент уже хранились в базе данных? Естественно, её нужно было заменить на корректную.

Для этого мне был предоставлен текстовый файл с идентификаторами пользователей и их телефонами, которые нужно было перенести в БД.

Должен сказать, он получился весьма увесистым: 352 Кбайта и 8223 строки текста, в каждой из которых содержался идентификатор пользователя и его телефон в формате id_пользователя:номер_телефона.

Словом, вся задача заключалась в построчном чтении файла PHP средствами, выделения из строки идентификатора и телефона с последующим обновлением значения телефона у пользователя в БД, найденного по айдишнику.

Мой проект был реализован на PHP фреймворке Yii, следовательно в дальнейших примерах кода вы встретите элементы его API для работы с БД, в частности, поэтому не пугайтесь :-)

После анализа имеющихся в языке конструкций, а также опыта других разработчиков, по крупицам собранного в Интернете, мне удалось выделить 4 способа, которые я далее вам и продемонстрирую.

Ну, а после я расскажу, по каким критериям и как именно я выбирал среди них оптимальный вариант. И, естественно, поделюсь результатами :-)

Так что данная статья — отличная тренировка терпеливости :-) Суть её будет заключаться в подробном изучении следующего материала вплоть до результатов, которые будут ждать вас в конце. По ходу, кстати, можете поработать ещё и над фантазией, предполагая, как именно будет выбираться идеальный вариант.

Чтение файла в PHP построчно с помощью fgets()

Для того, чтобы прочитать файл построчно, в PHP есть специальная функция fgets(). Чтобы с её помощью считать содержимое всего файла, её нужно вызывать в цикле, проходясь по всем строкам.

В итоге, PHP парсер файла, реализующий данный алгоритм, у меня принял следующий вид:

<?php

$filename = "users.txt";

if (file_exists($filename) && is_readable($filename)) {
    $fh = @fopen($filename, "r");

    if ($fh) {
        while (($line = fgets($fh, 4096)) !== false) {
            if (!empty($line)) {
                $params = explode(':', $line);
                if (!empty($params[0]) && !empty($params[1]) && $params[1] != 'Fake') {
                    $client = Clients::model()->find('unique_id IN (:id1, :id2)', array(':id1' => strtolower($params[0]), ':id2' => strtoupper($params[0])));
                    if ($client) {
                        $client->phone = str_replace(array("\r", "\n"), "", $params[1]);
                        $client->save();
                    }
                }
            }
        }

        if (!feof($fh)) {
            echo 'Error: unexpected fgets() fail\n';
        }

        fclose($fh);
    }
    else echo "Check the filename, file doesn't exists!";
}

Немного расшифрую свою писанину, если у кого-то возникнут сложности в понимании.

В самом начале, переменной $filename присваивается значение имени файла, который будет парситься, с полным путём к нему. Далее следуют PHP проверка существования файла и читаем ли он с помощью функций file_exists() и is_readable() соответственно.

Если всё ОК, то открываем файл с помощью функции fopen(), которая вызывается с PHP оператором управления ошибками для того, чтобы отключить вывод ошибок, генерируемых данной функцией. Использовать я его решил, чтобы сгенерировать своё сообщение об ошибке вместо стандартного.

Если файл открыть получилось, то мы проходимся по всем его строкам в цикле, пока файл не закончится, и, если строка не пустая, разделяем её по символу двоеточия функцией explode().

Затем проверяем, что id пользователя и его телефон не пустые, ищем пользователя в БД по айдишнику и, если таковой существует, то обновляем ему номер телефона, убрав из значения номера предварительно символы переноса и начала новой строки.

Ну, и ещё я использовал PHP функции strtolower() и strtoupper() для проверки существования в БД пользователя с идентификаторами, которые могли быть прописаны в различных регистрах, т.к. они в моём случае состояли из символов и цифр.

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

PHP парсинг файла в массив с помощью file()

Данный метод чтения файла в PHP предполагает использование функции file(), которая открывает файл и помещает его содержимое в массив. При этом элементами массива будут являться, как раз, строки считываемого файла, что в моей ситуации отлично подходит.

Код данного варианта PHP парсера файла получился следующий:

<?php

$filename = "users.txt";

if (file_exists($filename) && is_readable($filename)) {
    $lines = @file($filename);

    if (!empty($lines)) {
        foreach ($lines as $line) {
            if (!empty($line)) {
                $params = explode(':', $line);

                if (!empty($params[0]) && !empty($params[1]) && $params[1] != 'Fake') {
                    $client = Clients::model()->find('unique_id IN (:id, :id2)', array(':id' => strtolower($params[0]), ':id2' => strtoupper($params[0])));
                    if ($client) {
                        $client->phone = str_replace(array("\r", "\n"), "", $params[1]);
                        $client->save();
                    }
                }
            }
        }
    }
    else echo "Check the filename, file doesn't exists!";
}

Как видите, от предыдущего способа чтения файла в PHP данный отличается только своим началом, где файл открывается и сразу же считывается функцией file() вместо связки fopen() + fgets(), как ранее.

Далее код такой же.

PHP чтение файла в переменную с помощью fread()

Ещё одной функцией PHP для разбора файла является fread(), с помощью которой можно читать различные фрагменты файла указанной длины. Чтобы прочитать файл в PHP целиком, в качестве размера фрагмента я указал размер файла, полученный с помощью функции filesize():

<?php

$filename = "users.txt";

if (file_exists($filename) && is_readable ($filename)) {
    $fp = @fopen($filename, 'r');
    
    if ($fp) {
        $lines = explode("\n", fread($fp, filesize($filename)));
    }

    if (!empty($lines)) {
        foreach ($lines as $line) {
            if (!empty($line)) {
                $params = explode(':', $line);

                if (!empty($params[0]) && !empty($params[1]) && $params[1] != 'Fake') {
                    $client = Clients::model()->find('unique_id IN (:id1, :id2)', array(':id1' => strtolower($params[0]), ':id2' => strtoupper($params[0])));
                    if ($client) {
                        $client->phone = str_replace(array("\r", "\n"), "", $params[1]);
                        $client->save();
                    }
                }
            }
        }
    }
    else echo "Check the filename, file doesn't exists!";
}

Данный способ чтения файла PHP средствами, на самом деле, очень похож на предыдущий, т.к., несмотря на то, что с помощью PHP данные из файла изначально считываются не в массив, а в строковую переменную, далее она всё равно преобразуется в массив, т.к. с ним проще работать, чем со строкой.

Преобразование строки в массив на PHP проще всего сделать с помощью уже применявшейся сегодня функции explode(), в качестве разделителя в которую был передан символ начала строки.

А дальше всё идёт по накатанной :-)

Создаём PHP парсер файла на базе file_get_contents()

Ну, и напоследок, я решил реализовать PHP парсинг файла с помощью функции file_get_contents(), которая, как раз и предназначена для чтения файла целиком в строку, т.е. работает, практически, как fread($fp, filesize($filename)).

За тем лишь исключением, что file_get_contents() самостоятельно открывает файл и считывает его, в то время как для использования fread() нужно было предварительно открыть файл через fopen() и получить его указатель для дальнейшего использования.

В целом, код PHP парсера файла на базе file_get_contents() будет практически как и в предыдущем случае:

<?php

$filename = "users.txt";

if (file_exists($filename) && is_readable ($filename)) {
    
    $lines = explode("\n", file_get_contents($filename));

    if (!empty($lines)) {
        foreach ($lines as $line) {
            if (!empty($line)) {
                $params = explode(':', $line);

                if (!empty($params[0]) && !empty($params[1]) && $params[1] != 'Fake') {
                    $client = Clients::model()->find('unique_id IN (:id1, :id2)', array(':id1' => strtolower($params[0]), ':id2' => strtoupper($params[0])));
                    if ($client) {
                        $client->phone = str_replace(array("\r", "\n"), "", $params[1]);
                        $client->save();
                    }
                }
            }
        }
    }
    else echo "Check the filename, file doesn't exists!";
}

На этом всё. Пришло время подвести итоги производительности всех перечисленных вариантов и выяснить, какой же PHP парсер файла оказался самым оптимальным для дальнейшего использования.

Какой способ обработки файлов в PHP является оптимальным?

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

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

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

Помню, когда я учился в школе и писал свою научную работу по физике (да, был такой опыт :-) ) на её защите перед университетскими преподавателями меня постоянно упрекали за недостаточное количество экспериментов (я делал по 3 опыта для каждого случая). «Светилы науки» называли цифры в 100, ну или, хотя бы, в 10 экспериментов для сравнения различных ситуаций, чтобы можно было делать какое-то их сопоставление и минимизировать вероятность случайного превосходства одного над другим.

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

Ну, на научность своих нынешних экспериментов я в данной статье не претендую, поэтому число в 100 экспериментов я посчитал излишне большим, а процесс их проведения — слишком утомительным занятием.

В итоге, я решил ограничиться 10 экспериментами для каждого варианта PHP парсера файла, чего, как оказалось в итоге, оказалось вполне достаточно, чтобы выделить явного лидера без всякой подтасовки фактов и зацепок за сотые и тысячные доли секунды превосходства.

Результаты вычислений времени работы разработанных мною PHP парсеров файла представлены в следующей таблице и рассортированы по PHP функциям, на базе которых они работают.

Эксперимент fgets() file() fread() file_get_contents()
1 9,147 9,722 10,539 2,008
2 8,950 9,006 9,495 1,733
3 8,821 8,845 9,207 1,642
4 8,717 8,876 8,931 1,758
5 9,010 9,091 8,703 1,635
6 9,110 8,640 9,712 1,633
7 9,074 9,626 9,13 1,645
8 8,886 9,204 9,048 1,701
9 8,667 8,918 9,438 1,713
10 8,852 9,197 9,537 1,567
Среднее 8,923 9,113 9,374 1,704

Как видите, помимо значений времени выполнения скрипта в каждом из 10 экспериментов, я решил подсчитать среднюю температуру по больнице :-)

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

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

Все остальные варианты PHP парсеров файлов работают примерно с одинаковой скоростью.

Почему именно он обогнал своих конкурентов я, если честно, не имею ни малейшего понятия. Могу лишь предположить, что операция чтения файла в строку с помощью file_get_contents() требует меньше ресурсов, чем формирование готового массива строк с помощью file().

А превосходство над fgets() и fread() можно списать на то, что перед их использованием требуется открытие файла с помощью fopen(), на что требуется время.

Да, на самом деле, это и не важно, т.к. цифры говорят сами за себя: благодаря использованию функции file_get_contents() PHP парсер файла на его базе работает в 5 раз быстрее остальных, что и повлияло на моё решение использовать его на практике.

Разбор файла в PHP — выводы

Как я уже и говорил в начале, мои опыты не являются безупречными и опираться исключительно на полученные в их ходе результаты не стоит, т.к., несмотря на быстродействие file_get_contents() в моей ситуации, бывают случаи, когда намного удобнее и эффективнее использовать другие приведённые мною PHP парсеры файлов.

Кроме того, не стоит забывать, что PHP сам по себе является синхронным языком программирования, т.е. все серверные операции происходят последовательно без возможности настройки их параллельного выполнения, в том числе, и на разных ядрах серверного процессора.

Следовательно, на время выполнения операций, прописанных в PHP коде, может влиять целый ряд факторов, среди которых основным является нагруженность ядра в момент работы PHP приложения.

Я это особенно ощутил во время проведения опытов, когда один и тот же PHP парсер файла отработал за 9, затем за 12, а потом снова за 9 секунд на трёх последовательных итерациях из-за банального запуска проводника Windows во время второго случая, который, естественно, тоже требует серверных ресурсов.

Учитывая данные особенности, я проводил эксперименты практически одновременно, друг за другом, при одинаковом комплекте запущенных программ, чтобы не распылять ресурсы серверного железа.

Поэтому в дальнейшем, при проведении подобных экспериментов с PHP конструкциями действуйте аналогичным образом, т.к. это, по сути, единственный способ привести эксперименты к равным условиям.

Если же вы будете работать с асинхронными серверными языками (C#, Java) или технологиями (Node.js, например), то, по возможности, для экспериментов создавайте отдельный поток, который будет работать на выделенном ядре процессора.

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

Надеюсь, что мои наблюдения и рекомендации будут вам полезны, равно как и мои сегодняшние эксперименты с PHP парсерами файлов.

Подытоживая, хочу сказать, что приведённые в статье фрагменты кода могут использоваться не только для парсинга текстовых файлов в PHP, но и отлично подойдут для других форматов, например, для разбора CSV файлов дампа базы данных MySQL.

Пишите ваши отзывы, как положительные, так и отрицательные в комментариях под статьёй — мне необходимо любое ваше мнение для дальнейшего развития :-)

Также буду благодарен, если поделитесь данной статьёй со своими друзьями в социальных сетях с помощью кнопочек ниже.

До новых встреч! :-)

Определяем время работы скрипта PHP

vremya-vypolneniya-skripta-phpДоброго времени суток, коллеги! :-)

Сегодня я решил затронуть такую тему, как время выполнения скрипта PHP и его определение.

Не скажу, что данная необходимость возникает каждый день, но время от времени на практике возникают ситуации, когда нужно получить время работы скрипта PHP.

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

Ну, и ещё иногда данные цифры требуют менеджеры и заказчики, желающие выяснить, сколько времени потребуется на то или иное действие в коде.

Поэтому я и решил написать данную коротенькую заметку, в которой решил изложить порядок действий в аналогичной ситуации.

Сперва мы рассмотрим сам алгоритм определения времени исполнения PHP скрипта, а затем я приведу код, с помощью которого он будет реализовываться.

Время выполнения PHP скрипта — алгоритм определения

Порядок наших действий будет предельно прост:

  1. определяем текущее серверное время в PHP коде перед выполнением действий, прописанных в скрипте;
  2. после того, как скрипт выполнится, снова узнаём серверное время;
  3. вычисляем средствами PHP разницу времени между завершением выполнения скрипта и его запуском.

Полученное в итоге значение как раз и будет временем выполнения PHP скрипта, которое можно будет принимать во внимание при дальнейшей оптимизации и прочих действиях.

Время работы PHP скрипта — реализация алгоритма

Для вывода текущего времени в PHP коде я решил воспользоваться стандартной PHP функцией microtime(), которая возвращает текущую метку времени в Unix формате с микросекундами.

Зачем такая точность?

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

Ну, и плюс, учёт микросекунд при вычислениях влияет на точность калькуляций в положительную сторону.

Для демонстрации своих теоретических повествований я написал простенький скриптик, который вычисляет время прогона пустого цикла с 30 000 000 итераций (решил взять побольше для наглядности):

<?php

$start = microtime(true);

for ($i = 0; $i &lt;= 30000000; $i++)
{
    //ничего не делаем
}

echo 'Скрипт был выполнен за ' . (microtime(true) - $start) . ' секунд';

Как сказано в официальной документации PHP, по умолчанию microtime() возвращает строку в формате «msec sec», где sec — количество секунд с начала эпохи Unix (1 января 1970 0:00:00 GMT), а msec — это количество микросекунд, прошедших после sec.

Функция PHP microtime() имеет всего один параметр get_as_float, при указании которому значения true можно получить текущее время PHP в секундах, прошедших с начала эпохи Unix с точностью до микросекунд.

Поскольку мне нужно было именно текущее время, а не количество секунд с начала эпохи Unix, то я воспользовался данным параметром, что можно видеть в моём коде.

В итоге, с помощью функции echo(), на экран вывелось следующее сообщение: Скрипт был выполнен за 1.3156361579895 секунд.

Чтобы определить, что данная методика работает верно, я решил задать фиксированное время выполнения скрипта с помощью функции sleep(), которая делает задержку выполнения скрипта на указанное количество секунд.

В итоге, следующая конструкция вернула сообщение Скрипт был выполнен за 2.0000510215759 секунд:

<?php

$start = microtime(true);

sleep(2);

echo 'Скрипт был выполнен за ' . (microtime(true) - $start) . ' секунд';

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

Если они будут всё-таки раздражать вас или вашего заказчика, то можете воспользоваться хаком в виде банального округления до сотых или тысячных долей с помощью PHP функции round(), задействовав её следующим образом:

round(microtime(true) - $start, 2);

Результатом выполнения данного куска кода для вышеприведённого примера станет значение в кругленькие 2 секунды, что устроит самых искушённых перфекционистов :-)

На этом сегодняшняя информация о том, как можно определить время выполнения скрипта PHP, подходит к концу.

Пишите свои отзывы в комментариях и задавайте интересующие вас вопросы в пабликах проекта в социальных сетях.

Всем удачи и до новых встреч! :-)

Работа с MySQL в OpenServer: ключевые особенности

openserver-mysqlПриветствую вас, друзья! :-)

Сегодня у нас на повестке дня снова любимая многими (и мной, в том числе) WAMP сборка OpenServer и MySQL, который входит в её комплект.

С данным ПО, а также его особенностями, я впервые познакомил читателей данного блога в одной из своих первых статей, посвящённой программам для создания сайтов.

Идея о создании сегодняшней статьи появилась у меня во время написания публикаций о работе с MySQL в консоли, при работе с которой у OpenServer есть свои тонкости.

Кроме того, на практике достаточно часто появляются ситуации, когда нужно изменить настройки MySQL сервера и произвести отладку операций с базой по логам. В таких случаях при работе с OpenServer у начинающих пользователей обычно возникает много вопросов (как у меня в своё время).

Поэтому сегодня вас будут ждать ответы на них :-)

А также я кратенько пройдусь по инструментам для работы с БД MySQL в OpenServer, которые предоставляют удобный графический интерфейс для манипулирования данными, и краем слова затрону работу с MySQL в консоли OpenServer.

Одним словом, сегодня вас ждёт обзор полного цикла работы с MySQL при использовании OpenServer.

Поехали :-)

Выбор версии MySQL в OpenServer

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

Это, нужно сказать, весьма удобно, т.к. в некоторых случаях нужно использовать устаревшее ПО для локального разворачивания legacy проектов (очень-очень старых), которые нужно саппортить.

И в то же время, для старта новых проектов необходимо будет использовать всё свеженькое :-)

Вот тогда-то нам как раз и пригодится переключение версий MySQL, чтобы была возможность работать с различными проектами при использовании одного дистрибутива OpenServer, а не устанавливать под каждый отдельный.

Итак, чтобы выбрать необходимую версию MySQL в OpenServer, после запуска программы нажимаем на значок в трее и выбираем пункт главного меню Настройки:

openserver-nastrojki-mysql

После этого на экране появится следующее окно, в котором нужно будет перейти на вкладку Модули:

openserver-mysql-vybor-versii

И здесь в выпадающем списке со значениями поля MySQL/MariaDB выбираем необходимую версию MySQL либо MariaDB, которая, как известно, является форком (от англ. fork — ответвление) MySQL, работа с которой ничем не отличается от своего родителя.

Даже инструменты одинаковые :-)

После выбора версии на экране появится окно о перезагрузке OpenServer, которая нужна для того, чтобы изменения вступили в силу.

Перезапускаемся и можно работать с новой версией.

В данном меню, помимо выбора необходимой версии MySQL, можно, кстати, и вовсе отключить использование данной СУБД при работе с OpenServer. Как это сделано, например, с PostreSQL в OpenServer по умолчанию.

Данное действие рекомендуется при использовании других СУБД для исключения возможных взаимных  конфликтов при их одновременной работе и снижения нагрузки на сервер в целом.

Важным моментом при использовании нескольких версий MySQL и прочих серверных компонентов, входящих в состав OpenServer, одновременно является необходимость конфигурирования каждой версии отдельно.

Это вызвано тем, что для каждой версии MySQL существуют отдельные файлы конфигураций и логов, что будет продемонстрировано далее.

А также база данных, созданная при использовании MySQL 5.7, например, не будет доступна при работе с MySQL 5.5.

Поэтому, прошу учесть данный факт и не удивляться сбросу ваших настроек и пропаже БД. Однако, не волнуйтесь, ваши данные не пропали ,tccktlyj.

При выборе в качестве текущей версии MySQL той, которую вы тщательно настраивали и для которой создавали ваши базы, всё вернётся обратно :-)

Настройки логов MySQL в OpenServer

Достаточно часто при поиске различных багов, да и просто для отслеживания операций с БД, нужен доступ к файлам логов MySQL сервера.

Просмотреть логи MySQL, работающего в составе OpenServer, можно двумя способами: через интерфейс OpenServer и путём открытия файлов логов, хранящихся на жёстком диске.

Для первого способа нужно открыть знакомое меню управления OpenServer кликом любой кнопкой мыши на значке OpenServer в трее и выбрать пункт Просмотр логов, после чего на экране появится следующее диалоговое окно:

openserver-mysql-logi-servera

По умолчанию OpenServer ведёт запись только ошибок и событий на самом сервере MySQL, что можно увидеть на скриншоте выше.

Однако, что же делать, если нужен список SQL запросов к базам данных, расположенных на сервере?

Благо, что OpenServer предоставляет возможность расширенного логгирования, при активации которой запросы к БД будут писаться в отдельный лог.

Чтобы включить ведение логов запросов к серверу MySQL в OpenServer, нужно произвести знакомые уже нам сегодня действия: Меню управления OpenServer -> Настройки -> Модули.

И возле выпадающего списка со значениями поля MySQL/MariaDB устанавливаем галочку вести лог запросов:

openserver-mysql-rasshirennoe-loggirovanie

После установки галочки нужно сохранить настройки и подтвердить перезагрузку сервера, в результате чего у нас в окне с логами OpenServer добавляется ещё одна вкладочка с названием MySQL запросы:

openserver-mysql-logi-zaprosov

От себя хочу добавить, что решение разработчиков разделить логгирование MySQL данным образом весьма мудрое и удобное.

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

Просмотр логов MySQL через интерфейс OpenServer я вам продемонстрировал. Однако, лично я время от времени сталкиваюсь на практике с такими случаями, когда лог очень большой, и в нём необходимо отыскать определённую запись.

Тогда инструмент просмотра логов OpenServer становится бесполезным, т.к. никаких средств поиска он не предоставляет, а просматривать все записи в поисках нужно — занятие очень долгое и бесперспективное.

Поэтому в данном случае я предпочитаю открывать файлы логов обычным текстовым редактором и производить все необходимые операции там.

Файлы логов OpenServer, в том числе и MySQL, расположены в директории директория_установки_openserver/userdata/logs, которая в моём случае выглядит вот так:

openserver-mysql-logi-v-kataloge

На скриншоте я отметил файлы логов моей текущей версии MySQL: состояния сервера и запросов к нему. Также здесь доступны все остальные логи, ведущиеся OpenServer.

Как видите, для каждой используемой версии MySQL и других серверных компонентов файлы логов пишутся отдельно, о чём я говорил в предыдущем разделе об изменении текущей версии MySQL.

Настройка MySQL в OpenServer

О выборе необходимой версии MySQL для работы и записи логов в OpenServer мы поговорили. Ещё одним моментом, который достаточно часто встречается на практике, является необходимость настройки MySQL в OpenServer для корректной работы и выполняемых ею функций на определённых проектах.

Настройка MySQL заключается в добавлении/удалении и изменении существующих параметров конфигурации, содержащихся в специальных файлах — конфигах.

Чтобы получить доступ к конфигам MySQL, достаточно запустить знакомое меню управления OpenServer, выбрать пункт Дополнительно, а в выпадающем списке выбрать Конфигурация.

После этого появится ещё одно меню, в котором будут содержаться ярлыки для доступа к файлам конфигурации текущих модулей OpenServer, выбранных на вкладке Настройка, где мы меняли версию MySQL:

openserver-mysql-nastrojki-komponenta

При выборе ярлыка конфига MySQL откроется соответствующий файл в текстовом редакторе, установленном на вашем ПК в качестве основного.

Если же вам потребуется доступ к самому файлу конфигурации MySQL, то вы можете найти его в директории директория_установки_openserver/userdata/config, в которой расположены конфиги всех модулей OpenServer, причём, для каждой версии компонента конфиг отдельный.

При работе с конфигами серверных компонентов стоит учитывать, что для сокращения их текста и удобства использования в их тексте встречаются специальные переменные OpenServer, с полным списком и значениями которых вы можете ознакомиться здесь — https://ospanel.io/docs/#rabota-s-path

А также имейте ввиду, что после любых изменений в файлах настроек MySQL в OpenServer, для вступления их в силу нужно будет после сохранения файла перезапустить сервер.

Инструменты для работы с MySQL в OpenServer

О выборе версий MySQL в OpenServer и их настройке мы поговорили. Теперь самое время перейти к работе с базами данных, пользователями и прочими объектами, создающимися на сервере MySQL.

А для этого в комплекте OpenServer существует целый набор инструментов, обладающих графическим интерфейсом. Поэтому, если вы не являетесь трушным кодером, но, тем не менее, вам нужно будет создать базу MySQL в OpenServer или поменять пароль пользователя, то использование графических редакторов — это самый лёгкий и простой способ сделать задуманное.

Ну, и консоль OpenServer никто не отменял для работы с командной строкой MySQL.

Визуальные инструменты представлены различными утилитами, доступ к которым можно получить из меню OpenServer, при выборе пункта Дополнительные:

openserver-mysql-graficheskie-instrumenty

На скриншоте выше я выделил утилиты для работы с MySQL, которые содержатся в OpenServer по умолчанию.

Первые две предназначены исключительно для работы с MySQL базами данных, а последняя является универсальной (через неё можно работать в различными СУБД).

Следовательно, при отключении использования модуля MySQL в OpenServer, phpMyAdmin и MySQL менеджер исчезнут из  данного списка вовсе, а SQLite менеджер останется, но работать с MySQL сервером через него будет невозможно.

Кратко рассмотрим каждый инструмент и особенности работы с ним в OpenServer.

phpMyAdmin

Знакомая многим утилита, написанная на языке PHP для администрирования исключительно MySQL серверов, которой предпочитают пользоваться как новички, так и профессионалы. Предоставляет визуальный интерфейс для работы с сервером MySQL, через который очень легко управлять базами, пользователями и их правами.

После запуска из меню OpenServer phpMyAdmin запустится либо в открытом окне вашего браузера, либо в отдельном окне.

Честно говоря, я затрудняюсь ответить, от чего это зависит. На одном ПК у меня phpMyAdmin из комплекта OpenServer запускается в открытом окне, а на другом — в отдельном.

После успешного запуска phpMyAdmin  будет выглядеть так:

openserver-mysql-phpmyadmin-privetstvie

Это стартовый экран, на котором нужно ввести имя пользователя MySQL и его пароль для подключения к серверу. По умолчанию (если кто не в курсе) админская учётка root/пустой_пароль.

Вводим, входим, работаем :-)

openserver-mysql-phpmyadmin-interfejs

Я не буду сейчас приводить полный перечень возможностей phpMyAdmin, т.к. для этого есть специализированные публикации и видеопособия, которых уже полно в Интернете. Если вы совсем новичок, то можете воспользоваться следующим видео в качестве отправной точки:

По поводу особенностей работы с phpMyAdmin в OpenServer могу отметить возможное возникновение следующей ошибки, с которой я столкнулся при переключении версий MySQL:

Ошибка

SQL запрос: SET lc_messages = 'ru_RU';

Ответ MySQL: #1193 - Unknown system variable 'lc_messages'

Причиной её возникновения стал выбор версии MySQL 5.1, в которой, как выяснилось после изучения статей в Интернете, отсутствует системная переменная lc_messages, установку которой phpMyAdmin пытается произвести.

Она появилась в MySQL 5.5, при установке которой, по идее, проблема должна была исчезнуть… Однако, ничего подобного, к моему великому удивлению, не произошло :-)

После изменения версии MySQL и перезапуска сервера ошибка продолжала раздражать своим наличием.

Причина оказалась в банальном кэше браузера, при очистке которого phpMyAdmin заработал в штатном режиме.

Если же мои рекомендации в вашем случае не помогут, то можете воспользоваться этим советом — https://github.com/phpmyadmin/phpmyadmin/issues/12822.

phpMyAdmin — штука удобная для работы с локальным MySQL сервером.

Однако, иногда бывают ситуации, когда нужно подключаться к различным серверам MySQL, устанавливать специализированное ПО либо сложно, либо вообще невозможно (например, в компаниях с большими требованиями к сетевой и информационной безопасности).

Благо, что для таких случаев в комплекте OpenServer есть другие инструменты для работы с различными серверами MySQL.

MySQL менеджер

При выборе пункта меню OpenServer MySQL менеджер запускается программа HeidiSQL, с детальным описанием которой можете здесь — https://www.heidisql.com/

Не знаю, почему его переименовали, видимо, для упрощённого понимания пользователей, что их ждёт после запуска :-)

Данной утилитой я сам активно пользуюсь на своей основной работе, чтобы не устанавливать различное дополнительное ПО. Запустить её можно из того же пункта меню OpenServer, что и phpMyAdmin.

Запуск HeidiSQL немного отличается от phpMyAdmin по той причине, что это desktop программа, а не веб-приложение, поэтому оно всегда будет открываться в отдельном окне.

После запуска вы увидите на экране форму подключения к серверу MySQL, которая выглядит следующим образом:

openserver-mysql-menedzher-soedinenie

Для демонстрации возможностей я сделал тестовое подключение к локальному MySQL серверу, после выбора которого откроется данное окно:

openserver-mysql-menedzher-interfejs

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

Для примера на скриншоте выше я создал тестовую БД и открыл меню управления ею, где выбрал создание таблицы.

В принципе, достаточно удобно. Многим, возможно, понравится даже больше привычного phpMyAdmin — это уже дело вкуса :-)

Но лично я использую MySQL менеджер OpenServer только для удалённых подключений. С локальным сервером предпочитаю всё-таки больше первый вариант.

SQLite менеджер

Ещё один графический клиент для работы с MySQL в OpenServer. Под данным названием, как и в предыдущем случае, скрывается утилита с совершенно другим названием — Adminer, с детальным описанием которой можете познакомиться здесь — https://www.adminer.org.

Возможно, старожилам Интернетов данная утилита будет знакома ещё по названию phpMinAdmin :-)

Создатели OpenServer решили переименовать её в SQLite менеджер, скорее всего, из соображений, что данная утилита единственная из всего комплекта OpenServer, которая позволяет работать с СУБД SQLite, которая всё ещё пользуется определённым спросом в узких кругах.

Запуск данной утилиты очень похож на phpMyAdmin и так же непредсказуем: она может открыться как в открытом окне браузера, так и оказаться в отдельном.

На экране сперва вы увидите форму соединения, которая выглядит так:

openserver-mysql-sqlite-menedzher-avtorizaciya

По данной форме сразу видно большое преимущество Adminer над phpMyAdmin, т.к. он позволяет подключаться не только к локальному серверу MySQL, но и к удалённым, а также он поддерживает работу не только с MySQL, но и с другими СУБД, среди которых:

  1. PostgreSQL
  2. SQLite
  3. MS SQL
  4. Oracle
  5. Firebird
  6. SimpleDB
  7. Elasticsearch
  8. MongoDB

Список очень солидный, должен сказать :-) Кроме этих преимуществ у данной программы есть ещё и возможность легко и просто менять скины, которые оформлены обычными CSS файлами, следовательно, править их может любой желающий, который хоть немного обладает знаниями данного языка.

Вот так выглядит панель управления сервером MySQL в Adminer после подключения к нему с использованием default скина:

openserver-mysql-sqlite-menedzher-rabota-s-serverom

Да, согласен, выглядит простовато, но зато и работает быстрее phpMyAdmin, с которым очень любят сравнивать своё произведение создатели экс-phpMinAdmin. Но опять же, это при настройках по умолчанию.

Как я уже и говорил, всё это решается сменой скинов.

Работа с MySQL в консоли OpenServer

Инструменты, предоставляющие графический интерфейс для работы с MySQL, и которые входят в комплект OpenServer, мы с вами рассмотрели.

Однако, бывают случаи, когда их использование не совсем удобно.

Например, при импорте базы данных MySQL большого размера, которую весьма затруднительно залить через графические утилиты, тот же самый phpMyAdmin, который постоянно прерывает процесс при достижении внутренних лимитов ПО и языка PHP, на котором инструмент разработан.

Чтобы начать работать с командной строкой MySQL в консоли сервера, можно воспользоваться как консолью Windows, так и консолью, входящей в состав OpenServer, которая находится в одном меню с графическими инструментами для работы с MySQL:

openserver-konsol-zapusk-komandnoj-stroki-mysql

Либо можете воспользоваться ещё какой-либо другой (например, встроенной в IDE).

Если вы не устанавливали MySQL на компьютер глобально и не создавали соответствующий сервис, который можно запустить из консоли, то можете воспользоваться командными строками MySQL дистрибутивов, имеющихся на OpenServer.

Для этого в консоли переходим в каталог с необходимым дистрибутивом MySQL из поставки OpenServer с помощью следующей команды:


cd директория_установки_openserver/modules/database/MySQL-5.7-x64/bin

Директорию установки OpenServer и дистрибутив MySQL пропишите актуальные в вашем конкретном случае.

После этого можно пользоваться командной строкой MySQL с помощью одноимённой утилиты mysql, а также другими, входящими в комплект дистрибутива.

Протестить возможность их успешного запуска можете командой, проверяющей версию MySQL:


mysql -V

Со списком остальных команд консоли MySQL вы можете в статье по предоставленной ссылке.

На этом сегодняшняя публикация о работе с MySQL в OpenServer подходит к концу. Я постарался осветить все основные моменты, которые могут возникнуть в процессе работы, а что у меня из этого вышло — решать вам.

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

Поэтому, если вы пользуетесь OpenServer, то отвечайте ему взаимностью, делая пожертвования, которые являются единственным средством финансирования проекта, т.к. распространяется он абсолютно бесплатно.

P.S. не жалейте денег, они обязательно к вам вернутся и даже в бОльшей степени, если вы потратите их с чистым сердцем. Это я уже проверил на себе :-)

Из пожертвованных мною 300 рублей 200 мне вернулись через пару дней в виде таких же добровольных пожертвований одного из посетителей данного блога за мою помощь ему в вопросах, связанных с Laravel.

И ещё… Пишите ваши отзывы в комментариях: что понравилось, что нет, о чём хотели бы прочитать ещё. Я всегда открыт для ваших предложений :-)

Если всё гуд, делитесь публикацией со своими друзьями в социальных сетях и ставьте оценки звёздочками под статьёй.

Всем удачи и до новых встреч! :-)

Перевод WordPress на HTTPS: 2 способа

perekhod-wordpress-na-httpsПриветствую вас, друзья! :-)

Я уже достаточно рассказал о том, что такое HTTPS и особенностях использования данного протокола, а также о том, что такое SSL сертификат, как его выбрать и какими они вообще бывают.

В предыдущих статьях я детально рассмотрел основные этапы установки SSL сертификата на сайт и переезда на HTTPS в целом, некоторые из которых обладают существенными нюансами в зависимости от платформы, на которой разработан ваш ресурс.

Решить данный обзор тонкостей я решил с самой массовой и популярной CMS на сегодняшний день — с WordPress.

Поэтому сегодня будет рассмотрен конкретно переход WordPress на HTTPS, а также перечень необходимых мер и инструментов, которые понадобятся нам в процессе.

Как перевести WordPress на HTTPS: вступление

Перед тем, как мы начнём, пару слов о том, с чем я буду работать в данной статье для демонстрации своих действий.

В предыдущей статье я рассказывал о том, как создать поддомен сайта, в рамках которой был зарегистрирован поддомен данного сайта ssl.cccp-blog.com, задумывавшийся изначально как раз как площадка для экспериментов с установкой и настройкой SSL сертификатов на сайт (отсюда и такое название).

Поскольку WordPress оказался первой платформой, с которой я решил начать свои эксперименты, то на данный домен я установил самую последнюю версию чистого движка, которая на данный момент 4.9.1.

В качестве графического шаблона я решил использовать стандартную тему Twenty Seventeen.

Итак, WordPress установлен, шаблон выбран. Также я уже приобрёл SSL сертификат и установил его на сервер, подключив его к сайту через панель администирования моего хостинг-провайдера. Весь процесс подробно описан в статье о том, как установить SSL сертификат на сайт.

Теперь можно приступать непосредственно к переходу WordPress с HTTP на HTTPS, что мы сделаем сегодня двумя способами: с помощью плагина и без него.

Итак, начнём с самого простого варианта настроек HTTPS для WordPress сайта, который подойдёт абсолютному большинству и потребует минимум знаний — с установки плагинов, которые всё сделают за нас :-)

Перевод WordPress на HTTPS с помощью плагина

Для настройки HTTPS на WordPress сайте существует масса готовых решений в виде плагинов. С некоторыми из них я вас уже знакомил в статье о мерах по безопасности WordPress сайтов.

Сегодня же наглядно продемонстрирую использование одного из них для установки SSL сертификата на WordPress сайт с дальнейшей настройкой защищённого соединения.

Я решил остановиться на Really Simple SSL. Выбор мой был основан на статистике данного WordPress HTTPS плагина: более 600 000 скачиваний и оценка 5 из 5 на основании 333 оценок пользователей.

Ознакомиться с полным описанием решения, а также скачать его вы можете здесь — https://ru.wordpress.org/plugins/really-simple-ssl/

Разработчики утверждают, что плагин определяет SSL сертификат, установленный на сервере, в имени которого был указан текущий сайт. А затем он подключает его и делает перенаправление запросов с HTTP адресов на HTTPS.

Причём, всё это происходит путём нажатия на одну-единственную кнопку в течении нескольких секунд.

Чтобы убедиться, что это на самом деле так, для начала заходим в админку сайта и устанавливаем плагин Really Simple SSL любым известным вам способом. Более подробно о том, как можно сделать установку плагинов WordPress, написано в статье по указанной ссылке.

После установки активируем плагин, после чего на экране у нас появится следующее сообщение:

wordpress-redirekt-na-https

Здесь, как видите, разработчики говорят о необходимости изменения хардкодных ссылок в тексте сайта WordPress с HTTP на HTTPS.

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

Чтобы туда добраться, есть два способа: использовать сторонние утилиты и скрипты для работы с БД или командную строку WordPress, которая доступна после установки утилиты WP-CLI.

Если вам по душе первый способ, то могу порекомендовать PHP скрипт Search Replace DB, который предоставляет графический интерфейс для работы с БД и поиска в ней информации с дальнейшей заменой.

Если же вы трушный кодер и любите консоль, то в WP-CLI вам потребуется следующая команда:

wp search-replace "//ваш_сайт.com" "https://ваш_сайт.com"

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

После нажатия на кнопку с надписью Go ahead, activate SSL! в информационном окне плагин произвёл на сайте необходимые настройки для активации соединения по HTTPS. В частности, он добавил в wp-config.php следующий код в самое начало файла:

//Begin Really Simple SSL Load balancing fix
$server_opts = array("HTTP_CLOUDFRONT_FORWARDED_PROTO" => "https", "HTTP_CF_VISITOR"=>"https", "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_FORWARDED_SSL"=>"on", "HTTP_X_FORWARDED_SSL"=>"1");

foreach( $server_opts as $option => $value ) {
    if ( (isset($_ENV["HTTPS"]) && ( "on" == $_ENV["HTTPS"] )) || (isset( $_SERVER[ $option ] ) && ( strpos( $_SERVER[ $option ], $value ) !== false )) ) {
        $_SERVER[ "HTTPS" ] = "on";

        break;
    }
}
//END Really Simple SSL

Т.е. он установил глобальную серверную переменную HTTPS в «on» для дальнейших проверок в коде на предмет, передаёт ли сайт информацию по HTTPS или нет. Также плагин поменял адрес сайта с учётом нового протокола.

На этом наша работа подошла к концу :-) Т.е. для активации перевода WordPress на HTTPS нам действительно потребовалось нажать лишь одну-единственную кнопку.

После этого я решил подробно изучить настройки Really Simple SSL в админке WordPress, которые выглядят следующим образом:

pereadresaciya-https-wordpress

Как видите, вся конфигурационная панель состоит из трёх вкладок: Конфигурация, Настройка и Отладка. На первой из них, которая открывается по умолчанию, содержатся индикаторы состояния различных настроек HTTPS на WordPress сайте.

Здесь же вы увидите сообщения о критических ошибках, если таковые будут найдены.

Вкладка «Настройка» имеет следующий вид:

kak-perevesti-wordpress-na-https

Здесь расположены все основные настройки HTTPS соединения с сайтом, осуществляемые данным плагином. Стоит сказать, что они, как и само решение, невероятно просты и понятны.

По умолчанию включены опции автоматического устранения ошибок «смешанного содержимого», которые могут возникать при наличии на страницах сайта ссылок одновременно на HTTP и HTTPS адреса.

Также установлен редирект с HTTP на HTTPS на WordPress уровне и JavaScript. Как видите, плагин позволяет выполнить перенаправление различными способами.

На практике достаточно WordPress редиректа на HTTPS, JavaScript сами разработчики рекомендуют использовать в самую последнюю очередь, если остальные варианты перенаправлений не будут работать.

И это весьма логично, т.к. WordPress переадресация на HTTPS в JS коде будет медленнее остальных и будет содержаться в клиентском коде, загружаемом в браузер ваших пользователей, где может быть изменён.

Разработчики Really Simple SSL рекомендую использовать редирект с HTTP на HTTPS на уровне веб-сервера Apache, который производится при установке соответствующей галочки в настройках.

При этом плагин добавит следующий код в .htaccess файл вашего сайта:

# BEGIN rlrssslReallySimpleSSL rsssl_version[2.5.23]

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

# END rlrssslReallySimpleSSL

Также на данной странице настроек плагина имеется поле Stop editing the .htaccess file, в котором нужно поставить галочку, если вы захотите отредактировать код, добавляемый плагином в .htaccess, чтобы ваши изменения не перезаписались значениями по умолчанию.

И ещё здесь имеется поле Отладка, при установлении галочки в которое вы сможете получить лог действий, выполняемых плагином. Лог можно увидеть на соседней вкладке настроек с одноименным названием, которая выглядит так:

ustanovka-wordpress-https

После того, как наш WordPress сайт был настроен для работы по HTTPS протоколу с помощью данного плагина, в панели администратора WordPress у нас появится следующее информационное сообщение:

wordpress-https-plugin

В нём говорится о том, что нужно произвести необходимые настройки в Google Analytics и Google Webmaster, суть которых заключается в добавлении нового адреса сайта для индексации его содержимого.

О том, как это сделать, можете узнать из инструкции от разработчика плагина Really Simple SSL. Или же воспользоваться официальной инструкцией от Google.

То же самое нужно сделать и в других инструментах аналитики, которыми вы пользуетесь: LiveInternet, Яндекс.Метрика и т.д.

После этого заходим на сайт – и, о чудо, он уже работает по HTTPS, о чём сигнализирует зелёный замочек в браузере. Причём, он присутствует не только возле URL главной страницы, но и на любой другой, которая раньше была доступна только по HTTP.

Даже если вбить в адресную строку браузера прямой URL страницы сайта, содержащий протокол HTTP, произойдёт мгновенное перенаправление запроса на HTTPS адрес.

Переход благодаря данному плагину произошёл действительно очень быстро и легко. Я даже не поверил, что такое возможно :-)

Чтобы убедиться, что переход WordPress на HTTPS произошёл и успешно завершился, я для уверенности просмотрел SSL сертификат, использующийся сайтом для работы по HTTPS протоколу, в браузере (пользуюсь Google Chrome):

kak-ustanovit-ssl-sertifikat-na-sajt-wordpress

Всё верно, данные сертификата отобразились корректно (на данный момент в сертификате содержится только дата оформления и регистратор).

На этом переезд WordPress на HTTPS с помощью плагина Really Simple SSL торжественно объявляю закрытым :-)

Переход WordPress на HTTPS без плагинов

Однако, среди пользователей и разработчиков WordPress сайтов есть определённая категория лиц, которая люто презирает использование плагинов, предпочитая делать всё своими руками путём изменения кода сайта.

К таковым отношусь и я :-) Поэтому после успешного перехода WordPress на HTTPS с помощью плагина, который был описан выше, я решил удалить его и повторить успех уже без него, чем сейчас с вами и поделюсь.

Итак, после установки SSL сертификата на сервер, где расположен наш сайт, и подключения его к сайту, для перевода WordPress на HTTPS нам первым делом нужно будет изменить адрес сайта с учётом нового протокола.

Самый простой способ это сделать — через панель администратора. Заходим в Настройки > Общие и меняем в адресе сайта протокол HTTP на HTTPS:

wordpress-https-nastrojka

Данный шаг нужен для того, чтобы корректно открывались ссылки на страницы сайта, указанные в относительном формате.

Кстати! Если где-либо на вашем сайте имеются ссылки в абсолютном формате, прописанные через HTTP протокол, замените их на HTTPS-аналоги.

Также изменить адрес сайта и его главной страницы можно путём изменения файла wp-config.php, добавив в него следующие директивы:

define('WP_HOME', 'https://имя_сайта');
define('WP_SITEURL', 'https://имя_сайта');

Также в этот же файл необходимо будет добавить следующий код:

define ('FORCE_SSL_ADMIN', true);

Данная константа необходима для того, чтобы заставить все логины и все сеансы администратора выполняться через SSL. Размещать её следует перед тем, как подключается файл wp-settings.php в коде wp-config.php.

Также в редактируемом нами файле при использовании предыдущей конструкции нужно будет добавить следующий код:

if (strpos ($ _ SERVER ['HTTP_X_FORWARDED_PROTO'], 'https')! == false) {
    $ _SERVER [ 'HTTPS'] = 'on';
}

Примерно то же самое добавлялось и при переходе WordPress на HTTPS с помощью плагина Really Simple SSL. А также о данном действии упоминается в руководстве для разработчиков WordPress по управлению сайтом через SSL.

Как там объясняется, если WordPress размещен за обратным прокси-сервером, который предоставляет SSL, но сам размещен без SSL, FORCE_SSL_ADMIN сначала отправит любые запросы в бесконечный цикл переадресации.

Чтобы этого избежать, нужно настроить WordPress для распознавания заголовка HTTP_X_FORWARDED_PROTO (при условии, что вы правильно настроили обратный прокси для установки этого заголовка).

На этом действия в wp-config.php закончены, равно как и на самом WordPress сайте.

Для следующего шага нам потребуется правка конфигурационных файлов веб-серверов Apache или Nginx, через которые наш сайт запускается. Нужно будет прописать правила для 301 редиректа запросов c HTTP на HTTPS адреса.

Для Apache можете смело взять код, который добавляется плагином Really Simple SSL в .htaccess, приведённый мною ранее.

Для Nginx воспользуйтесь кодом, приведённом в статье о переезде на HTTPS, где помимо данного кода вы найдёте подробную инструкцию, работающую для всех сайтов без исключения, а также обзор последствий перехода сайта на HTTPS и способов их нейтрализации.

На этом лично мои действия касательно того, как перейти на HTTPS на ВордПресс, поскольку сайт был новый, закончились. Если же вы будете устанавливать SSL сертификат на WordPress сайт с историей и имеющий большой объём трафика из поисковых систем, то вам потребуется произвести ещё некоторые манипуляции, чтобы не потерять своих пользователей и позиции.

Как этого добиться, подробно описано в публикации с пошаговой инструкцией по переезду на HTTPS, ссылку на которую я приводил ранее в тексте.

На моём же тестовом сайте ssl.cccp-blog.com, как я уже сказал, все действия по установке HTTPS на WordPress ограничились двумя пунктами, чего вполне достаточно для исправной работы сайта, в чём вы сами можете убедиться, перейдя на него.

Как видите, процесс установки SSL сертификата на WordPress сайт достаточно прост и займёт у вас от силы пару минут. Причём, это касается как использования плагина, как и произведения действий без него.

Напоследок, традиционно, если вы всё-таки далеки от IT-шных терминов и не горите желанием в них вникать, рекомендую вам воспользоваться плагином и сэкономить свои нервы и время. Если же вы начинающий или опытный разработчик, то raw code — ваш вариант :-)

Не только скилл поднимите, но и получите навыки, которые помогут вам при переводе сайтов, разработанных на других платформах, на HTTPS. А как это сделать более детально для OpenCart и моего любимого Laravel, я, думаю, напишу в дальнейших публикациях.

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

На этом сегодняшняя статья подошла к концу. Если она вам понравилась, делитесь ей со своими друзьями с помощью кнопочек социальных сетей под статьёй и ставьте оценки звёздочками.

Также не забывайте писать в комментариях о том, что понравилось, не понравилось и о том, что я, может быть, забыл упомянуть.

Очень рассчитываю на качественный фидбэк :-)

До новых встреч!

Как установить SSL сертификат: пошаговая инструкция

ustanovka-ssl-sertifikataПриветствую вас, друзья! :-)

В сегодняшней статье будет рассмотрена установка SSL сертификата. Мы поговорим о том, как создать SSL сертификат самому и подключить его к сайту для осуществления обмена информацией с пользователями по защищённому протоколу HTTPS.

Сразу скажу, что установить SSL сертификат на сайт можно двумя путями: через интерфейс панели управления сервером и с помощью ручного копирования файлов сертификата с последующими настройками веб-сервера (Apache или Nginx) в случае, если ваш хостинг не имеет графической панели управления.

Информация по установке SSL сертификата будет представлена в виде пошаговой инструкции, при составлении которой я воспользовался первым способом и своим хостингом TheHost, к панели управления которого (используется ISPManager) у меня есть доступ.

TheHost позволяет как устанавливать SSL сертификаты, приобретённые у него, так и выполнять подключение SSL сертификата, приобретённого у других поставщиков.

Также в панели управления хостингом есть возможность сделать бесплатный SSL сертификат от Let’s Encrypt и самоподписанный с последующей их установкой.

Все эти варианты мы сегодня и рассмотрим, т.к. на практике случаются разные ситуации, для которых бывают нужны различные типы SSL сертификатов безопасности.

Поехали :-)

Как установить SSL сертификат на сайт: этапы

Надеюсь, на данный момент вы уже определились с тем, что такое SSL сертификат и какой он бывает.

Если говорить о том, как подключить SSL сертификат к сайту, то весь процесс состоит из нескольких этапов:

  1. Генерация SSL сертификата. Заключается в создании самоподписанного сертификата на сервере самостоятельно либо в формировании запроса на выпуск данного документа в центр сертификации (CA).
  2. Установка SSL сертификата на хостинг.
  3. Подключение SSL сертификата к сайту.

После этого необходимо будет произвести некоторые настройки для вашего движка сайта, чтобы он корректно обменивался данными с пользователями по HTTPS, о чём мы поговорим в следующих публикациях, т.к. каждая платформа требует индивидуального подхода.

Итак, рассмотрим каждый этап подробнее, начиная с создания SSL сертификата.

Создание SSL сертификата

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

Для этого регистрируемся на сайте thehost.ua, после чего вам на электронную почту придёт письмо с учётными данными пользователя, а также ссылкой на кабинет пользователя и панель управления хостингом.

Как я уже сказал, SSL сертификаты можно создавать разные и различными способами. Начнём с самого простого с технической точки способа, который потребует от вас минимума знаний.

Как заказать SSL сертификата на хостинге?

Сразу скажу, что у данного способа создания SSL сертификата есть целых три преимущества над остальными, благодаря чему я настоятельно рекомендую воспользоваться им большинству людей.

Во-первых, сгенерировать SSL сертификат данного типа сможет даже ребёнок: не нужно скачивать и запускать какие-то утилиты, а также вникать в тонкости того, как установить SSL сертификат на сервер.

Всё, что от вас потребуется — просто ввести нужную информацию о сайте и свои персональные данные. Создание и установка SSL сертификата на сайт произойдёт автоматически.

Во-вторых, по сравнению с заказом SSL сертификата у официальных регистраторов, хостинг-провайдеры, которые выступают посредниками, часто вводят различные акции и бонусы, в результате чего сертификат можно приобрести со существенной скидкой или вообще бесплатно.

Официальные регистраторы, насколько я знаю, таким покупателей не балуют.

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

И не дай Бог вам забыть это сделать — пользователи ваш сайт вообще не увидят, а только лишь сообщение об угрозе безопасности на весь экран браузера.

Чтобы сделать заказ, сперва нам нужно зайти в кабинет пользователя через сайт thehost.ua либо по ссылке, содержащейся в письме, сгенерированном при регистрации. После того, как войдёте в систему, выберите пункт бокового меню «SSL сертификаты» и нажмите кнопку «Заказать» вверху страницы.

После проделанных действий на экране появится диалоговое окно, которое выглядит так:

generaciya-ssl-sertifikata-na-hostinge

Здесь нам нужно выбрать тип SSL сертификата, который вы хотите купить и срок его действия. Цена услуги, естественно, будет зависеть от этих двух параметров.

Более подробно о доступных SSL сертификатах, которые можно заказать через TheHost, можете прочитать здесь — https://thehost.ua/services/ssl

Сразу скажу, что у данного провайдера цены на сертификат безопасности SSL начинаются от 7$ за год использования, чего я не встречал больше ни у кого на данный момент.

В зависимости от того, какой тариф вы выберете, у вас могут присутствовать или отсутствовать некоторые из приведённых далее шагов. Имейте ввиду!

После выбора необходимого тарифа нажимаем Далее и переходим к следующему шагу создания SSL сертификата:

kak-sdelat-ssl-sertifikat-dlya-sajta

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

Запрос должен быть в виде файла с вашими зашифрованными персональными данными с расширением csr.

Если вы его уже сгенерировали (а о том, как это сделать прямо в ISPManager админки TheHost, я расскажу вам дальше), то на данном шаге просто введите его содержимое.

Для этого нужно выбрать для пункта «Способ ввода CSR» значение «Ввод имеющегося CSR», которое выбрано по умолчанию.

Если же такового файла у вас ещё нет или формат вашего запроса был не принят, то сгенерировать его можно здесь же, не вникая в подробности.

Для этого выберите в качестве способа ввода CSR в выпадающем списке значение «Генерация CSR и Private key».

При этом данное диалоговое окно примет следующий вид:

kak-sozdat-ssl-sertifikat

Вводим всю необходимую информацию максимально внимательно, т.к. в дальнешем вам придётся её подтвердить независимо от того, какой тип SSL сертификата вы оформляете.

О  том, какие данные следует вводить и откуда их брать, вы можете прочитать в статье о том, что такое HTTPS.

Нажимаем «Далее», и на следующем экране, если вы генерировали запрос, вы увидите следующую информацию:

sozdanie-sertifikata-ssl

Здесь приводится содержимое вашего секретного ключа, который будет использоваться при шифровании передаваемой информации по HTTPS протоколу.

Рекомендуется его сохранить в файлике на компьютере для большей безопасности, чтобы никто не мог получить к нему доступ при взломе TheHost, например :-)

Либо же можно сохранить его в системе, чтобы не вводить на дальнейших шагах, чем я и воспользовался.

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

На следующем шаге от нас снова требуется ввод контактной информации администратора и технической поддержки, с которыми могут связаться представители CA для подтверждения информации, введённой в заявке на выпуск SSL сертификата:

kak-ustanovit-ssl-sertifikat-na-sajt

Далее нам предстоит ввод данных организации, которые также могут проверяться с помощью письма или звонка, например, так что указывайте корректно почтовые данные:

sgenerirovat-ssl-sertifikat

Следующим этапом является ввод email, на который будет высылаться ссылка для подтверждения генерации SSL сертификата:

ustanovka-ssl-sertifikata-na-hosting

Если у вас нет готового email, присутствующего среди вариантов выпадающего списка, то заведите его.

В случае же, если вы не подтвердите запрос, сертификат вы не получите, равно как можно будет не рассчитывать на компенсацию потраченных на его выпуск денег.

Что вполне справедливо, т.к. TheHost сам сертификат не выпускает, а заказывает его у официальных сертификационных центров.

Ну, и на финальном этапе от вас потребуется выбрать способ оплаты и срок продления SSL сертификата, на который он будет автоматически выпускаться при истечении своей действительности:

kak-podklyuchit-ssl-sertifikat-k-sajtu

Нажимаем на Готово и всё, что теперь остаётся — это дождаться запроса подтверждения выпуска SSL сертификата из центра сертификации и самого сертификата.

После того, как он будет у вас на руках, останется только подключить его к сайту. Но об этом мы поговорим немного позже, когда я рассмотрю все способы создания SSL сертификатов у TheHost, которые, как я уже говорил ранее, могут быть разных видов.

Создание самоподписанного SSL сертификата

Итак, как сделать заказ генерации SSL сертификата у официальных центров сертификации, я вам показал.

Однако, бывают ситуации, когда нужны и другие виды сертификатов. Например, для тестирования настроек движка сайта для HTTPS передачи данных на локальном сервере и тестовом домене.

В таком случае вполне подойдёт бесплатный самоподписанный SSL сертификат, который создать у TheHost можно за считанные секунды.

Для этого заходим в ISPManager по ссылке из письма, пришедшего при регистрации на thehost.ua, либо в панель управления сервером можно попасть прямо из кабинета пользователя следующим способом:

kak-poluchit-besplatnyj-ssl-sertifikat-letsencrypt

Если вам плохо видно изображённое на картинке, то для перевода в ISPManager из кабинета пользователя нужно выбрать пункт меню «Хостинг», выбрать необходимый сервер (может быть несколько в одной учётке юзера) и нажать на кнопку «На сервер», которая становится доступной после выбора сервера.

Находясь в ISPManager, выбираем пункт меню SSL сертификаты и нажимаем на кнопку «Создать в самом» верху страницы.

В появившемся диалоговом окне выбираем для поля Тип сертификата значение «самоподписанный», после чего окно примет следующий вид:

sozdat-ssl-sertifikat-samomu-besplatno

Вводим необходимую информацию, аналогичную той, которую мы указывали при оформлении SSL сертификата в CA, после чего нажимаем «ОК».

Сертификат появится в списке существующих SSL сертификатов.

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

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

Поэтому я настоятельно рекомендую использовать коммерческие, выпускаемые официальными сертифицирующими центрами.

Подключение SSL сертификата, оформленного в другом месте

Если же вам по какой-то причине не подошли сертификаты или их стоимость от TheHost, и вы заказали SSL сертификат в другом месте, но у вас есть сайт, расположенный на данном хостинге, то вы можете подключить свой сертификат к имеющемуся сайту.

Сделать это можно в том же диалоговом окне, которое использовалось для создания самоподписанного SSL сертификата.

Только для добавления на сервер TheHost существующего документа нужно будет в поле «Тип сертификата» выбрать значение «существующий», после чего всё диалоговое окно примет следующий вид:

kak-ustanovit-ssl-sertifikat-na-server

Вводим информацию, содержащуюся в вашем готовом SSL сертификате для домена, в соответствующие поля и нажимаем «ОК».

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

Создание запроса SSL сертификата у CA

Ну, и ещё одной возможностью, доступной в данном диалоговом окне создания SSL сертификата, является генерация запроса на выпуск данного документа в центре сертификации.

Данная возможность вам может пригодиться, как уже говорилось ранее, при заказе SSL сертификата не через своего хостинг провайдера, а через других, в том числе и при обращении в CA
напрямую.

Сгенерировать запрос на выпуск SSL сертификата для домена можно прямо у себя на рабочем компьютере с помощью специальных утилит.

Наиболее распространённой является OpenSSL, которая доступна как под Linux, так и под Windows благодаря CygWin или использованию других эмуляторов консоли Linux (та же самая командная строка Git поддерживает Linux команды или утилита PuTTY).

Также есть масса онлайн генераторов запросов на выпуск SSL сертификата. Вот наиболее популярные из них:

  • https://www.rapidsslonline.com/ssl-tools/csr-generator.php
  • https://csrgenerator.com/
  • https://www.ssl.com/online-csr-and-key-generator/

Также, данные генераторы предоставляют все официальные сертифицирующие центры и многие хостинг провайдеры.

Есть такой и у TheHost, который доступен в данном окне.

Чтобы его запустить, выбираем в поле «Тип ключа» значение «Запрос», после чего диалоговое окно примет следующий вид:

kak-sozdat-zapros-ssl-sertifikata

Вводим необходимую информацию и нажимаем ОК. После этого на сервере TheHost сгенерируются файлы csr и key, которые вы сможете в дальнейшем использовать для выпуска сертификата.

Чтобы можно было использовать их содержимое, вам нужно будет выбрать запись с типом «Запрос» в списке всех SSL сертификатов в панели управления хостингом TheHost и нажать кнопку «Скачать» в самом верху экрана, после чего вам на компьютер будет загружен архив с указанными файлами.

Открывайте их обычным текстовым редактором и копируйте код запросов при оформлении SSL сертификатов как через TheHost, так и у других регистраторов.

Как получить бесплатный SSL сертификат Lets Encrypt?

Ну, и напоследок я решил оставить обзор способа создания самого нужного и востребованного у большинства вебмастеров варианта SSL сертификата для домена, который существует у TheHost.

Речь идёт о генерации бесплатного SSL сертификата LetsEncrypt, создать который можно за считанные секунды.

Среди его преимуществ можно выделить не только то, что за его оформление вам не придётся платить, но и то, что процедура его выпуска самая быстрая из всех указанных (по крайней мере, у TheHost), т.к. при генерации не придётся указывать абсолютно никакой дополнительной информации, кроме доменного имени сайта, для которого документ будет выпускаться.

Из минусов можно отметить только то, что он выпускается лишь на 3 месяца, после чего его нужно будет продлевать.

Итак, чтобы создать SSL сертификат от Lets Encrypt, заходим на страницу «SSL сертификаты» в ISPManager и нажимаем на кнопку «Lets Encrypt», после чего откроется следующее диалоговое окно:

sozdanie-besplatnogo-ssl-sertifikata-letsencrypt

Выбираем из списка домен, для которого сертификат будет выпускаться, и нажимаем «ОК».

После этого, без всяких лишних вопросов, сертификат добавится в список. Если просмотреть информацию, содержащуюся в нём (нужно выбрать сертификат и нажать на кнопку «Информация»), то можно увидеть следующее:

nastrojka-ssl-sertifikata

Как видите, для всех LetsEncrypt SSL сертификатов TheHost указывает абсолютно идентичную информацию, упрощая и ускоряя процедуру их выпуска.

При желании вы можете произвести настройку SSL сертификата и изменить содержащуюся в нём информацию на данном этапе. Кстати, настоятельно рекомендую это сделать, т.к. этот шаг повысит ваше доверие у ваших пользователей, которые решат просмотреть данные сертификата.

Отсутствие персональных данных владельца в нём может серьёзно насторожить их, а для некоторых может даже послужить сигналом отказа от использования данного сайта.

Установка SSL сертификата на хостинг

Итак, создание SSL сертификата, я надеюсь, прошло у вас успешно. Теперь всё, что осталось сделать для успешной передачи данных по HTTPS, — это подключить SSL сертификат к сайту, для которого он оформлялся.

В качестве наглядного примера я решил продемонстрировать подключение SSL сертификата к своему тестовому сайту, для которого с этой целью был специально зарегистрирован поддомен — ssl.cccp-blog.com. О том, как создать поддомен сайта в ISPManager на примере TheHost вы можете прочитать в статье по указанной ссылке.

Итак, для подключения SSL сертификата к сайту в панели управления хостингом ISPManager открываем пункт меню «WWW домены», выбираем необходимый и нажимаем на кнопку «Изменить», которая становится доступной в самом верху страницы.

После этого на экране появляется следующее диалоговое окно:

dobavit-ssl-sertifikat-na-sajt

Чтобы установить SSL сертификат на выбранный домен, нам нужно поставить галочку в поле «SSL» и выбрать из выпадающего списка имя нужного документа.

Вот и всё. SSL сертификат на сайт установлен. Сами могли убедиться, насколько это просто и быстро благодаря TheHost и ISPManager, в частности.

Да, пусть он выглядит неказисто, но со своими задачами справляется на отлично :-)

Теперь нам останется только произвести настройки движка сайта, чтобы он корректно работал по новому HTTPS протоколу. Среди них будут редиректы с HTTP на HTTPS, настройка зеркал, правки карты сайта и robots.txt, а также много другое.

Но мы поговорим об этом в следующих статьях, т.к. каждая платформа требует индивидуального подхода.

В завершение обзора настроек сайта в ISPManager, связанных с SSL, хочу обратить ваше внимание на поле «Только SSL» в диалоговом окне, изображённом на скриншоте выше. С помощью него возможно сделать редиректы с HTTP на HTTPS для URL сайта на уровне веб сервера Nginx.

Установив галочку в данном поле, в файл конфигурации веб сервера Nginx на хостинге добавится следующий код:

if ($ssl_protocol = "") {
    rewrite ^ https://$server_name$request_uri? permanent;
}

Можете взять данный способ организации редиректов с HTTP на HTTPS себе на заметку, особенно, если вы не пользуетесь услугами shared хостингов и панелями управления хостингом, в частности, а редирект настроить нужно.

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

Проверка правильности установки SSL сертификата

После того, как SSL сертификат на сайт установлен и активирован, логическим завершением данного процесса будет проверка наличия ошибок, которые могли возникнуть в процессе.

Они могут быть разнообразны: начиная от несовпадения информации в сертификате с той, которая хранится в центре сертификации, заканчивая ошибками в работе самого сертификата.

Чтобы получить полный список проблем перехода на HTTPS и просканировать свой сайт на их наличие, я рекомендую воспользоваться следующими сервисами:

  1. https://www.ssllabs.com/ssltest
  2. https://www.digicert.com/help

В качестве вывода хотелось бы сказать, что в ходе чтения статьи вы сами заметили, насколько хостинг провайдер и панель управления хостингом упрощает жизнь при заказе, установке и настройке SSL сертификатов. Особенно вы могли это ощутить, если когда-либо устанавливали HTTPS соединение для сайта на сервере вручную, не располагающего панелью управления.

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

Особенно ценен данный аргумент для людей, которые никогда не были связаны с веб-программированием и созданием сайтов, но установка SSL сертификата на их сайты необходима.

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

Ну, а если вы ещё только выбираете такового, то хочу порекомендовать TheHost, инструкция по созданию и установке SSL сертификата в панели управления которого и была представлена в данной статье.

На этом всё. До новых встреч! :-)

the_posts_pagination(array( 'mid_size' => 3, 'prev_text' => __('« Предыдущая'), 'next_text' => __('Следующая »') ));