IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Модуль Корзины и Прайса
AnyUser
сообщение 18.1.2010, 15:46
Сообщение #1


Активный участник
***

Группа: Модератор
Сообщений: 323
Регистрация: 25.11.2009
Из: Екатеринбург
Пользователь №: 107
Версия CMS Free: 3.3
Создано сайтов: 4



Версия модуля:v.1
Прикрепленный файл  korzina_price_v.1.zip ( 5,85 килобайт ) Кол-во скачиваний: 276

Состав модуля:
  • \pages\order.php -страница обработки заказа с формой отправки на почту
  • \pages\page.php -добавлена возможность выведения каталога товаров
  • \pages\price.php -страница прайс
  • \phpshop\inc\cart.inc.php -настройка каталога товаров
  • \UserFiles\Price\price.csv -файл прайса в формате *.csv (разделитель точка с запятой)


Установка:
Установка возможна только на версии не ниже PHPShop 3.0.0.16 (рекомендуется v.3.1.*)
Добавить все файлы из архива, при необходимости заменить.
В файле "\phpshop\inc\config.ini" добавить (если нет):
Код
[autoload]
cart="./phpshop/inc/cart.inc.php";         #файл генерации каталога товаров"

Настройка:
  • Отображение "Корзины" в общем дизайне:
    В файлах
    \phpshop\templates\ваш_дизайн\main\index.tpl
    \phpshop\templates\ваш_дизайн\main\shop.tpl
    добавить в нужное место
    Код
    @miniCart@
  • Отображение товара из прайса на странице
    На странице пишем код:
    Код
    @php $Product = new ProductDisp(1); php@

    Где (1)- его ID в файле прайса
  • Добавление нового поля в прайс с последующим его отображением на сайте(на примере Веса)
    дописываем в файл \UserFiles\Price\price.csv новое поле:
    Код
    ID;Артикул;Наименование;Цена;Вес
    1;prod1;Елка;1000;101
    2;prod2;Дед Мороз;2000;102
    3;prod3;Снегурочка;5000;103
    4;prod4;Шампанское;270;104
    5;prod5;Салат Оливье;180;105

    Далее в файле \phpshop\inc\cart.inc.php добавляем нашу позицию:
    Код
    // Класс чтения из CSV
    class ProductCsv extends PHPShopReadCsv{
         var $CsvToArray;
        
          function ProductCsv($file){
          $this->CsvContent = parent::readFile($file);
          parent::PHPShopReadCsv();
          }
          
          function CreatBase(){
          $CsvToArray = $this->CsvToArray;
          foreach ($CsvToArray as $items){
                       $_PRODUCT[$items[0]]['art']=$items[1];
                       $_PRODUCT[$items[0]]['name']=$items[2];
                       $_PRODUCT[$items[0]]['price']=$items[3];
                       $_PRODUCT[$items[0]]['ves']=$items[4];      
                 }
          return $_PRODUCT;
          }
          
    }


    class ProductDisp{
          var $productID;
          var $productObj;
          
          function ProductDisp($productID){
          $this->productID = $productID;
          $this->productObj = $GLOBALS['_PRODUCT'][$productID];
          $this->getForma();
          }
          
          function getId(){
          return $this->productID;
          }
          
          function getPrice(){
          return $this->productObj['price'];
          }
          
          function getName(){
          return $this->productObj['name'];
          }
          
          function getArt(){
          return $this->productObj['art'];
          }

          
          function getves(){
          return $this->productObj['ves'];
          }

        function getCart(){
          return '
          <form method="get">
          <input type="hidden" name="item" value="'.$this->productID.'">
          <input type="submit" value="В корзину"  height="10" title="Добавить 1 шт.">
          </form>';
          }
          
          function getForma(){
          global $PHPShopSystem;
          echo
          "Наименование: <strong>".$this->getName()."</strong><br>
          Вес:<strong>".$this->getves()."</strong><br>
          Артикул: <strong>".$this->getArt()."</strong><br>
          Стоимость: <strong>".$this->getPrice()." ".$PHPShopSystem->getParam("dengi")."</strong><br>
          ".$this->getCart();
          }
  • Добавление картинки в описание товара через файл *.csv
    Для начала вносим изменения в phpshop/class/readcsv.class.php
    заменмть функцию

    Код
    function CleanStr($str){
    return PHPShopSecurity::CleanStr($str);
    }

    на
    Код
    function CleanStr($str){
    return $str;
    }

    добавляем в прайс картинки
    Код
    ID;Артикул;Наименование;Цена;Картинка
    1;prod1;Елка;1000;<img src=http://caferr.ru/UserFiles/Image/картинка_товара_№1.jpg width=150>
    2;prod2;Дед Мороз;2000;<img src=http://caferr.ru/UserFiles/Image/картинка_товара_№2.jpg width=150>
    3;prod3;Снегурочка;5000;<img src=http://caferr.ru/UserFiles/Image/картинка_товара_№3.jpg width=150>
    4;prod4;Шампанское;270;<img src=http://caferr.ru/UserFiles/Image/картинка_товара_№4.jpg width=150>
    5;prod5;Салат Оливье;180;<img src=http://caferr.ru/UserFiles/Image/картинка_товара_№5.jpg width=150>

    Добавляем отображение картинки в файле \phpshop\inc\cart.inc.php
    Код
    // Класс чтения из CSV
    class ProductCsv extends PHPShopReadCsv{
         var $CsvToArray;
        
          function ProductCsv($file){
          $this->CsvContent = parent::readFile($file);
          parent::PHPShopReadCsv();
          }
          
          function CreatBase(){
          $CsvToArray = $this->CsvToArray;
          foreach ($CsvToArray as $items){
                       $_PRODUCT[$items[0]]['art']=$items[1];
                       $_PRODUCT[$items[0]]['name']=$items[2];
                       $_PRODUCT[$items[0]]['price']=$items[3];
                       $_PRODUCT[$items[0]]['img']=$items[4];      
                 }
          return $_PRODUCT;
          }
          
    }


    class ProductDisp{
          var $productID;
          var $productObj;
          
          function ProductDisp($productID){
          $this->productID = $productID;
          $this->productObj = $GLOBALS['_PRODUCT'][$productID];
          $this->getForma();
          }
          
          function getId(){
          return $this->productID;
          }
          
          function getPrice(){
          return $this->productObj['price'];
          }
          
          function getName(){
          return $this->productObj['name'];
          }
          
          function getArt(){
          return $this->productObj['art'];
          }

          
          function getimg(){
          return $this->productObj['img'];
          }

        function getCart(){
          return '
          <form method="get">
          <input type="hidden" name="item" value="'.$this->productID.'">
          <input type="submit" value="В корзину"  height="10" title="Добавить 1 шт.">
          </form>';
          }
          
          function getForma(){
          global $PHPShopSystem;
          echo
          "Наименование: <strong>".$this->getName()."</strong><br>
          Картинка:".$this->getimg()."<br>
          Артикул: <strong>".$this->getArt()."</strong><br>
          Стоимость: <strong>".$this->getPrice()." ".$PHPShopSystem->getParam("dengi")."</strong><br>
          ".$this->getCart();
          }

Добавив все нужные поля и подредактировав вывод в файле \phpshop\inc\cart.inc.php
Мы можем получить следующее:
Прикрепленное изображение


Всё обсуждение модуля в соседней теме.
Просьба не флудить. Все посты будут удалятся.

Сообщение отредактировал AnyUser - 19.1.2010, 13:38
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 18.1.2010, 16:30
Сообщение #2


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



Предлагаю ввести корректировку небольшую, дабы в страницах не прописывать ручками каждый раз ид товара. Зная линк страницы моно в CSV добавить поле, по кторому товар будет находить себя. Далее создать файл /pages/catalog.php, где для каталогов страницы будут выводить друг за другом, эмулируя работы карточек товара и сразу по ссылкам подключаться данные из прайса. Этот вариант хорош как для магазина так и для каталога программ (можно еще поле ввести ссылка на файл, по кторому можно будет скачать).

Могу помочь в реализации smile.gif
Перейти в начало страницы
 
+Цитировать сообщение
alexzandor
сообщение 23.2.2011, 22:42
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 53
Регистрация: 2.5.2010
Пользователь №: 429



А все-таки как добавить еще одно поле в прайс, допустим "производитель" в новой версии корзины? Делаю все по этой инструкции - не получается:(
Перейти в начало страницы
 
+Цитировать сообщение
ElGato
сообщение 24.2.2011, 5:08
Сообщение #4


Я - не волшебник, я только лечусь
***

Группа: Модератор
Сообщений: 1009
Регистрация: 19.8.2010
Из: Екб. Подгорье
Пользователь №: 549
Версия CMS Free: 342-344



Цитата(alexzandor @ 24.2.2011, 0:42) *
А все-таки как добавить еще одно поле в прайс, допустим "производитель" в новой версии корзины? Делаю все по этой инструкции - не получается:(

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

1. К стандартному прайсу добавили поле с нужной нам характеристикой Вес
Код
ID;Артикул;Наименование;Цена;Категория;Вес
page1;prod1;Елка;1000;1;10
page2;prod2;Дед Мороз;2000;1;120
page3;prod3;Снегурочка;5000;1;45


2. В файл cart.inc.php добавляем чтение данного поля из файла. По счету слева направо это поле пятое, следовательно, и в массив записываем пятое значение. (По образу и подобию можете вставить другие поля)
Код
...
// Первые четыре строки уже существуют в стандартной поставке скрипта
  $PRODUCT[$items[0]]['art']=$items[1];
  $PRODUCT[$items[0]]['name']=$items[2];
  $PRODUCT[$items[0]]['price']=$items[3];
  $PRODUCT[$items[0]]['catalog']=trim($items[4]);

  $PRODUCT[$items[0]]['ves']=$items[5]; //Добавили поле "Вес"


3.1 Далее, в файле price.core.php вставляем обработку добавленных полей.
Код
...
$dis.='<table cellSpacing="1" cellPadding="3" width="95%" bgColor="#d2d2d2" >
<tr bgColor="#F0F0F0">
    <td><strong>Артикул</strong></td>
    <td><strong>Наименование</strong></td>
    <td><strong>Цена</strong></td>';

    //--------------------------------------------------------------------------
    //Вставили заголовок столбца для вывода веса
        $dis.='<td><strong>Вес</strong></td>
        <td><strong>Кол-во</strong></td>
...


3.2 В этом же файле, чуть ниже находим строки вывода значений и добавляем вывод своих значений.
Код
...
$dis.='<tr bgColor="#ffffff">
    <td>'.$val['art'].'</td>
    <td>'.$val['name'].'</td>
    <td>'.$val['price'].' '.$GLOBALS['LoadItems']['modules']['cart']['valuta'].'</td>';

    //--------------------------------------------------------------------------
    //Добавили вывод ячейки "Вес"
      <td>'.$val['ves'].'</td>

4. В файле price.core.php обработка вывода значений производится в двух местах. Первый - в категории, второй - в общем прайс-листе. Следовательно, вставлять показ добавленных полей надо тоже в двух местах (ищем чуть ниже такой же кусок кода). См. п. 3.2

Здесь пример реализации. Добавлено поле "Описание".

P.S.: Основное обсуждение данного модуля идет в соседней теме: http://forum.phpshopcms.ru/index.php?showtopic=177
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 24.2.2011, 10:36
Сообщение #5


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



Elgato молодца, вынес твою инструкцию в топик Уроков: http://forum.phpshopcms.ru/index.php?showtopic=1015
Перейти в начало страницы
 
+Цитировать сообщение
ElGato
сообщение 24.2.2011, 12:11
Сообщение #6


Я - не волшебник, я только лечусь
***

Группа: Модератор
Сообщений: 1009
Регистрация: 19.8.2010
Из: Екб. Подгорье
Пользователь №: 549
Версия CMS Free: 342-344



Цитата(Dennion @ 24.2.2011, 12:36) *
Elgato, молодца

Пожалуйста. Мне не трудно wink.gif

Цитата(Dennion @ 24.2.2011, 12:36) *
...вынес твою инструкцию в топик Уроков: http://forum.phpshopcms.ru/index.php?showtopic=1015

Дай Бог, кому-нибудь поможет.
Перейти в начало страницы
 
+Цитировать сообщение
GiantCherry
сообщение 5.5.2011, 6:59
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 79
Регистрация: 28.2.2011
Из: Санкт-Петербург
Пользователь №: 2092
Версия CMS Free: 3.4.1.2.3
Создано сайтов: 1



Цитата(ElGato @ 24.2.2011, 6:08) *
Код
...
// Первые четыре строки уже существуют в стандартной поставке скрипта
  $PRODUCT[$items[0]]['art']=$items[1];
  $PRODUCT[$items[0]]['name']=$items[2];
  $PRODUCT[$items[0]]['price']=$items[3];
  $PRODUCT[$items[0]]['catalog']=trim($items[4]);

  $PRODUCT[$items[0]]['ves']=$items[5]; //Добавили поле "Вес"


Функция trim здесь принципиальна? Попробовал с ней и без нее разницы не почувствовал.
Перейти в начало страницы
 
+Цитировать сообщение
outlaw
сообщение 16.5.2011, 11:23
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 69
Регистрация: 30.6.2010
Пользователь №: 498
Версия CMS Free: 33102
Создано сайтов: 2



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

http://www.сайт.ru/price/ - вот с этой странницы
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 16.5.2011, 12:20
Сообщение #9


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



Цитата(outlaw @ 16.5.2011, 12:23) *
Доброго дня!
Подскажите как убрать кнопку "скачать прайс-лист" - в одном месте убрал, но все равно отображается...

http://www.сайт.ru/price/ - вот с этой странницы


phpshop/modules/cart/core/price.core.php
Перейти в начало страницы
 
+Цитировать сообщение
dead_serg
сообщение 16.6.2011, 11:18
Сообщение #10


Участник
**

Группа: Пользователи
Сообщений: 10
Регистрация: 30.5.2011
Пользователь №: 2602



Ребята, подскажите как реализировать привязку товара в прайсе не к одной категории товаров, а например к двум-трем?
Перейти в начало страницы
 
+Цитировать сообщение
dead_serg
сообщение 20.6.2011, 11:30
Сообщение #11


Участник
**

Группа: Пользователи
Сообщений: 10
Регистрация: 30.5.2011
Пользователь №: 2602



Народ, помогите плиз, очень нужно решить эту проблему...
Перейти в начало страницы
 
+Цитировать сообщение
Worm
сообщение 20.6.2011, 12:05
Сообщение #12


Активный участник
***

Группа: Модератор
Сообщений: 2675
Регистрация: 30.12.2009
Из: Самара
Пользователь №: 213
Версия CMS Free: 34
Создано сайтов: Достаточно много



Я хз. Надо потыкать.
А разработка/доработка/усовершенствование этого модуля прекращена.
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 20.6.2011, 12:25
Сообщение #13


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



Цитата(dead_serg @ 20.6.2011, 12:30) *
Народ, помогите плиз, очень нужно решить эту проблему...


Да нет решения простого, пилить модуль нужно.
Перейти в начало страницы
 
+Цитировать сообщение
dead_serg
сообщение 20.6.2011, 17:11
Сообщение #14


Участник
**

Группа: Пользователи
Сообщений: 10
Регистрация: 30.5.2011
Пользователь №: 2602



Цитата(Dennion @ 20.6.2011, 12:25) *
Да нет решения простого, пилить модуль нужно.

И на этом спасибо, думал, что можно просто через какой-то символ в прайсе указать несколько категорий... sad.gif
Перейти в начало страницы
 
+Цитировать сообщение
Worm
сообщение 4.10.2011, 15:40
Сообщение #15


Активный участник
***

Группа: Модератор
Сообщений: 2675
Регистрация: 30.12.2009
Из: Самара
Пользователь №: 213
Версия CMS Free: 34
Создано сайтов: Достаточно много



А как можно получить отображение в market_page_forma.tpl отображения как при добавлении кода @php $Product = new ProductDisp(1); php@ ?

А то там только цена и кнопка выходит
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 4.10.2011, 17:12
Сообщение #16


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



Цитата(Worm @ 4.10.2011, 15:40) *
А как можно получить отображение в market_page_forma.tpl отображения как при добавлении кода @php $Product = new ProductDisp(1); php@ ?

А то там только цена и кнопка выходит


А что еще должен выводить? кол-во?
Перейти в начало страницы
 
+Цитировать сообщение
Worm
сообщение 4.10.2011, 17:34
Сообщение #17


Активный участник
***

Группа: Модератор
Сообщений: 2675
Регистрация: 30.12.2009
Из: Самара
Пользователь №: 213
Версия CMS Free: 34
Создано сайтов: Достаточно много



Например название и фотку, как тут апгрейдили
Перейти в начало страницы
 
+Цитировать сообщение
Dennion
сообщение 4.10.2011, 17:43
Сообщение #18


Администратор
***

Группа: Главные администраторы
Сообщений: 5905
Регистрация: 20.8.2009
Из: Москва
Пользователь №: 1
Версия CMS Free: 3.3



phpshop/modules/cart/core/market.core.php

Код
    function index() {
        
        if(!$GLOBALS['LoadItems']['modules']['cart']['enabled_market']) return $this->setError404();

        $link=PHPShopSecurity::TotalClean($this->PHPShopNav->getName(),2);
        $link=str_replace("market","",$link);

        // Выборка данных
        $row=parent::getFullInfoItem(array('*'),array('link'=>"='$link'"));

        // Прикрываем страницу от дубля
        if($row['category'] == 2000)  return $this->setError404();
        elseif(empty($row['id'])) return $this->setError404();

        // Определяем переменые
        $this->set('pageContent',Parser($row['content']));
        $this->set('pageTitle',$row['name']);
        $this->set('pageLink',$row['link']);

        $this->set('marketPrice',$GLOBALS['_PRODUCT'][$row['link']]['price']);
        $this->set('marketValuta',$GLOBALS['LoadItems']['modules']['cart']['valuta']);


        ...  сюда добавить свою, типа $this->set('marketImage',$GLOBALS['_PRODUCT'][$row['link']]['image']);


$GLOBALS['_PRODUCT'] задается в phpshop/modules/market/inc/cart.inc.php

Код
// Чтение данных из CSV товаров
PHPShopObj::loadClass("readcsv");
class ProductCsv extends PHPShopReadCsv {
    var $CsvToArray;

    function ProductCsv($file) {
        $this->CsvContent = parent::readFile($file);
        parent::PHPShopReadCsv();
    }

    function CreatBase() {
        $CsvToArray = $this->CsvToArray;
        foreach ($CsvToArray as $items) {
            $PRODUCT[$items[0]]['art']=$items[1];
            $PRODUCT[$items[0]]['name']=$items[2];
            $PRODUCT[$items[0]]['price']=$items[3];
            $PRODUCT[$items[0]]['catalog']=trim($items[4]);
        }
        return $PRODUCT;
    }
}
Перейти в начало страницы
 
+Цитировать сообщение
Worm
сообщение 4.10.2011, 19:40
Сообщение #19


Активный участник
***

Группа: Модератор
Сообщений: 2675
Регистрация: 30.12.2009
Из: Самара
Пользователь №: 213
Версия CMS Free: 34
Создано сайтов: Достаточно много



Какието нетакие дни у меня ничего не получается....всё вроде вот также делал....щас всё получилось!

Спасибо большое!
Перейти в начало страницы
 
+Цитировать сообщение
Worm
сообщение 4.10.2011, 21:29
Сообщение #20


Активный участник
***

Группа: Модератор
Сообщений: 2675
Регистрация: 30.12.2009
Из: Самара
Пользователь №: 213
Версия CMS Free: 34
Создано сайтов: Достаточно много



Нашел баг
Версии:
Cart 2.6 (включено "Вывод страниц в столбик с кнопкой заказа")
Движок 34207
SeoUrl 1.8

Тогда mainMenuPage выводится два раза.

но это не кретично ((=
Перейти в начало страницы
 
+Цитировать сообщение

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 19.6.2019, 9:57