msOrder указать методы оплаты и доставки руками
        Как можно указать через параметры какие именно выводить методы оплаты и методы доставки для сниппета msOrder?
Например:
Для чего нужно: на сайте два языка, хочется чтобы в России были одни варианты, а в Европе другие. В документации не нашел нужных параметров, значит их нет еще, и нужно сделать это как-то по другому.
    
    
                                                                                
            Например:
Rus: [[!msOrder? &delivery=`1,2,3` &payments=`1,2,3`]]
Eng: [[!msOrder? &delivery=`4,5,6` &payments=`4,5,6`]]Для чего нужно: на сайте два языка, хочется чтобы в России были одни варианты, а в Европе другие. В документации не нашел нужных параметров, значит их нет еще, и нужно сделать это как-то по другому.
Комментарии: 4
                самое простое это расширить таблицу ms2_payments на одну ячейку lang/culture и потом уже в чанке подставлять
плагин на OnMODXInit
в чанк msOrder
                    плагин на OnMODXInit
<?php
switch ($modx->event->name) {
    case "OnMODXInit":
        $map = array(
            'msPayment' => array(
                'fields' => array(
                    'lang' => '',
                ),
                'fieldMeta' => array(
                    'lang' => array(
                        'dbtype' => 'varchar',
                        'precision' => '10',
                        'phptype' => 'string',
                        'collation' => 'utf8_general_ci',
                        'null' => false,
                    ),
                ),
            ),
        );
        foreach ($map as $class => $data) {
            $modx->loadClass($class);
            foreach ($data as $tmp => $fields) {
                if ($tmp == 'fields') {
                    foreach ($fields as $field => $value) {
                        foreach (array('fields', 'fieldMeta', 'indexes') as $key) {
                            if (isset($data[$key][$field])) {
                                $modx->map[$class][$key][$field] = $data[$key][$field];
                            }
                        }
                    }
                } elseif ($tmp == 'composites' || $tmp == 'aggregates') {
                    foreach ($fields as $alias => $relation) {
                        if (!isset($modx->map[$class][$tmp][$alias])) {
                            $modx->map[$class][$tmp][$alias] = $relation;
                        }
                    }
                }
            }
        }
        break;
}в чанк msOrder
{set $culture = $_modx->config.cultureKey}
{foreach $payments as $payment}
{if $culture == $payment.lang?}
тут чекбокс 
{/if}
{/foreach}            
                указать в параметре where
                    &where=`{"msDelivery.id:IN":[1,2], "msPayment.id:IN":[1,2,3]}`            
                омг как все просто
т.е. все, что в вызове сниппета &*** потом идет в
                    т.е. все, что в вызове сниппета &*** потом идет в
$pdoFetch->setConfig($scriptProperties);?? и не нужно отдельно where обрабатывать в самом сниппете?            
                Спасибо! :)            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.