06 марта 2014, 16:34 Да, вот тоже подумываю уйти на 30$ или 40$. Видимо так и сделаю. Вопросы / К вопросу производительности ВАШЕГО хостинга 23 0
06 марта 2014, 16:23 Василий, а тариф у тебя какой? за 40$? Вопросы / К вопросу производительности ВАШЕГО хостинга 23 0
04 марта 2014, 14:42 Хм… у меня возможно старая версия минишоп. Тогда я бы сделал так: Через этот механизм bezumkin.ru/modx/minishop2/classes/910/ добавил колонку к товару price_rur. И раз в день пересчитывал бы ее. Т.е. фактически оставил бы пункты 3,4,5 и из 4 убрал бы сохранение в настройки курса. Т.е. у нас 2 поля для цены у товара. Одна для USD, заполняется менеджером, другая для RUR, пересчитывается полностью автоматически. Готовые решения / Цена в рублях по курсу доллара в miniShop2 57 0
04 марта 2014, 11:57 Не знаю… в гитхабе в исходниках он есть: github.com/bezumkin/miniShop2/search?q=ms2_price_snippet&ref=cmdform Готовые решения / Цена в рублях по курсу доллара в miniShop2 57 0
04 марта 2014, 10:29 А, ну и еще у меня у товара добавлена колонка price_rur, в ней я храню цену товара в рублях, вот этот код из сниппета updateRates пересчитывает эту цену: // обновляем колонку price_rur $sql1 = "UPDATE ".$modx->getTableName('msProductData')." SET `price_rur` = ".str_replace(',','.',$euro)." * `price` WHERE `price` > 0"; $sql2 = "UPDATE ".$modx->getTableName('msProductData')." SET `price_rur` = ".str_replace(',','.',$usd)." * `old_price` WHERE `old_price` > 0"; $q = $modx->prepare($sql1); $q->execute(); $q = $modx->prepare($sql2); $q->execute(); Готовые решения / Цена в рублях по курсу доллара в miniShop2 57 0
04 марта 2014, 10:26 Ох… 1. Система-Настройки системы: ключ ms2_price_snippet, указываем значение modifyPrice 2. Делаем сниппет modifyPrice: ну у меня тут несколько другая ситуация, цены на товары вбиты в поля price — в евро, в old_price — в долларах. <?php $priceEURO = $product->get('price'); $priceUSD = $product->get('old_price'); $rateEURO = $modx->getOption('rate_euro'); $rateUSD = $modx->getOption('rate_usd'); if($priceEURO > 0){ return $priceEURO * $rateEURO; } if($priceUSD > 0){ return $priceUSD * $rateUSD; } return 0;3. Создаем ресурс, публикуем его, скрываем из меню, добавляем ему в контент: [[!updateRates]]и этот ресурс на хостинге вешаем по его url на кронтаб раз в сутки. 4. Создаем сниппет updateRates: require_once($modx->getOption('assets_path').'components/cbrf/ExchangeRatesCBRF.class.php'); $rates = new ExchangeRatesCBRF(); $usd = $rates->GetRate("USD"); $euro = $rates->GetRate("EUR"); $setting = $modx->getObject('modSystemSetting', 'rate_euro'); $setting->set('value', $euro); $setting->save(); $setting = $modx->getObject('modSystemSetting', 'rate_usd'); $setting->set('value', $usd); $setting->save(); // обновляем колонку price_rur $sql1 = "UPDATE ".$modx->getTableName('msProductData')." SET `price_rur` = ".str_replace(',','.',$euro)." * `price` WHERE `price` > 0"; $sql2 = "UPDATE ".$modx->getTableName('msProductData')." SET `price_rur` = ".str_replace(',','.',$usd)." * `old_price` WHERE `old_price` > 0"; $q = $modx->prepare($sql1); $q->execute(); $q = $modx->prepare($sql2); $q->execute(); //$cacheRefreshOptions = array( 'system_settings' => array() ); //$modx->cacheManager->refresh($cacheRefreshOptions); $modx->cacheManager->refresh(); echo 'Курс USD: '.$usd; echo '<br />'; echo 'Курс EURO: '.$euro;Я в этом сниппете еще кеш чищу в конце всего сайта, мне так нужно. 5. Создаем файл components/cbrf/ExchangeRatesCBRF.class.php: <?php class ExchangeRatesCBRF { var $rates; function __construct($date = null) //В PHP версии ниже 5 это метод объекта следует переименовать в ExchangeRatesCBRF { $client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL"); if (!isset($date)) $date = date("Y-m-d"); $curs = $client->GetCursOnDate(array("On_date" => $date)); $this->rates = new SimpleXMLElement($curs->GetCursOnDateResult->any); } function GetRate ($code) { //Этот метод получает в качестве параметра цифровой или буквенный код валюты и возвращает ее курс $code1 = (int)$code; if ($code1!=0) { $result = $this->rates->xpath('ValuteData/ValuteCursOnDate/Vcode[.='.$code.']/parent::*'); } else { $result = $this->rates->xpath('ValuteData/ValuteCursOnDate/VchCode[.="'.$code.'"]/parent::*'); } if (!$result) { return false; } else { $vc = (float)$result[0]->Vcurs; $vn = (int)$result[0]->Vnom; return ($vc/$vn); } } }6. Создаем 2 системные настройки: rate_euro rate_usd 7. Открываем первый раз ресурс с шага 3 и проверяем, что он сработал и в настройках курсы обновились. Это мое решение с одного из сайтов, успешно работающее. Готовые решения / Цена в рублях по курсу доллара в miniShop2 57 0 2
03 марта 2014, 16:33 1. Создаете сниппет, в котором получаете курс валют на сегодня и сохраняете его в системные настройки MODx. 2. Этот сниппет вызываете по crontab раз в сутки, ведь курс меняется раз в сутки 3. Выводите цену с учетом этого курса. В miniShop2 есть специальная настройка в параметрах, позволяющая указать свой сниппет для обработки товара (точно не помню, но она есть, посмотрите). В этом сниппете цену и считаете с учетом курса. Готовые решения / Цена в рублях по курсу доллара в miniShop2 57 0
20 декабря 2013, 10:08 Может я логику не очень хорошо описал, попробую еще раз: minishop2-combo-options полностью устраивает и делает то, что надо. Но многие товары переносятся с каталогов и там возможные значения 'этого поля даны строкой с разделителем (запятые или слеш), их много и руками по одному вставлять неудобно. Нужно импортировать их в это поле из строки… или вариант 2: если мы в плагине на OnDocFormSave меняем поле textfield, то после сохранения оно в админке обновляется, а вот minishop2-combo-options не обновляется, подозреваю, что просто это не дописано =) MODx в ответе на POST запрос после сохранения документа новое значение поля присылает, а minishop2-combo-options на это не реагирует. Вопросы / Усовершенствование minishop2-combo-options 3 0
18 декабря 2013, 10:41 Привет, а вы — это кто? Объявления о работе / Вакансия разработчика MODX Revolution 4 0
20 августа 2013, 11:33 Я в целом согласен, что товар — это конечный элемент. Но уже на втором сайте получается так, что minishop используется не для магазина, а как структурированный каталог всевозможных элементов с удобной админкой. И вот получается так, что хорошо бы сделать вложенные ресурсы у товара :) Буду пробовать. Спасибо. Вопросы / miniShop2 возможно создать дочерний ресурс Товару? 6 0
08 августа 2013, 16:00 см здесь: github.com/BobRay/QuickEmail/blob/master/core/components/quickemail/snippets/quickemail.snippet.php#L130 Вопросы / Почтовые уведомления в Tickets, решение неотправки 7 0
08 августа 2013, 15:59 Ну в общем у Безумкина было имя сайта. Письма на новом хостинге не шли. Я посмотрел QuickEmail, а там — email отправителя. Поменял в коде тикест. О-па и письма пошли. Вопросы / Почтовые уведомления в Tickets, решение неотправки 7 0
08 августа 2013, 15:16 По уведомлениям посмотрите: modx.pro/help/1609/ Вопросы / Вопрос по Tickets 11 0
25 июля 2013, 16:52 Василий, ты делаешь тикетс под безумкин ру, и он отвечает твоим требованиям. А я использую тикетс на совсем других сайтах, и он не отвечает моим требованиям. Мне всегда приходилось менять чанки/скрипты/стили. Ну и с каждой новой версии всегда приходилось смотреть, что нового. Поэтому если я вижу, что вышла новая версия, то обновляюсь только тогда, когда есть 2-3 часика свободного времени в запасе =) Вопросы / Tickets comments. Дополнительное поле. 17 0
25 июля 2013, 15:52 Я 2 или 3 сайта делал с комментариями тикетс, и хочу сказать, что после каждого обновления были проблемы на уровне полной несовместимости, т.к. компонент усиленно развивается, а я в любом случае его чуть модифицировал под свои сайты (скрипты, стили). Вопросы / Tickets comments. Дополнительное поле. 17 0
25 июля 2013, 09:56 Я совсем недавно добавлял поле. Скачиваешь исходники, смотришь все места, где фигурируют уже имеющиеся поля и по аналогии добавляешь свое. В целом занимает 10 минут. Вопросы / Tickets comments. Дополнительное поле. 17 0
04 июля 2013, 14:41 Спасибо! В целом я уже решил вопрос. Я отнаследовался от msOrderHandler, скопировал в мой класс метод submit, убрал в нем из обязательных полей email, и перенес модернизированную функцию getCustomerId в него же. НУ а магазины бывают разные, товары специфические. У меня например 1 пользователь с вероятностью 99,99% совершит только 1 покупку. Вопросы / Как сделать необязательным поле email в miniShop2? 23 0
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
Тогда я бы сделал так:
Через этот механизм bezumkin.ru/modx/minishop2/classes/910/ добавил колонку к товару price_rur.
И раз в день пересчитывал бы ее. Т.е. фактически оставил бы пункты 3,4,5 и из 4 убрал бы сохранение в настройки курса.
Т.е. у нас 2 поля для цены у товара. Одна для USD, заполняется менеджером, другая для RUR, пересчитывается полностью автоматически.
в гитхабе в исходниках он есть: github.com/bezumkin/miniShop2/search?q=ms2_price_snippet&ref=cmdform
price_rur, в ней я храню цену товара в рублях,
вот этот код из сниппета updateRates пересчитывает эту цену:
1. Система-Настройки системы: ключ ms2_price_snippet, указываем значение modifyPrice
2. Делаем сниппет modifyPrice:
ну у меня тут несколько другая ситуация, цены на товары вбиты в поля price — в евро, в old_price — в долларах.
3. Создаем ресурс, публикуем его, скрываем из меню, добавляем ему в контент:
и этот ресурс на хостинге вешаем по его url на кронтаб раз в сутки.
4. Создаем сниппет updateRates:
Я в этом сниппете еще кеш чищу в конце всего сайта, мне так нужно.
5. Создаем файл components/cbrf/ExchangeRatesCBRF.class.php:
6. Создаем 2 системные настройки:
rate_euro
rate_usd
7. Открываем первый раз ресурс с шага 3 и проверяем, что он сработал и в настройках курсы обновились.
Это мое решение с одного из сайтов, успешно работающее.
2. Этот сниппет вызываете по crontab раз в сутки, ведь курс меняется раз в сутки
3. Выводите цену с учетом этого курса. В miniShop2 есть специальная настройка в параметрах, позволяющая указать свой сниппет для обработки товара (точно не помню, но она есть, посмотрите). В этом сниппете цену и считаете с учетом курса.
minishop2-combo-options полностью устраивает и делает то, что надо.
Но многие товары переносятся с каталогов и там возможные значения 'этого поля даны строкой с разделителем (запятые или слеш), их много и руками по одному вставлять неудобно. Нужно импортировать их в это поле из строки…
или вариант 2:
если мы в плагине на OnDocFormSave меняем поле textfield, то после сохранения оно в админке обновляется, а вот minishop2-combo-options не обновляется, подозреваю, что просто это не дописано =) MODx в ответе на POST запрос после сохранения документа новое значение поля присылает, а minishop2-combo-options на это не реагирует.
Я посмотрел QuickEmail, а там — email отправителя. Поменял в коде тикест. О-па и письма пошли.
Скачиваешь исходники, смотришь все места, где фигурируют уже имеющиеся поля и по аналогии добавляешь свое.
В целом занимает 10 минут.
В целом я уже решил вопрос. Я отнаследовался от msOrderHandler, скопировал в мой класс метод submit, убрал в нем из обязательных полей email, и перенес модернизированную функцию getCustomerId в него же.
НУ а магазины бывают разные, товары специфические. У меня например 1 пользователь с вероятностью 99,99% совершит только 1 покупку.