Перейти к содержимому


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


Замена штатного прайслиста


Сообщений в теме: 17

#1 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 11 января 2014 - 20:38

Модуль, заменяющий штатный прайслист.
=====================================

Спонсор модуля: Mixaskin

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

Как выглядит можно посмотреть на http://cpu.badisoft.ru/price.html

Установка:
==========

1. переписываем файлы

highslide.css -> data\[шаблон]\
highslide.js -> data\[шаблон]\
but_down.gif -> data\[шаблон]\
but_up.gif -> data\[шаблон]\

pricelist.php -> core\includes\
addon.php -> core\includes\admin\

pricelist.tpl.html -> core\tpl\user\[шаблон]\

logo.png -> data\images\
discount.txt -> data\images\

2. В head.tpl.html вписываем линк jquery, если он еще не вписан

{* BEGIN ExtraPricelist *}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
{* END ExtraPricelist *}


3. в файле catalog_extra.php

вместо строки

$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );


вставляем

# BEGIN ExtraPricelist
#$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );
$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort", "sort_price" ) );
# END ExtraPricelist



4. в файле catalog_extra.tpl.html

4.1 после строки

<td align="right">{$smarty.const.ADMIN_SORT_ORDER}</td>

вставляем

{* BEGIN ExtraPricelist *}
<td align="right">ПрайсЛист</td>
{* END ExtraPricelist *}

4.2 после строки

<td align="right"><input name="extra_sort_{$options[i][0]}" type=text class="textp" value="{$options[i][2]}" size="4"></td>

вставляем

{* BEGIN ExtraPricelist *}
<td align="right"><input name="sort_price_{$options[i][0]}" type=text class="textp" value="{$options[i].sort_price}" size="4"></td>
{* END ExtraPricelist *}


5. в файле option_functions.php

5.1 в функции optGetOptions ищем строку

$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps


и заменяем ее на

# BEGIN ExtraFilter
#$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps
$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants, ps.sort_price FROM '.PRODUCT_OPTIONS_TABLE.' as ps


5.2 в функции optUpdateOptions ищем строку

"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);


и заменяем ее на

# BEGIN ExtraFilter
#"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);
"', sort_order=".(int)$val["extra_sort"].
", sort_price=".(int)$val["sort_price"].
" where optionID=".(int)$key);
# END ExtraFilter

Прикрепленные файлы


http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 NEViL

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 42 сообщений
Репутация: 4
Начинающий

Отправлено 14 января 2014 - 11:13

Вы забыли в установке написать про подключение highslide.css и highslide.js... Лично у меня изначально не было...

И что-то у меня не получилось поставить, все строки серые, будто в них нет товара.... Вечером дома попробую !

На тестовом сайте смотрится прикольно !

#3 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 14 января 2014 - 11:20

 NEViL сказал:

Вы забыли в установке написать про подключение highslide.css и highslide.js... Лично у меня из изначально не было...
Т.е. читать инструкцию Вы начали с пункта (2), а в pricelist.tpl.html, естественно, даже и не заглядывали? :)

 NEViL сказал:

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

PS. Точно можно сказать только то, что после отладки на внутреннем тестовом сайте модуль был сначала по инструкции установлен на cpu.badisoft.ru, а затем точно так же по инструкции клиенту (с весьма не дефолтовым шаблоном). Без малейших переделок в части показа прайслиста. Там есть тараканы с выводом в эксель, и не один, но вот с показом прайслиста не припомню.

Тараканы с экселем:
1. На небольшой прайс хватит (возможно) и обычной доступной памяти. Для более-менее большого прайса надо кэширование.
Кэширование может быть разным, PHPexcel позволяет несколько вариантов (см. документацию). Три самых интересных прописаны в модуле, два закомментированы, оставлено кэширование во временный файл. Но, к примеру, у клиента удалось закэшировать только в SQLite3, остальные способы были недоступны.

2. формат Excel2007 упаковывается, для этого по умолчанию используется ziplib, которые до какой-то версии PHP (5.3.*, чтоли, см. документацию) имеет ошибку. Вместо него можно использовать встроенную pclzip. Либо просто отказаться от Excel2007 и выводить в формате Excel5, не требующем упаковки. Все это тоже есть, но закомментировано.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 NEViL

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 42 сообщений
Репутация: 4
Начинающий

Отправлено 14 января 2014 - 11:22

 badisoft (14 января 2014 - 11:20) писал:

 NEViL сказал:

Вы забыли в установке написать про подключение highslide.css и highslide.js... Лично у меня из изначально не было...
Т.е. читать инструкцию Вы начали с пункта (2), а в pricelist.tpl.html, естественно, даже и не заглядывали? :)

Мои извинения ;)

#5 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 59 сообщений
Репутация: 0
Начинающий

Отправлено 21 января 2015 - 03:17

Цитата


Тараканы с экселем:
1. На небольшой прайс хватит (возможно) и обычной доступной памяти. Для более-менее большого прайса надо кэширование.
Кэширование может быть разным, PHPexcel позволяет несколько вариантов (см. документацию). Три самых интересных прописаны в модуле, два закомментированы, оставлено кэширование во временный файл. Но, к примеру, у клиента удалось закэшировать только в SQLite3, остальные способы были недоступны.

2. формат Excel2007 упаковывается, для этого по умолчанию используется ziplib, которые до какой-то версии PHP (5.3.*, чтоли, см. документацию) имеет ошибку. Вместо него можно использовать встроенную pclzip. Либо просто отказаться от Excel2007 и выводить в формате Excel5, не требующем упаковки. Все это тоже есть, но закомментировано.
У меня прайс никаким из приведенных выше примеров не дает скачивать. Я так понимаю не формирует его..
И еще. Так же как на Вашем тестовом сайте , две категории не активны. хотя товар там есть.
И еще вопрос: Как добавить дополнительное поле "Характеристика" ?

#6 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 21 января 2015 - 12:48

Цитата

И еще. Так же как на Вашем тестовом сайте , две категории не активны. хотя товар там есть.
Это откуда такой смелый вывод? Эти две категории называются "Тестовая пустая категория", "Тестовая пустая подкатегория" и специально сделаны без товаров, чтобы показать, как выглядят в прайсе категории без товаров.

Цитата

И еще вопрос: Как добавить дополнительное поле "Характеристика" ?
Надо добавить к отдаваемому из pricelist.php массиву товаров (фотка, код, наименование, ссылкой, цена) еще один элемент массива "Характеристика", а в pricelist.tpl.html добавить на HTML+Smarty колонку "Характеристика", где и выводить этот элемент.
Хотя я не очень понимаю, как можно сделать колонку "Характеристика", если характеристик несколько и у каждой - варианты.

Но я этот модуль забросил, т.к. написал AJAX-овый прайс, который куда интереснее. Не грузит сразу все стопицот товаров прайса, а только для выбранной категории, которые, как в Экселе, раскрываются-закрываются плюсиком/минусом слева от колонок.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 59 сообщений
Репутация: 0
Начинающий

Отправлено 21 января 2015 - 14:08

Цитата

Это откуда такой смелый вывод? Эти две категории называются "Тестовая пустая категория", "Тестовая пустая подкатегория" и специально сделаны без товаров, чтобы показать, как выглядят в прайсе категории без товаров.
Ну, что сказать,у меня получилось так. Допускаю ,что где то сам наколбасил. перед этим пробовал "прайс с категориями", хотя там не так сложно было. вроде все на место вернул..Ну да ладно с этим,это не главное..
Я так и не понял , почему прайс не формируется для загрузки?

#8 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 21 января 2015 - 15:11

 straniks сказал:

Я так и не понял , почему прайс не формируется для загрузки?
Посмотреть на Ваш error.log (файл, где указаны ошибки исполнения PHP-кода) может только хостер и, возможно, Вы, но никак не читатели форума.

Если после нажатия на кнопку "Скачать прайс в формате..." белый экран, то это ошибка исполнения и сведения о ней надо искать в error.log.
Ошибок там бывает достаточно много и разные. У кого-то памяти не хватает (один вариант кэша), у кого-то sqllite на хостинге не установлен (второй вариант кэша). Потому там три варианта кэша в коде и приведено (два из них закомментированы), что на разных хостинга приходится выкручиваться по разному. Ну и другие ошибки, связанные с индивидуальностями хостинга. Я несколько раз делал генерацию прайса в XLS-формате разным клиентам и практически всегда приходилось подбирать конфигурацию кэширования и вывода файла.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 straniks

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 59 сообщений
Репутация: 0
Начинающий

Отправлено 21 января 2015 - 16:56


		$objWriter = PHPExcel_IOFactory::createWriter($pExcel, 'Excel2007');
#		PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
		$objWriter->save('data/files/price.xlsx');
		Redirect('data/files/price.xlsx');
#		$objWriter = PHPExcel_IOFactory::createWriter($pExcel, 'Excel5');
#		$objWriter->save('data/files/price.xls');
#		Redirect('data/files/price.xls');

Если мы про этот код говорим.. Я поочередно включал. Не выводит.Посмотреть логи нет возможности, это да..
Скорее всего попробую установить AJAX-овый прайс. Как я понял, он под новую версию? У меня возник еще один вопрос: скаченный прайс имеет стандартный вид или как как на сайте, с картинками?

#10 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 21 января 2015 - 17:24

Цитата

Посмотреть логи нет возможности, это да..
Ну так обратитесь к хостеру, чтобы эта возможность появилась. Фигли гадать-то на кофейной гуще при наличии специального инструмента показа ошибок?

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

Библиотеку PHPExcel без проблем найдете Яндексом.

Файл PHPExcel.php в корень сайта,
каталог PHPExcel/ туда же,
каталог Documentation (документация) прочитать хотя бы один раз.

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

Цитата

Если мы про этот код говорим..
Нет. Совсем не про этот. О чем я чуть выше и написал.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 Eshor

    Новичок

  • Assistent vsupport.ru
  • Pip
  • 5 сообщений
Репутация: 0
Начинающий

Отправлено 15 ноября 2015 - 00:30

Ну что поставил я вашу замену прайса. И библиотеку поставил.

Отображает все категории пустыми буд то в них нет товаров, аналогично и прайс скачиваю в них нет товаров.

Скажите перепроверь ты что то не так сделал. Проверил все четко 1 в 1 по пунктам. Полагаю что не рабочее

#12 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 15 ноября 2015 - 09:10

 Eshor сказал:

Полагаю что не рабочее
Ну так удалите и дело с концом.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#13 hedhedhed

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 96 сообщений
Репутация: 4
Начинающий

Отправлено 15 ноября 2015 - 14:35

 Eshor (15 ноября 2015 - 00:30) писал:

Скажите перепроверь ты что то не так сделал. Проверил все четко 1 в 1 по пунктам. Полагаю что не рабочее

 badisoft (15 ноября 2015 - 09:10) писал:

Ну так удалите и дело с концом.

:D

З.Ы. если у 20 человек (почти за год) скрипт не вызвал особых вопросов, то он походу все-таки рабочий, ИМХО. ;)

#14 NLO56

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 91 сообщений
Репутация: 5
Начинающий
  • ГородСанкт-Петербург

Отправлено 05 декабря 2015 - 02:03

Все нормально становится и работает.
Только при скачивании прайс какой то "кривой"
и для чего строки типа: ЕЩЕ КАКАЯ-ТО СТРОКА, ИНФО-2, Первая строка дополнительной информации
шапка прайса: Прикрепленный файл  2015-12-05_024520.jpg   117,27К   6 Количество загрузок:
конец прайсаПрикрепленный файл  2015-12-05_024619.jpg   139,08К   6 Количество загрузок:

Когда мало товаров страница "Прайс лист" открывается
На рабочем ставлю, не грузит страницу в виду большого количества товаров. Как быть то?

#15 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 05 декабря 2015 - 02:21

Цитата

Только при скачивании прайс какой то "кривой"
Возможно, криво преобразуется в 2010-й Эксель.

Цитата

и для чего строки типа: ЕЩЕ КАКАЯ-ТО СТРОКА, ИНФО-2,
Для информации. Они жестко задаются в php-файле, насколько я помню.
До выкладывания в общий доступ там была информация заказчика модуля.

Цитата

Первая строка дополнительной информации
Это строки из текстового файла /data/image/discount.php
В этом файле у заказчика была периодически меняющаяся информация о скидках.

Цитата

На рабочем ставлю, не грузит страницу в виду большого количества товаров. Как быть то?
Сжать зубы и жить дальше!

PS. "Прайслист с возможностью выбрать товар и оформить заказ" и "Выгрузка прайслиста в XLS-формате" - две не связанных друг с другом части модуля.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#16 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 05 декабря 2015 - 15:01

 NLO56 сказал:

На рабочем ставлю, не грузит страницу в виду большого количества товаров. Как быть то?
Я сделал урезанный вариант, убрав все лишние (на мой взгляд) навороты.
Убраны:
1. картинка логотипа в шапке прайса
2. лишние строки в шапке прайса
3. характеристики товара
4. подвал прайса, заполняемый из текстового файла

Прикрепленные файлы

  • Прикрепленный файл  pricelist.php   11,17К   16 Количество загрузок:

http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#17 vr-3d

    Продвинутый пользователь

  • Assistent vsupport.ru
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий
  • ГородКраснодар

Отправлено 11 мая 2017 - 13:12

Жаль под 3.1.3 не работает

#18 badisoft

    Продвинутый пользователь

  • VIP
  • 4 986 сообщений
Репутация: 761
Мастер

Отправлено 11 мая 2017 - 16:14

 vr-3d сказал:

Жаль под 3.1.3 не работает
Прайслисту до лампочки версия ShopCMS. Если не работает, то дело вовсе не в том, что 3.1.3.
Думаю, причина в jquery, который изспользуется и в прайслисте, и в штатном в шаблоне от 3.1.3.
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)