Textpattern - на русском языке

форум общения русскоязычных пользователей CMS Текстпаттерн

Вы не зашли.

#1 30-12-2010 15:44:54

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Сайт интернет-магазина

Сделал на досуге интернет-магазин. Хотя это скорее витрина, а не интернет-магазин. В настоящий момент он в процессе наполнения, но функционал уже работает. Из плагинов использовались только OtG_Fields для полей к товарам и chh_if_data, чтобы проверять на непустое значение.

Неактивен

 

#2 31-12-2010 08:12:43

Герион
аз
Зарегистрирован: 31-12-2010
Сообщений: 3

Re: Сайт интернет-магазина

Здравствуйте, с наступающим.
на тестирование даете скачать сие прекрасное творение?
как раз в моем случае витрина  самый удачный вариант.

Неактивен

 

#3 31-12-2010 09:15:35

advan
ю
Откуда: Mk
Зарегистрирован: 05-11-2006
Сообщений: 833
Вебсайт

Re: Сайт интернет-магазина

Sergey написал:

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

А суммирование в корзине и отправка заказа? Чистый PHP?


<txp:455/>  /  Знакомьтесь на здоровье - http://love.kachok.ru  /  Я в PHP ниПХПуя незнаю! :)

Неактивен

 

#4 31-12-2010 11:54:33

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

advan написал:

А суммирование в корзине и отправка заказа? Чистый PHP?

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

Отредактированно Sergey (31-12-2010 11:57:46)

Неактивен

 

#5 31-12-2010 11:56:08

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

Герион написал:

Здравствуйте, с наступающим.
на тестирование даете скачать сие прекрасное творение?
как раз в моем случае витрина  самый удачный вариант.

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

Неактивен

 

#6 31-12-2010 14:12:31

Герион
аз
Зарегистрирован: 31-12-2010
Сообщений: 3

Re: Сайт интернет-магазина

Sergey написал:

Герион написал:

Здравствуйте, с наступающим.
на тестирование даете скачать сие прекрасное творение?
как раз в моем случае витрина  самый удачный вариант.

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

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

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

Неактивен

 

#7 31-12-2010 14:46:07

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

Герион написал:

Sergey написал:

Герион написал:

Здравствуйте, с наступающим.
на тестирование даете скачать сие прекрасное творение?
как раз в моем случае витрина  самый удачный вариант.

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

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

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

Это не мой движок - это все тот же Textpattern, витрина сделана на его основе. Для реализации витрины на клиентской стороне используется jquery.cycle. С освоением не должно быть никаких проблем wink

Неактивен

 

#8 31-12-2010 15:02:46

Герион
аз
Зарегистрирован: 31-12-2010
Сообщений: 3

Re: Сайт интернет-магазина

Спасибо за  ответ. Буду вгрызаться в реализацию.

Неактивен

 

#9 31-12-2010 18:31:43

itshaman
слово
Откуда: Омск
Зарегистрирован: 03-06-2009
Сообщений: 395
Вебсайт

Re: Сайт интернет-магазина

Красиво сделали, мне нравится.
Действительно, было бы очень позновательно, если бы Вы привели ваш PHP-код. А то говорят, что на Textpattern нельзя сделать интернет-магазин.


Помогу сделать Ваш сайт лучше! Принимаю Webmoney, PayPal, рубли, доллары, печеньки

Неактивен

 

#10 31-12-2010 19:10:55

the_ghost
ять
Откуда: Минск
Зарегистрирован: 01-05-2007
Сообщений: 1957
Вебсайт

Re: Сайт интернет-магазина

itshaman написал:

Красиво сделали, мне нравится.
Действительно, было бы очень позновательно, если бы Вы привели ваш PHP-код. А то говорят, что на Textpattern нельзя сделать интернет-магазин.

Кто говорит? Магазин обложек http://bookilla.com и магазин кухонных моек http://otmoyka.ru с вами не согласны!


.      Создание шаблонов для Textpatern http://textpattern.ru/forum/viewtopic.php?id=1665 (<txp:make_template quality="best" />)
КОНСУЛЬТАЦИИ по Textpattern - ICQ#8458496, nemiga@gmail.com <txp:if_question><txp:pay /></txp:if_question>
       Список всех тегов - http://textbook.textpattern.net/wiki/in … _Reference

Неактивен

 

#11 31-12-2010 22:22:14

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

itshaman написал:

Красиво сделали, мне нравится.
Действительно, было бы очень позновательно, если бы Вы привели ваш PHP-код. А то говорят, что на Textpattern нельзя сделать интернет-магазин.

Спасибо!

Там много PHP-кода в силу моей лени упаковывать все в плагин и рыться в мануалах. Давайте расскажу про корзину. Только не все сразу, а то у меня 2 часа до НГ и жена негодует smile

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

Моя реализация корзины на уровне логики - это:
1. Возможность сохранить товар с атрибутами в сессии пользователя (добавить товар в корзину).
2. Удалить товар из сессии (удалить товар из корзины).
3. Передать перечень товаров в почтовый скрипт (отправить перечень идентификаторов товара и их свойства в почтовый скрипт).
4. Уничтожить сессию (полностью очистить корзину).

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

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

Код:

lg-roboking-vr5901kl|a:2:{i:0;s:2:"18";i:1;s:5:"38818";}

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

Возможность сохранить товар с атрибутами в сессии пользователя (добавить товар в корзину).

Код, реализующий данную возможность очень прост:

Код:

<txp:php>
session_start();
</txp:php>

Я оформил этот код в форму c именем session и вызываю в шаблоне на каждой странице сайта, где нужно работать с сессией, следующим образом:

Код:

<txp:output_form form="session" />

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

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

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

Код:

function addItem(name,price) {
/* если соединение пользователя с сетью медленное, то показываем зацикленную анимацию, чтобы он понимал, что процесс идет */
$(".item > #btn > .add_red").before('<img src="/images/loader.gif" style="width:16px; height=16px;" class="loader" />');

/* С помощью библиотеки jQuery отправляем в текущую секцию переданные в функцию параметры */
$.ajax({
   type: "GET",
   url: "/",
   data: "name="+name+"&price="+price,
/* Если данные успешно отправлены, то делаем кнопку неактивной и выводим ссылку на страницу со списком товара */
   success: function(msg){
        $('.add_link').replaceWith('<span>Пылесос в корзине</span>');
        
        $('#btn > .add_red').after('<div class="clear"></div><a id="buyNow" href="/basket/">оформить покупку &raquo;</a><br />');

        $('.item > #btn > .loader').remove();
        $(".item > #btn > .add_red").attr("class","add_gray");
        }
   }); 
}

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

Код:

<txp:php>
// определяем функцию для сохранения данные о товаре в сессии.
    function addItem ($id,$price) {
        $_SESSION[$id] = array($id,$price);
    }

// Устанавливаем проверку: если запрос пришел через AJAX (пользователь добавил товар в корзину), то вызываем 
// определенную выше функцию и сохраняем массив в сессию. В противном случае тихо умираем и ничего не делаем.

    if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
    addItem ($_GET['id'], $_GET['price']);
    }
    exit();
}
</txp:php>

Таким образом мы положили товар в корзину.

Удаление товара из корзины

В начале разработки магазина мы подразумевали, что пользователь может положить в корзину сколько угодно товара. Но после запуска и первичного тестирования на кошечках выяснили, что специфика ниши не предполагает "оптовых закупок" ввиду достаточно высокой стоимости товара и функционал удаления практически не будет использован. Поэтому секцию корзины я выключил из шагов оформления товара, однако не убрал с сайта (robozine.ru/basket/), так как в недалеком будущем планируется добавить для покупки кучу аксессуаров к пылесосам, тогда-то мне и пригодится возможность удаления.

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

http://dl.dropbox.com/u/1798651/txp/basket_screen.png

Чтобы их показать, нужно заглянуть в сессию пользователя.

Код:

<txp:php>
// в переменную будет сохраняться общая стоимость товаров
$sum;

// в цикле проходим по массиву товаров, ранее сохраненных в сессии, извлекаем идентификатор для каждого товара и подставляем
// в стандартный тег <txp:article />, а в качестве параметров передаем ему идентификатор товара (статьи), и далее он выводит
// с помощью формы название товара и кнопку "удалить товар".

    foreach($_SESSION as $k=>$v){
        echo article(array(id => $v[0], 'listform'=>'item.list.basket.asArticle','limit'=>'20'));
    }

// Получаем общую стоимость товара. Для этого опять лезем в сессию и извлекаем в цикле стоимость каждого товара и суммируем ее.

    function getPrice() {

        foreach($_SESSION as $z=>$x){
            $sum += $x[1];
        }
        return number_format($sum, 0, ',', ' ');
    }
</txp:php>

Форма "item.list.basket.asArticle" содержит оформление с вкраплениями javascript-кода, который будет отправлять идентификатор товара для его удаления из сессии. PHP-код ($pr[...]) позволяет вывести отформатированную стоимость товара и ничего больше.

Код:

<tr>
    <td class="del"><a href="#StayHere" onclick="removeItem('<txp:article_url_title />')"><img src="/images/basket_delete.png" title="Удалить пылесос"></a></td>
    <td class="title"><txp:permlink><txp:title /></txp:permlink></td>
    <td class="price"><txp:php>$pr = custom_field(array('name' => 'price')); echo number_format($pr, 0, ',', ' ');</txp:php> руб.</td>
</tr>

js-функция позволяет по клику на иконку "x" передать идентификатор товара в php-функцию для удаления.

Код:

function removeItem(name) {
    $.ajax({
    type: "GET",
    url: "/basket/",
    data: "name="+name,
    success: function(msg){
        document.location.href = "/order/";
        }
   }); 
}

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

Код:

<txp:output_form form="session" />
<txp:php>
// определяем функцию удаления товара: при получение идентификатора товара, удаляем его из сессии.

        function removeItem ($name) {
            unset($_SESSION[$name]);
        }

// Устанавливаем проверку: если запрос пришел через AJAX (пользователь решил удалить товар), то вызываем
// определенную выше функцию и скармливаем ей идентификатор товара.

    if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
        removeItem($_GET['name']);
        exit();
    }
</txp:php>

Отредактированно Sergey (05-01-2011 17:51:38)

Неактивен

 

#12 03-01-2011 13:50:48

aclorange
иже
Зарегистрирован: 07-01-2009
Сообщений: 138

Re: Сайт интернет-магазина

Чертовски нравится ваш магазин. Единственное, что бы добавил - информацию о доставке и способах оплаты на каждую страницу магазина. Для меня это важно, всегда начинаю нервничать, когда не могу найти ссылку на такую информацию (хотя в меню у вас сразу нашел пункт "доставка"). Можно добавить эту информацию хотя бы в "часто задаваемые вопросы", ведь место в сайдбаре все равно пустует.
И на витрине бы выделил как-нибудь, что предлагается на выбор только 3 пылесоса. Т.к. можно запутаться, увидев только один.

Неактивен

 

#13 05-01-2011 18:01:04

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

aclorange написал:

Чертовски нравится ваш магазин. Единственное, что бы добавил - информацию о доставке и способах оплаты на каждую страницу магазина. Для меня это важно, всегда начинаю нервничать, когда не могу найти ссылку на такую информацию (хотя в меню у вас сразу нашел пункт "доставка"). Можно добавить эту информацию хотя бы в "часто задаваемые вопросы", ведь место в сайдбаре все равно пустует.
И на витрине бы выделил как-нибудь, что предлагается на выбор только 3 пылесоса. Т.к. можно запутаться, увидев только один.

Спасибо smile

Информация о доставке есть в наиболее ожидаемых частях сайта: в "часто задаваемых вопросах" и, собственно, секции "доставка". Про способ оплаты тоже указано в "часто задаваемых вопросах". Дублировать эту информации на всех страницах сайта мне кажется неоправданным излишеством. Если пользователь не найдет ответ на свой вопрос, то позвонит или напишет. А если не позвонит и не напишет, то значит не сильно-то и хотел. В магазине нет импульсных продаж, это чуть другой канал. Покупатель робота сначала досконально все изучает, а уже потом принимает решение о покупке.

Витрина да, суровая получилась smile Чуть позже переделаю - под витриной будет перечень моделей и сама она станет понятнее.

Неактивен

 

#14 11-01-2011 11:11:29

advan
ю
Откуда: Mk
Зарегистрирован: 05-11-2006
Сообщений: 833
Вебсайт

Re: Сайт интернет-магазина

Sergey написал:

Там много PHP-кода в силу моей лени упаковывать все в плагин и рыться в мануалах. Давайте расскажу про корзину. Только не все сразу, а то у меня 2 часа до НГ и жена негодует smile

Про корзину — спасибо! А можно про отправку ее содержимого на e-mail?
Я пробовал подружить готовую корзинку joe_gcart с zem_contact_reborn, но что-то так и не разобрался до конца sad


<txp:455/>  /  Знакомьтесь на здоровье - http://love.kachok.ru  /  Я в PHP ниПХПуя незнаю! :)

Неактивен

 

#15 11-01-2011 12:01:44

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

advan написал:

Про корзину — спасибо! А можно про отправку ее содержимого на e-mail?
Я пробовал подружить готовую корзинку joe_gcart с zem_contact_reborn, но что-то так и не разобрался до конца sad

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

Отредактированно Sergey (11-01-2011 12:04:22)

Неактивен

 

#16 11-01-2011 19:56:53

advan
ю
Откуда: Mk
Зарегистрирован: 05-11-2006
Сообщений: 833
Вебсайт

Re: Сайт интернет-магазина

Sergey написал:

Да, конечно. Я чуть позже напишу, как разберусь с почтой, накопленной за праздники.

Ждем в нетерпением!

Sergey написал:

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

А мне вот проще в плагине разобраться (см. подпись smile )


<txp:455/>  /  Знакомьтесь на здоровье - http://love.kachok.ru  /  Я в PHP ниПХПуя незнаю! :)

Неактивен

 

#17 22-06-2011 17:47:41

advan
ю
Откуда: Mk
Зарегистрирован: 05-11-2006
Сообщений: 833
Вебсайт

Re: Сайт интернет-магазина

Sergey написал:

Да, конечно. Я чуть позже напишу, как разберусь с почтой, накопленной за праздники.

Сергей, не появилось желания/возможности описАть отправку содержимого корзины на e-mail? wink


<txp:455/>  /  Знакомьтесь на здоровье - http://love.kachok.ru  /  Я в PHP ниПХПуя незнаю! :)

Неактивен

 

#18 22-06-2011 17:58:25

Sergey
твёрдо
Зарегистрирован: 14-12-2005
Сообщений: 421
Вебсайт

Re: Сайт интернет-магазина

Ох, я и забыл совсем, сорри. Напишу на следующей неделе.

Отредактированно Sergey (23-06-2011 09:53:59)

Неактивен

 

#19 23-06-2011 09:13:34

advan
ю
Откуда: Mk
Зарегистрирован: 05-11-2006
Сообщений: 833
Вебсайт

Re: Сайт интернет-магазина

оЧЧЧень жду/ждем smile


<txp:455/>  /  Знакомьтесь на здоровье - http://love.kachok.ru  /  Я в PHP ниПХПуя незнаю! :)

Неактивен

 

#20 29-08-2011 17:13:06

Saldacenkaw
живёте
Зарегистрирован: 05-11-2006
Сообщений: 96

Re: Сайт интернет-магазина

Давайте поднимем тему, Сергей, она очень актуальна ) Если есть время — поделитесь пожалуйста.

Неактивен

 

#21 24-07-2013 09:22:17

adlena
аз
Зарегистрирован: 21-06-2013
Сообщений: 2

Re: Сайт интернет-магазина

Спасибо за обмен, хороший сайт

Неактивен

 

Board footer

RSS   Rambler's Top100
Powered by PunBB
Textpattern.ru