четверг, марта 27, 2008
If you want something done... do it yourself.
Фразой, вынесенной в заголовок, я обычно руководствуюсь, когда встаёт вопрос — писать что-то на PHP самому или взять готовое?
Крайний раз этот вопрос встал по поводу шоппинг-карта для сайта автосервиса «Фортуна». Отсутствие каталога запчастей и возможности делать онлайн-заказы — зияющий пробел на их сайте, который будет устранён на будущей неделе. Естественно, выбранные позиции надо складывать в корзину, т. е. шоппинг-карт, по-русски говоря.
Готовых картов — море. С ними надо разбираться, приспосабливать к своему случаю, бороться с чужими глюками и ограничениями. И в итоге, даже если всё заработает — ты остаёшься там, где был, с нулевым приростом в знании.
К счастью, у меня был свой карт, написанный ранее по случаю. Симпатичный и простой. Удобно размазанный по четырём файлам, где его фрагменты надо было собрать, подправить, перенести куда надо...
Карт — предмет многократной продажи. Поэтому надо убить в него время, чтобы не убивать его потом снова и снова. Я убил день, с утра до вечера.
Получившийся шоппинг-карт выглядит так:
1) Находится в одном подключаемом файле.
2) Подробно документирован внутри: какие переменные ждёт, какие базы MySQL использует (включая SQL-директивы их создания), что устанавливает при выходе.
3) Настройки в начале, дальше черта, за которую ходить не надо.
4) Сам приспосабливается к таблицам каталога товаров. Фактически, всё, что от них действительно требуется — наличие поля price.
5) Сделан по принципу швейцарского ножа: будучи включён в веб-страницу, впрыскивает в неё стили и javascript-функции для работы карта; эти функции вызывают его самого через AJAX, в этом случае этот же файл работает как AJAX-интерфейс к базе данных; наконец, вызовом через POST его можно попросить отправить заказ по почте.
6) 286 (на момент) строк, из них 80 — комментарии.
7) Зависимости: prototype.js и моя бибилиотека wrapper'ов к PHP-функциям работы с MySQL.
Подписаться на:
Комментарии к сообщению (Atom)
3 комментария:
Очень сильно дискутируемо. Отмечу вот что: надо искать не тележку, а CMS. Багов там минимум. Ага, надо знать философию использования любой CMS.
Прирост знаний в сфере написания своей тележки тоже не ахти. Кроме того, вот так, по чесноку - сколько платежных систем поддерживает твоя? :) Чтобы я от Интернета надолго не отрывался, а сразу и оплатил? А счет твоя тележка выписывает? Нет, ну я не хочу сказать, что она отстой, просто веду к тому, что это в принципе некислый кусок работы. Поэтому и коммерческих очень много.
Насчет прироста знаний. Drupal - CMS, в которой есть тележка (даже две), кроме того, это еще редкий (для РНР) фреймворк. Там есть чему поучиться.
Понимаешь, формально ты прав. Свое - оно, конечно, понятнее. И модифицируется легче. И все такое. Но на энной итерации допиливания понимаешь, что все уже написано до нас. И проще привинтить очередной модуль (который, если что, легко правится), чем доделывать свое.
К чему я все это пишу? Ну, во-первых, сам таким страдал, а во-вторых, хочу сэкономить тебе время. Чтобы ты побольше про графику писал, а не велики конструировал. :) Потому как в графике ты силен, да. :)
Ой, вот CMS — моё геморройное место. Я в последний раз как раз для своего офсайта пытался использовать Друпал, три дня провозился... ну всё не то и всё не так. Снёс и сделал всё на трёх PHP-файлах. Я знаю, что это не дело (наоборот, мешает делу), но — воротит вместо решения задач пытаться постигнуть представление CMS об этом решении :-) Что-то надо с этим делать — вероятно, свою CMS :-D
Платёжных систем мой карт, конечно, не поддерживает. Но и его нынешние пользователи их не поддерживают :-) Всем им карт нужен лишь для получения оформленной заявки от посетителя сайта для сделки в оффлайне.
Более того, и посетители этих систем не поддерживают :-) а до радикального апгрейда продавцов и покупателей в нашем регионе ещё есть лет... 10 :-D
Если доведется столкнуться с Drupal еще раз - могу помочь с возникающими вопросами.
Отправить комментарий