Игорь Терентьев

Игорь Терентьев

С нами с 29 ноября 2013; Место в рейтинге пользователей: #82
Игорь Терентьев
20 июля 2017, 00:33
0
Примерно так можно (на примере способов оплаты):

{foreach $payments as $payment}
    <label class="payment input-parent">
        <input type="radio" name="payment" value="{$payment.id}" id="payment_{$payment.id}" {$payment.id == $order.payment ? 'checked' : ''}>
        {set $paymentname = 'po_pay_' ~ $payment.name | translit}
        {$paymentname | lexicon}
        {if $payment.description?}
            {set $paymentdescr = 'po_pay_descr_' ~ $payment.description | translit}
            <small>
                {$paymentdescr | lexicon}
            </small>
        {/if}
    </label>
{/foreach}

translit — сниппет транслитерации.
Игорь Терентьев
15 июля 2017, 13:50
1
0
Может кому пригодится:
<?php
$local = $modx->newObject('localizatorContent');
$local->set('key', 'en');
$local->set('resource_id',35);
$local->set('pagetitle','TEST');
$local->set('content','TEST CONTENT');
$local->set('ative',1);
$local->save();
Доступные поля можно посмотреть в БД
Игорь Терентьев
15 июля 2017, 13:30
0
Может есть у кого пример кода, как перенести контент ресурсов в определенную языковую версию.
Или как через API создать перевод.
Игорь Терентьев
11 июля 2017, 22:31
0
Методом тыка все-таки нашел нужное событие:)
Вот такой плагин получился (возможно что-то лишнее):
<?php
$eventName = $modx->event->name;

switch($eventName) {
    //case 'OnWebPageInit':
        //if ($modx->context->get('key') == 'mgr') {return;}
        //$modx->lexicon->load($modx->cultureKey . ':minishop2:default');
        //break;
    case 'OnParseDocument':
        if ($modx->context->get('key') == 'mgr') {return;}
        $lang = $_COOKIE['lang'];
        if(!$lang) return;
        $modx->setOption('cultureKey', $lang);
        $modx->lexicon->load($lang . ':minishop2:default');
        break;
    case 'OnLoadWebDocument':
        if ($modx->context->get('key') == 'mgr') {return;}
        $value = $modx->getOption('cultureKey');
        setcookie("lang", $value, time() + (86400 * 365));
        break;
}

return;
Игорь Терентьев
11 июля 2017, 21:43
0
У кого-нибудь получилось сделать чтобы при ajax-пагинации или при фильтрации через mFilter2 сохранялся текущий язык?
Этот коммент видел, но у меня не получилось сделать modx.pro/components/12012-localizator-multilingual-seo-translation/#comment-82299
Игорь Терентьев
10 июля 2017, 22:39
0
Нужно вызвать сниппет не кэшируемым [[!pdoSitemap]]
Игорь Терентьев
09 июля 2017, 20:57
0
Я через MIGX в MIGX сделал. Первый уровень — выбор языка. Список языков подтягивается из компонента.
prntscr.com/ftjy5v
prntscr.com/ftjxlz
Игорь Терентьев
09 июля 2017, 20:53
0
Можно через настройку форм скрывать ненужные поля www.youtube.com/watch?v=G7N-Ku5GpsI&t=1s
Игорь Терентьев
06 июля 2017, 11:06
+3
$child = $modx->getChildIds(49, 10, array('context' => 'web')); //49 - id, 10 - вложенность
$collection = $modx->getCollection('modResource', array(
    'id:IN' => $child,
    'template' => 8,
    // 'deleted' => false,
));
Игорь Терентьев
05 июля 2017, 18:15
0
Добрый день! Готов взяться. Скиньте ТЗ. Контакты в профиле.
Игорь Терентьев
30 июня 2017, 02:44
0
Как используя это событие изменить не только $price но и $old_price?
Игорь Терентьев
25 июня 2017, 16:57
0
Как правильно прописать base href="{$_modx->config.site_url}" для такого варианта s9732.h8.modhost.pro/en/?
Сейчас у меня там выводится только домен.
Игорь Терентьев
25 июня 2017, 02:26
0
{$_modx->runSnippet('msVendor', [
        'vendor' => $_modx->resource.pagetitle,
        'tpl' => 'tpl.msVendor',
    ])}
tpl.msVendor:
<img src="[[+logo]]" alt="{$_modx->resource.pagetitle}" width="150px">
                        {$_modx->runSnippet('!msProducts', [
                            'parents' => 58,
                            'limit' => 18,
                            'includeThumbs' => 'medium',
                            'tpl' => 'HomeSliderItemTpl',
                            'optionFilters' => '{ "vendor:=":[[+id]] }',
                        ])}
Сниппет msVendor:
<?php
/**
 * @Author: Anton Jukov
 * https://github.com/2ball/modx/tree/master/msVendor
 * https://bezumkin.ru/sections/tips_and_tricks/2918/
 */
if (!empty($scriptProperties['vendor'])) {
    // $vendor = $modx->getObject('msVendor', $scriptProperties['vendor']);
    $vendor = $modx->getObject('msVendor', array('name' => $scriptProperties['vendor']));

    //Check vendor exist
    if (is_object($vendor)) {
        //Get fields data
        $vendor = $vendor->_fields;

        //Get content
        if ($scriptProperties['includeContent'] == 1) {
            if (!empty($vendor['resource'])) {
                $resource = $modx->getObject('modResource', $vendor['resource']);

                if (is_object($resource)) {
                    $vendor['pagetitle'] = $resource->get('pagetitle');
                    $vendor['introtext'] = $resource->get('introtext');
                    $vendor['content'] = $resource->get('content');
                }
            }
        }

        //How to return?
        if ($scriptProperties['returnData'] == 1) {
            if (!empty($scriptProperties['returnOption'])) {
                return $vendor[$scriptProperties['returnOption']];
            }
            else {
                return $vendor;
            }
        }
        else {
            $output = $modx->getChunk($scriptProperties['tpl'], $vendor);
            return $output;
        }
    }
    else {
        return false;
    }
}
else {
    return false;
}
Игорь Терентьев
24 июня 2017, 01:18
0
Ну как, получилось? С такой же проблемой столкнулся.
Игорь Терентьев
17 июня 2017, 02:10
0
Тоже сделал так — через консоль не хотел устанавливаться webhook.
Игорь Терентьев
08 июня 2017, 17:42
2
+1
У меня получилось решить данную проблему.
Во первых нужно удалить ранее зарегистрированные сервисы:
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->removeService('delivery', 'MskDelivery');
}
Создаем файл в core/components/minishop2/custom/delivery/msdeliverycourierhandler.class.php
<?php
if (!class_exists('msDeliveryHandler')) {
	require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}

class msDeliveryCourierHandler extends msDeliveryHandler implements msDeliveryInterface {
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0.0) {

        $freedeliverysumm = 90;
        $cart = $order->ms2->cart->status();
        $cart_cost = $cart['total_cost'];

        if($cart_cost > $freedeliverysumm){
            return $cost;
        }else{
            $delivery_cost = parent::getCost($order, $delivery, $cost);
            return $delivery_cost;
        }
    }
}
Регистрируем:
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('delivery', 'msDeliveryCourierHandler',
        '{core_path}components/minishop2/custom/delivery/msdeliverycourierhandler.class.php'
    );
}