Pull to refresh

Simpla — движок для великолепных интернет-магазинов

Reading time7 min
Views13K


Последние 5 лет я создавал интернет-магазины. Много магазинов. Хороших и разных. Я был сам себе программистом, верстальщиком, дизайнером и менеджером.

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

Обычная история


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





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

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

Итак, я пиарюсь


Как я писал в начале, вот уже 5 лет как я создаю интернет-магазины. И все эти 5 лет я использовал собственный движок интернет-магазина, постоянно улучшая его. Недавно я произвел полную переработку кода, структуры и дизайна движка. В результате появился скрипт интернет-магазина Simpla.

Основное приеимущество Simpla — в его простоте. Простоте с точки зрения посетителя сайта, администратора, верстальщика и программиста. В нем нет 9999 возможностей. Но в нем есть все что нужно хорошему интернет-магазину.

Требования


Так как я заранее не знаю где будет установлена Simpla, я старался сделать ее как можно менее требовательной к параметрам сервера:
  • сервер Apache + mod_rewrite
  • MySQL 4.1 и выше (возможно и меньше, не тестировал на более ранних)
  • PHP4 или PHP5
  • не требуется Zend Optimizer
  • желатетен GD2 для авторесайза картинок
  • UPD --enable-bcmath

Установка


Скрипт поставляется в виде архива source.zip и инсталлятора install.php, который работает в виде мастера установки, и состоит из нескольких шагов:


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



С точки зрения покупателя


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

Добавим товар в корзину:


Далее остается ввести информацию о получателе, и нажать «заказать»:


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


Среди способов онлайн-оплаты сейчас есть webmoney и visa/mastercard, но скоро добавится еще несколько популярных способов.
Пользователь всегда может увидеть состояние своего заказа, несмотря на то что он не зарегистрирован. Это очень удобно.

Магазин с точки зрения админиcтратора


Панель управления выглядит вот так:


Для примера попробуем отредактировать какой-то товар:


Обратите внимание, что картинки к товару можно загружать непостредственно с другого сайта (что актуально для 70% заказчиков, а-я-яй).
Естественно, картинки автоматически приводятся к необходимому размеру.

Так же, не могу не упомянуть о плагине загрузки картинок во встроенном редакторе tinymce, который я купил в Германии (а так же и плагин для загрузки файлов).
Вот как он выглядит, но я советую пощупать его вживую:



Счастье админа


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



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

Как менять дизайн


Внешний вид магазина задается «темами» дизайна. Каждая тема — это просто папка, которая содержит подпапки css, images и html.


Хотя в большинстве случаев достаточно взять стандартный дизайн и изменить css.

Дизайн можно редактировать прямо из панели управления:



Для мелких правок это очень удобно. А некоторым людям удобно и для крупных.

С точки зрения программиста


Большинство cms сделаны по принципу «добавим 9999 функций, авось какая-то пригодится». Конечно какие-то функции действительно пригождаются в разных случаях. Но они загромождают код и панель управления. Я же выбрал немного другой принцип — если необходимость функции сомнительна, я ее не включаю в cms. Это позволило сделать код проще, и облегчает добавление действительно необходимой функции для конкретного сайта. В качестве примера я просто приведу исходный код, допустим, модуля ленты новостей:

<?PHP
/**
* Simpla CMS
*
* @copyright   2009 Denis Pikusov
* @link     simplacms.ru
* @author     Denis Pikusov
*
* Отображение новостей на сайте
* Использует шаблон news.tpl для ленты новостей, и news_item.tpl для вывода одной новости
*/

require_once('Widget.class.php');

class NewsLine extends Widget
{
  /**
   * Конструктор
   */
  function NewsLine(&$parent)
  {
    Widget::Widget($parent);
  }
  
  /**
   * Отображение
   */
  function fetch()
  {
    // Какую новость нужно вывести?
    $news_url = $this->url_filtered_param('news_url');

    if (!empty($news_url))
    {
      // Если передан url новости, выводим ее
      return $this->fetch_item($news_url);
    }
    else
    {
      // Если нет, выводим список всех новостей
      return $this->fetch_list();
    }
  }

  /**
   * Отображение списка новостей
   */  
  function fetch_list()
  {
    // Выбераем новости из базы
    $this->db->query('SELECT *, DATE_FORMAT(date, \'%d.%m.%Y\') as date FROM news WHERE enabled=1 ORDER BY date DESC');
    $news = $this->db->results();

    // Передаем в шаблон
    $this->smarty->assign('news', $news);
    $this->body = $this->smarty->fetch('news.tpl');
    
    return $this->body;
  }

  /**
   * Отображение отдельной новости
   */  
  function fetch_item($url)
  {
    // Выбираем новость из базы
    $query = sql_placeholder('SELECT *, DATE_FORMAT(date, \'%d.%m.%Y\') as date FROM news WHERE url = ? AND enabled=1 LIMIT 1', $url);
    $this->db->query($query);

    // Если не существует такая новость - ошибка 404
    if ($this->db->num_rows() == 0)
    {
      return false;
    }
    $item = $this->db->result();

    // Устанавливаем метатеги для страницы с этой новостью
    $this->title = $item->meta_title;
    $this->keywords = $item->meta_keywords;
    $this->description = $item->meta_description;

    // Передаем в шаблон
    $this->smarty->assign('news_item', $item);
    $this->body = $this->smarty->fetch('news_item.tpl');
    return $this->body;
  }
}


* This source code was highlighted with Source Code Highlighter.


С точки зрения здравого смысла



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

Я приглашаю вас поближе познакомиться с Simpla на моём скромном сайте: simplacms.ru

Онлайн-демонстрация:
simplacms.ru/demo
simplacms.ru/demo/admin

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

UPD Если онлайн-демка кривая или не работает — значит до вас там кто-то сильно похозяйничал. Просто зайдите в автоматизацию — бекап — и восстановите default.zip а то я сам не успеваю беспрерывено мониторить. Извините, просто не рассчитывал на такой эффект ) А лучше — ставьте себе локально

UPD2 Огромное спасибо всем, кто уделил внимание, мне очень приятно слышать что многим понравилось, и критика это тоже приятно (лучше чем равнодушие, и полезней). Если кто-то нашел реальные дыры в безопасности — очень прошу не молчать. Любый замечания, гадости и комплименты приветствуются :)
Tags:
Hubs:
Total votes 233: ↑218 and ↓15+203
Comments446

Articles