Дмитрий

Дмитрий

С нами с 16 декабря 2015; Место в рейтинге пользователей: #47
Дмитрий
23 декабря 2017, 13:39
0
Второй уровень выводится с помощью плейсхолдера [[+wrapper]]
Вот здесь достаточно понятно написано во второй строчке, параметр &tpl
Дмитрий
20 декабря 2017, 12:22
0
(как в Opencart, например)
Вы еще OpenCart полноценным нормальным движком для магазина назовите, ага)
Я описал примерный подход, который позволяет решать эти задачи. И цены в базе, и переключение на любом этапе — сделать не проблема. Зависит от кривизны рук и фантазии.
А miniShop2 на то и минишоп. Нужно что-то добавить? Либо покупаете дополнение, либо делаете сами :)
Дмитрий
20 декабря 2017, 10:28
0
я перед тем, как это написать, проверил. И всё работает. Вы либо неправильно вопрос поставили, либо не проверили.
Дмитрий
20 декабря 2017, 00:24
0
$res = $modx->getObject('msProductData', $resID);
$res->set('user-pole', date('Y-m-d'));
$res->save();
Дмитрий
16 декабря 2017, 17:42
1
0
На самом деле все довольно просто.
1) Любым образом делаете мультиязычность — Localizator, Babel, Lingua.
2) Устанавливаете CurrencyRate
3) Создаете доп.поле (ТВ или поле продукта), где будет хранится цена в другой валюте. Ну, если это подтягивается откуда-то извне. Если нужно просто по факту конвертировать цены из рублей в другую валюту — просто отрабатывает CRCalc. Там можно подстроить, чтобы давал немного выше официального курса, чтобы дешево не продать.
4) Вешаете плагин на событие добавления в корзину, в котором определяете язык магазина и подтягиваете цену.
5) Единственная проблема — с отправкой почты. Но тут можно сделать как в Modstore — отправлять два письма, одно на русском, другое на английском.
У меня так два магазина работают, никто не жаловался :)
Дмитрий
15 декабря 2017, 16:04
0
ну, самый простой вариант — посмотреть, что за ссылка появляется в [[+logout_url]], скопировать ее и вставить такую же ссылку в шапке. Как правило, там что-то вроде ?logout=1 или типа того.
Дмитрий
12 декабря 2017, 20:29
0
Во втором абзаце же указана ссылка на тарифы?
Дмитрий
12 декабря 2017, 18:03
0
Кхм, прикольно. Тогда не понял, как происходит парсинг. То есть при первой загрузки страницы срабатывает сниппет и обращается к сервису, по тому же принципу, что и phpthumbon? Я просто думал, что компонент как-то сам в фоновом режиме парсит все элементы на предмет картиночек и сжимает. Хотя, фигня получается в таком случае…
Дмитрий
12 декабря 2017, 17:27
0
Крутая штука, спасибо!
Только с Fenom и файлами это работать не будет, верно?
Дмитрий
12 декабря 2017, 15:58
0
Спасибо за компонент! Внезапно пригодился и дико выручил. Заказчик в восторге.
От себя хочу поделиться тем, как я привязал компонент к шаблонизатору Fenom.
Нужно было закрыть сайт целиком от посторонних глаз, а значит, закрыть вообще все страницы. Вставлять на каждый шаблон вызов сниппета и подставлять шаблон если авторизовались, или форму с авторизацией, если нет — очень топорное решение, подумал и запилил такой сниппет:
<?php
/** @var array $scriptProperties */
/** @var easyAuth $easyAuth */
if (!$easyAuth = $modx->getService('easyauth', 'easyAuth', $modx->getOption('easyauth_core_path', null, $modx->getOption('core_path') . 'components/easyauth/') . 'model/easyauth/', $scriptProperties)) {
    return 'Could not load easyAuth class!';
}
$easyAuth->loadJsCss();

if ($easyAuth->authIsLoggedIn()||$modx->user->isAuthenticated('mgr')) {
    $res = true;
} else {
    $res = false;
}

return $res;
А в шаблоне base, от которого наследуются все остальные, прописал следующее:
{var $logged = $_modx->runSnippet('!isLoggedInBoolean')}
        {if !$logged?}
            {include 'tpl.easyAuth.authForm'}
        {else}
            {block 'content'}
//тут контент сайта.
	{/block}
{/if}
Получилось, вроде бы, очень даже ничего.
Дмитрий
04 декабря 2017, 15:48
0
hc.ru кстати, так себе хостинг. Пришлось от него съехать спустя год мучительной работы. Техподдержка — мёртвая, неделями на вопросы отвечают. Цены — можно найти дешевле. Сайты работают медленно. Бесплатный SSL не поставить, только то, что они предлагают, PLESK весь урезанный, никаких тебе бесплатных ништяков. Как они вообще живы, я не понимаю. Лучше зарегайтесь в Бегет и попросите им перенести вам сайт. Сэкономите деньги на хостинге, на SSL, на выделенном IP (который к платным SSL всегда как необходимая опция идет). Ну и сайт будет работать быстрее, и поддержка всегда поможет что-нибудь настроить.
Дмитрий
30 ноября 2017, 18:37
0
Ох, красота. Ждем полный функционал. Мне оооочень этого не хватает
Дмитрий
30 ноября 2017, 18:35
+2
Тоже внесу небольшой пока что вклад в развитие этой идеи. Надеюсь, все получится!
Дмитрий
26 ноября 2017, 19:12
0
Вообще, по-хорошему, так делать нельзя. Очень нельзя. Тупо переносить данные посредством SQL — чревато как раз такими ошибками, потери целостности данных и всего такого прочего.
Нужно было сделать примерно так:
1) Написать SQL выборку пользователей из Evo.
2) Использовать ее в скрипте, в котором при переборе каждой строчки из таблицы через MODX API создавался бы новый пользователь в Revo.
3) Может возникнуть проблема с сохранением паролей, но в таком случае пришлось бы просто выслать новые пароли всем пользователям. Это тоже не большая проблема.
Дмитрий
16 ноября 2017, 22:57
0
Самое правильное решение, на мой взгляд — использовать вместо getImageList встроенные в Fenom функции по парсингу JSON и перебор с помощью шаблонизатора. Экономия на ресурсах, да и выглядит симпатично. Отказался от getImageList с появлением этой возможности и не нарадуюсь. Небольшой пример:
{if $_modx->resource.freeBonus?}
                    <div class="calculator-block">
                        <h3 class="calculator-block__heading">
                            <i class="calculator-block__ico calculator-block__ico_calc" style="background-image:url('images/ico_gift.png')"></i> Выберите бесплатные бонусы к услуге
                        </h3>
                        <div class="calculator-block__inner">
                            <form action="" class="calculator-bonus-form">
                                {var $bonuses = $_modx->resource.freeBonus|fromJSON}
                                {foreach $bonuses as $bonus}
                                <p class="calculator-bonus-form-item">
                                    <input type="checkbox" class="calculator-bonus-form-checkbox" id="bonus-{$bonus.MIGX_id}" name="bonus-{$bonus['MIGX_id']}" value="{$bonus.bonus}">
                                    <label class="calculator-bonus-form-item-text" for="bonus-{$bonus['MIGX_id']}">{$bonus.bonus}</label>
                                </p>
                                {/foreach}
                            </form>
                        </div>
                    </div>
                    {/if}
Единственный минус — отсутствие фильтрации по параметру. Однако, если расковырять сам сниппет getImageList и вычленить из него кусок кода, отвечающий за сортировку, то можно и сортировку прикрутить отдельным сниппетом и выводить в чанках через $pdo->getChunk(). Вообще красота получается. Можно в файловых элементах использовать. В общем, если покопаться в этом направлении, много прикольного можно найти.
Дмитрий
12 ноября 2017, 16:16
+1
Почитайте про шаблонизатор Fenom и наследование шаблонов. Наверняка это то, что нужно.
Дмитрий
09 ноября 2017, 20:47
+1
Вообще реально, чтобы они сразу появлялись без перезагрузки?
Вообще, реально.
Можно сделать примерно так:
Написать такую функцию в JS-файле
initPopupCart = function(){
        $.ajax({
            type: "POST",
            url: '/ajax.html',
            success:  function(data) {
                if (data){
                    $('#popup-cart').html(data);
                }else{
                    miniShop2.Message.error('Что-то пошло не так, попробуйте позже!');
                }
            }
        });
А в админке создать страницу с пустым шаблоном, куда поместить вызовы сниппетов. Главное, чтобы URL у страницы совпадал с тем, к которому скрипт обращается.
[[!msCart]] 
        [[!msOrder]]
Решение не самое элегантное, но зато очень быстрое)))
Дмитрий
07 ноября 2017, 17:02
+1
Реально. Только придется чуток побольше написать.