Вход • Регистрация

Валюты. Как обновить цены.

  • 03 июля 2016 г.
  • Если обновить напрямую в MySQL таблицу *shop_currency значение курса валют exchange_rate то цены автоматически на сайте не пересчитаются. Для этого нужно зайти в админку, выбрать курс и нажать сохранить. Как автоматически дрёнуть CMS чтоб цены пересчитались?
    Заранее благодарю за помощь!
    • 04 июля 2016 г.
    • При чем тут таблица курса валют и цены на товары? Курсы в одной таблице, цены в другой. http://www.diafan.ru/dokument/full-manual/developers/architecture/db/#shop_price
      Хотите обновить цены, работайте с таблицей shop_price
      Вы же не думаете, что для каждого посетителя DIAFAN.CMS считает цены на все товары "нагорячую", каждый раз умножая курс на валюту? Тогда бы цмска падала при 10 посетителях и ни о каких http://diafan.ru/highload/ речи бы не шло
  • 04 июля 2016 г.
  • Т.е. я верно понимаю, что при нажатии кнопки "Сохранить" в админке, где указывается текущий курс, происходит пересчёт цен на все товары средствами CMS?
    Из этого я и задаю вопрос, какими средствами диафана сделать пересчёт цен, для того чтобы не писать собственный скрипт пересчёта цен.
    Грубо говоря, хочу доделать скрипт, засунуть его в CRON и дёргать раз в сутки для обновления курса в табличке shop_currency. Затем дёргать CMS для того чтоб она пересчитала цены на товары.
    • 04 июля 2016 г.
    • Да, конечно. Мы писали на Хабре даже https://habrahabr.ru/company/diafan/blog/300930/
      Цитата
      7. Минимизируйте динамическое получение данных

      Лучше один раз подождать администратору сайта, чем ждать будет каждый пользователь.

      Например, в Diafan.CMS есть гибкая система скидок, когда у одного товара может быть несколько цен, каждая с установленной скидкой, еще и в разных валютах. Мы не высчитываем новые цены на сайте для каждого посетителя сайта. Мы делаем это при установке скидки в административной части сайта, считаем все различные варианты цены для выбранных товаров и собираем их в отдельную таблицу shop_price с признаком price_id. Исходная цена на товар определяется как id=price_id. Если id<>price_id, то это уже вариация цены либо со скидкой либо в основной валюте сайта. И в этой таблице сразу указывается для кого эта цена (если она установлена для какой-то конкретной группы пользователей).

      Да, если товаров много, при добавлении или изменении скидки администратор будет ждать, глядя на крутящееся колесико. Зато посетителям сайта ждать не придется, ведь при выводе на сайте, а также при поиске, сортировке и прочих ёмких операциях система просто из всех доступных цен из одной таблицы по одному price_id выбирает самую маленькую и всё.

      Что скидки, что валюты - принцип один: администратор ждет, все остальные не ждут.

      Цитата
      Из этого я и задаю вопрос, какими средствами диафана сделать пересчёт цен, для того чтобы не писать собственный скрипт пересчёта цен.

      Ну какими, обычными. UPDATE в базе
      modules/shop/inc/shop.inc.price.php
      Код
      * Рассчитывает все возможные вариации цен и записывает их в базу данных
      public function calc()

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум