Последние 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 Огромное спасибо всем, кто уделил внимание, мне очень приятно слышать что многим понравилось, и критика это тоже приятно (лучше чем равнодушие, и полезней). Если кто-то нашел реальные дыры в безопасности — очень прошу не молчать. Любый замечания, гадости и комплименты приветствуются :)