Вопросы

Варианты отображения товаров в каталоге, плиткой или прайсом

Добрый день! Подскажите, как настроить переключатели вариантов отображения товаров в каталоге (плиткой, списком, прайсом). С перезагрузкой страницы.
/katalog/?display=plitka
/katalog/?display=list
/katalog/?display=price
Панируется для каждого варианта подключить отдельный чанк. (plitka.tpl, list.tpl, price.tpl)
Можно ли использовать для этого mFilter?
Шурик
2 часа назад
modx.pro
15
0

вывод Категорий - как правильно вывести категории?

всем привет! есть такая структура:

<img src="" />

я обработал все этоpdoMenu/ и pdoResources и до подкатегории iPhone-7 все работает/ жму на категорию чтоб зайти посмотреть товары и возвращается на два шага назад в каталог// получается
Каталог-iPhone-iPhone7-iPhone7S.

pdoMenu — каталог — <img src="" />

pdoResources — cубкатегория

пробовал и depth и level менять// не помогает// и прошу не кидайте тапками. я только начинаю вникать в суть)) пока все делаю полумеханически// хочется понять что делаю

из сниппетов пока подружился с migX и Formit.

заранее благодарю ) вот ЗДЕСЬ можно посмотреть как все выглядит на фронте// — КАТАЛОГ — IPHONE- IPHONE7 — и возвращается обратно в каталог//
Документацию читаю, много чего не понимаю// объясните кто нибудь на простом крестьянском,, Спасибо
shurra
9 часов назад
modx.pro
12
0

Как вывести значение с TV поля (список одиночный выбор)

Добрый вечер, друзья!

Есть TV поле (список одиночный выбор) с параметрами
Карточка == 1||
Свекла == 2

И тд

На фронте ресурса, необходимо вывести значение, которое установлено (это список одиночный выбор), то-есть значение какое-то одно

Если вывести [[*tvname]] — выводит значение цифрой
Как вывести именно названия?

Есть модификатор для вывода (списка множественного выбора)
Но при одиночном выборе работать отказывается

У кого есть php модификатор, если не сложно черканите
Андрей
Вчера в 18:19
modx.pro
30
0

Jevix и тэги php

Друзья, как правильно прописать правило для Jevix, по которому он будет вырезать комментарии, содержащие php код в Comments?
Антон
Вчера в 18:08
modx.pro
19
0

Как удалить ненужные правила из таблиц стилей и отложите загрузку кода CSS, который не используется в верхней части страницы

Всем привет. Делаю оптимизацию сайта в MODX и pagespeed указывает мне файл где нужно удалить ненужные правила из таблиц стилей и рекомендует отложить загрузку кода css.
Файл я нашла, но что в нем удалять не знаю. в нем две с лишним тыщи записей.
подскажите, с чего начать.
Katerina
Вчера в 15:40
modx.pro
54
0

ПЕРЕНОС САЙТА С ХОСТИНГА НА ЛОКАЛКУ

Всем привет! ребята ктонибудь помогите, замучался/ —
вот что сделал:

1. на бегете обновил модХ до 2.7.3 версии.
2. очистил кеш (в том числе и ручками очистил с фтп)
3. завершил все сеансы.
4. упаковал папку public_html в архив (прямо на хостинге)
5. скачал. залил на локальный сервер
6.переписал все пути в четырех файлах config.core.php
7.переименовал .htaccess (все три файла)
8.экспорт/импорт базы
9.уз установочных файлов modx взял папку setup и затолкал ее в корень сайта/
и тут начинается ерунда
открываю браузер и пишу localhost:8888/сайт/setup — появляется обычная инструкция по установке модХ, делаю обновление — прохожу все проверки связи с бд, кликаю далее и предлагает войти в админке — жму — появляется такой вид// скриншот1
когда захожу в админку- там вот такой вид — скриншот2


а если пишу в браузере localhost:8888/сайт/ — все отлично работает// пробую с разных браузеров и везде работает//
(КЕШ ВЕЗДЕ СКИНУЛ — ПУТИ ПРОПИСАЛ)
<img src="" />
<img src="" />

не понимаю в чем дело//
shurra
Вчера в 15:36
modx.pro
48
0

Как заменить username на id

Есть такой плагин, который отвечает за переадресацию на страницу пользователя

Одним словом, страница с пользователями на сайте реализована так же как на modx.pro

Сейчас есть страница типа /user
И с нее мы можем перейти на страницу самого пользователя user/username

Нужна помощь, как реализовать вместо username — id пользователя
Чтобы вместо вида /user/username был вид ссылок /user/id

<?php
if ($modx->event->name != 'OnPageNotFound') return;

$users_page_id = $modx->getOption('users_page_id', $scriptProperties, '');
$redirect_to_username = $modx->getOption('redirect_to_username', $scriptProperties, 1);
$strict_urls = $modx->getOption('strict_urls', $scriptProperties, 1);

if ($page = $modx->getObject('modResource',intval($users_page_id))) {
    $req = $modx->context->getOption('request_param_alias', null, 'q');
    $url = $_REQUEST[$req];
    $cont_type = $modx->getObject('modContentType',array('name' => 'HTML'));
    $cont_ext = $cont_type->get('file_extensions');
    $cont_isfolder = $page->get('isfolder');
    $page_url = $modx->makeUrl(intval($users_page_id));
    $cont_suf = $modx->getOption('container_suffix', null, '/');
    $url_explode = explode($page_url, $url, 2);

    $position = strpos($url, $page_url);
    if ($position !== false && $position == 0 && count($url_explode) == 2) {
        if (!empty($cont_ext) && $cont_ext != '/') {
            $tmp = explode($cont_ext,$url_explode[1]);
            $url_explode[1] = $tmp[0];
        }
        if (substr($url_explode[1],-1) == '/') $url_explode[1] = substr($url_explode[1],0,-1);
        if (substr($url_explode[1],0,1) == '/') $url_explode[1] = substr($url_explode[1],1);
        

        if ($redirect_to_username && is_numeric($url_explode[1]) && $user = $modx->getObject('modUser', intval($url_explode[1]))) {
            if ($cont_isfolder == 1 && $cont_suf == "/") {
                $page_url = substr($page_url,0,-1);
            }
            $modx->sendRedirect($page_url.'/'.$user->get('username').$cont_type->get('file_extensions'));
        }
        
        if ($strict_urls) {
            $redirect = false;
            if (!empty($cont_ext)) {
                if ($cont_ext == '/' && substr($url,-1) != '/') $redirect = $url.$cont_ext;
                elseif (strpos($url, $cont_ext) === false) $redirect = $url.$cont_ext;
            }
            elseif (substr($url,-1) == '/') $redirect = substr($url,0,-1);
            if ($redirect) $modx->sendRedirect($redirect);
        }
        
        
        if ($user = $modx->getObject('modUser', array('username' => $url_explode[1]))) {
            $modx->setPlaceholders($user->Profile->toArray());
            $modx->setPlaceholders($user->toArray());
            $modx->sendForward($users_page_id);
        }
    }
}
return;
Андрей
30 марта 2020, 21:18
modx.pro
60
0

Не создается позиция в BannerY

При попытке создать позицию, появляется такое сообщение.



Сталкиваюсь с такой проблемой впервые.
В чем может быть дело?
Oleg
30 марта 2020, 02:39
modx.pro
26
0

minishop2 - Как обновить Почтовый индекс в службе не обновляя страницу?

Здравствуйте.
Внедрил в службу — стоимость доставки Почтой России.
Для работы необходимо указывать индекс назначения.

Как обновить Итоговую цену при изменения Почтового индекса?
<script>
    $('#msOrder input[name=index]').on('input keyup', function(e) {
        miniShop2.Order.getcost();
    });
</script>


<?php
if(!class_exists('msDeliveryInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}
class rusPost extends msDeliveryHandler implements msDeliveryInterface{
    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {        
        $cart = $this->ms2->cart->status();
        $msOrder = $this->ms2->order->get();
        $total_weight = ($cart['total_weight'])?:0; //Вес товаров без учета доставки
        
        $curl = curl_init('https://otpravka-api.pochta.ru/1.0/tariff');
        $params = array(
            'dimension-type' =>'OVERSIZED', //Типоразмер
            'index-to' =>$msOrder['index'], //Почтовый индекс объекта почтовой связи места назначения
            'mail-category' =>'ORDINARY', //Категория РПО
            'mail-type' =>'ONLINE_COURIER', //Вид РПО
            'mass' => $total_weight, //Масса отправления в граммах
        );
        
        $header = array(
           'Content-Type: application/json;charset=UTF-8',
           'Authorization: -----',
           'X-User-Authorization: ------'
        );
        
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($params, JSON_UNESCAPED_UNICODE));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
        $jsonRusPost = curl_exec($curl);
        curl_close($curl);
        $resultRusPost = json_decode($jsonRusPost, true);
        $costDelivery = $resultRusPost['total-rate']/100;

        if($resultRusPost['code']){
            return $cost;
        }else{
            return $cost + $costDelivery;
        }
    }
    public function error($message = '', $data = array(), $placeholders = array()){
        return parent::error($message, $data, $placeholders);
    }
    public function success($message = '', $data = array(), $placeholders = array()){
        return parent::success($message, $data, $placeholders);
    }
}
Сергей
29 марта 2020, 22:49
modx.pro
35
0

а расскажите про gitify пожалуйста

Сегодня youtube подсунул мне ролик с MODX meetup 2015 года, где Иван Климчук рассказывает о gitify. (пронырливый google знает что я ищу информацию о совместной разработке и возможностях синхронизации сайтов).
Ролик этот я уже смотрел 2 года назад, ничего тогда не понял от слова совсем. Сейчас понял немногим больше. Через часик выделю время и буду на практике пробовать, но буду рад если кто-то поделится своим опытом использования и ответит на мои, пока что теоретические вопросы.
Для начала озвучу мою проблему. Хочу иметь сайт production и сайт(сервер на котором будут вести работы с копией production). Чтобы разработчик имел доступ только к серверу разработки, к гитхабу но ни в коем случае ни к production. Чанки, сниппеты, шаблоны — это все работает на файловых элементах pdoTools (в идеальной ситуации, но пока рассмотрим идеальную) и синхронизировать их через github не так сложно. Но разработчику на дев сайте обязательно придется создавать новые TV, плагины, менять системные настройки, создавать свои таблицы в базе и это конечно на modx беда. При том что он не имеет права пойти на production и там в админке повторить тоже самое, ну не записки же ему писать — «а потом я создал TV назвал так-то, тип такой то, привязал к такому та шаблону»
1. Проект как бы жив? Последний комиты были несколько лет назад. Имеет ли вообще смысл изучать?
2. Что именно синхронизирует gitify? Данные из всех таблиц? Изменится системная настройка он создаст файл, хранящий эту настройку? Добавиться новый контекст — будет синхронизирован и контекст?
Александр Мельник
29 марта 2020, 18:02
modx.pro
1
82
0