Всего 123 791 комментарий

Андрей Степаненко
26 мая 2024, 09:22
0
Ваша проблема связана с неправильным переключением контекстов в MODX. Убедитесь, что ваш .htaccess и скрипт роутинга правильно настроены для работы с Babel. Давайте рассмотрим основные моменты.

### .htaccess

В файле .htaccess у вас всё верно настроено для переадресации запросов на index.php с соответствующим `cultureKey` и `q`. Однако, убедитесь, что у вас есть следующие строки в начале файла:

```apache
RewriteEngine On
RewriteBase /
```

### Роутинг

Ваш скрипт переключения контекстов выглядит правильно, но добавьте дополнительную обработку для других языков и `cultureKey`. Также убедитесь, что у вас есть все необходимые контексты в MODX.

### Пример улучшенного роутинга

```php
<?php
if ($modx->context->get('key') != «mgr») {
$allowedLanguages = ['en', 'ua', 'ru', 'fr', 'de'];
$cultureKey = isset($_REQUEST['cultureKey'])? $_REQUEST['cultureKey']: 'en';

if (in_array($cultureKey, $allowedLanguages)) {
$modx->switchContext($cultureKey);
} else {
$modx->switchContext('web');
}

unset($_GET['cultureKey']);
}
```

### Проверка контекстов и ресурсов

1. Убедитесь, что контексты `en`, `ua`, `ru`, `fr`, `de` существуют в системе.
2. Проверьте, что ресурс `franchiza` существует в каждом контексте и имеет одинаковый alias.
3. Перейдите в менеджер ресурсов и убедитесь, что все ресурсы переведены и имеют правильные alias.

### Дополнительные настройки Babel

Убедитесь, что Babel правильно настроен для всех контекстов:

1. Перейдите в «Системные настройки» -> Babel.
2. Проверьте значения настройки `babel.contextKeys` (ключи всех контекстов, разделенные запятыми).

### Пример настройки Babel

```plaintext
babel.contextKeys = en,ua,ru,fr,de
```

Если проблема сохраняется, проверьте журнал ошибок MODX на наличие дополнительных подсказок.
Андрей Степаненко
26 мая 2024, 09:19
0
Для получения данных родителя на странице товара в шаблоне `product.tpl` с использованием Fenom, вы можете использовать следующий код:

{set $parent_id = $_modx->resource.parent} 
{set $grand_parent_id = $parent_id | resource : 'parent'} 
{$grand_parent_id | resource : 'pagetitle'}
Данный код выполняет следующие действия:
1. Получает ID родителя текущего ресурса.
2. Использует этот ID для получения ID «дедушки» (родителя родителя).
3. Выводит заголовок страницы «дедушки» по его ID.

Этот способ достаточно прост и позволяет получить необходимые данные без использования дополнительных сниппетов.

Если у вас есть вопросы или нужна дополнительная информация, пожалуйста, обращайтесь.
Артур Шевченко
25 мая 2024, 14:24
0
$tablePrefix = $modx->getOption('table_prefix');
$sql = "SELECT Product.pagetitle AS name, Data.price AS price, Parent.pagetitle AS parent FROM {$tablePrefix}site_content Product
LEFT JOIN {$tablePrefix}ms2_products Data ON Product.id = Data.id 
LEFT JOIN {$tablePrefix}site_content Parent ON Product.parent = Parent.id
LEFT JOIN {$tablePrefix}site_content Resource ON Product.id= Resource.id
WHERE Product.class_key = 'msProduct' AND Resource.published = 1";
$statement = $modx->query($sql);
$products = $statement->fetchAll(PDO::FETCH_ASSOC);
$output = [];
foreach ($products as $product) {
    $output[$product['parent']][] = $product;
}
return $output;
Дмитрий
25 мая 2024, 14:09
0
Прошу прощения, для меня это «темный лес». Не могли бы вы написать код? Буду очень благодарен.
Артур Шевченко
25 мая 2024, 14:04
0
Нужно присоединить таблицу site_content по id и в условиях выборки добавить ПсевдонимТаблицы.published = 1
Дмитрий
25 мая 2024, 13:51
0
Добрый день. Если товар снять с публикации, он все равно выводиться в прайсе, чтобы не выводился нужно товар полностью удалять. Подскажите пожалуйста, как прописать условие в сниппете чтобы не выводил снятые с публикации товары.
Николай Савин
25 мая 2024, 09:29
0
Самый простой, дешевый и быстрый вариант — разместить заявку в разделе работа на тему «Адаптация компонента под MODX3». Компонент простой — кто-нибудь обязательно возьмется.
антон
24 мая 2024, 21:00
0
нет желания обновить компонет очень иньересная задумка как по мне
сколко это стоит
Maks
24 мая 2024, 16:36
0
Что то не получается запустить ./start.sh
Пишет что не найдена команда. Пробовал по виндовс и под мак.
Егор
24 мая 2024, 16:08
0
поздно… я уже поплакал.
Наумов Алексей
24 мая 2024, 14:54
+1
Ииии ни одного комментария на большую публикацию, и ни одного плюсика) а я поставлю!
Артур Шевченко
23 мая 2024, 20:47
0
Если кому понадобится: сначала ищите ответ в документации, а потом пишите сюда.
Андрей
23 мая 2024, 18:46
0
вопрос закрыт, если кому понадобится, то
'tvFilters' => 'product_documents != ""'
Андрей Шевяков
23 мая 2024, 17:32
0
Там единственное надо переписать функции немного по другому, вот документация

Вместо этого
miniShop2.Callbacks.Cart.add.response.success = function(response) {
    };
Будет так
miniShop2.Callbacks.add('Cart.add.response.success', 'cart_ok', function (response) {

});
Евгений Куценко
23 мая 2024, 12:26
0
GoogleSheetsSaveForm у кого-то работает с FetchIt и вообще работает?
С параметром &gsRange=`opros` ломается отправка формы и указание листа для сохранения по умолчанию в настройках тоже самое.

И почему-то товары выгружает, а заказы не хочет. Есть мысли куда копать?
Андрей Шевяков
23 мая 2024, 12:16
0
В идеале конечно после добавления в корзину менять кнопку «в корзину» на ссылку «перейти в корзину», но я не нашел решение, которое будет работать даже после перезагрузки страницы.
Вот есть пример подобный https://modx.pro/solutions/4844