Fullstack

Fullstack

С нами с 13 апреля 2017; Место в рейтинге пользователей: #120

[Решено] Превью изображений не создаются, если папка с ними находится по симлинку


Такая вот проблема. Сами изображения доступны по своим URL из браузера.
Тобиш nginx или Apache на хостинге их отдают.

Но вот почему-то не генерируются их превью. Возможно в этом виноват PHP, возможно MODX.

Изображения находятся в папке
/home/.../_global_/assets/images
А в папке самого сайта есть симлинк:
/home/.../site.ru/assets/images
, указывающий на тот самый
/home/.../_global_/assets/images
Что тут можно предпринять? Попробовал добавить в .htaccess эту строчку,
но не помогло: Options +FollowSymLinks
Fullstack
03 мая 2022, 00:01
modx.pro
474
0

Как поменять папку cache?

Есть несколько сайтов, использующих общий движок и тонны изображений, которые присутствуют на всех них. Контексты были выбраны как вариант, но там появляется проблема переписывания в миллионах мест [[~IDшников]] на новые. Был выбран самый лучший вариант — сделать разные базы данных, в зависимости от домена. Похожие чанки можно хранить в виде файлов и тогда они будут доступны для всех сайтов вне зависимости от БД, а те которые надо чтобы различались, будут оставаться в БД.

И по итогу все ID'шники сохранятся… Но папка кэша. В ней получается будут храниться разные ресурсы с одинаковыми ID. Как изменить папку кэша в зависимости от домена? Она наверняка где-то жестко прописана, плюс в разных дополнениях тоже. Просто раздельные БД — это самый лучший вариант для тех задач, которые мы предусматриваем. И при этом хотим оставить все ID как есть.
Fullstack
01 мая 2022, 18:18
modx.pro
530
0

[Fenom] Динамические плейсхолдеры (и var-переменные) срабатывают только при первой загрузке страницы (когда она еще не закэширована)

Задаю в динамическом сниппете {'!get_country' | snippet} плейсхолдер с кодом страны:

Сниппет:
$modx->setPlaceholder('country_code', 'RU');
Вызываю данный сниппет на странице:
{'!get_country' | snippet}
{if $_modx->getPlaceholder('country_code') == 'RU'}
    Russia | {$_modx->getPlaceholder('country_code')}
{else}
    Other | {$_modx->getPlaceholder('country_code')}
{/if}
При первой загрузке страницы (пока ее нет в кэше) все срабатывает как положено.
Но при следующей загрузке страницы условие не срабатывает и при все том же коде 'RU' выдает «else» или наоборот… Странно как-то очень. Что с этим делать?

Может нужно каким-то образом (каким?) выводить и проверять некэшируемый плейсхолдер? Только как его сделать?
Fullstack
18 января 2022, 01:51
modx.pro
819
0

Было бы неплохо сделать конвертер MODX в Fenom. Я начал, но вряд ли смогу доделать

Надо как-то обрабатывать &параметры=значения,: модификаторы и чтобы при этом все работало слаженно, поэтому чувствую лично для меня уйдет на него много времени на то, чтобы учесть все моменты. Если эта тема конвертера тоже интересна, вот моя недоработанная наработка
Fullstack
09 января 2022, 03:20
modx.pro
1 760
+5

[Мультиязычность] Скрипт массовой связки разных языковых версий (в разных контекстах) по URI [Babel]

Надо добавить мультиязычность на сайт через Babel. Для этого была сделана русская версия (в контексте web) и затем сделаны ее копии (en и de).

Далее нужно было связать все версии языков ресурсов между собой.
Fullstack
27 февраля 2021, 23:04
modx.pro
7
1 290
+9

В опциях miniShop2 нельзя привязать опцию к ресурсам - контекст пуст

Попробовал поубирать компоненты (которых нет на тех сайтах, где все работает) и поотключать плагины — всё так же. Скриншот:



Ошибок при AJAX-запросе ресурсов контекста нет, просто отдается JSON ответ только с одним контекстом web.
Fullstack
30 ноября 2020, 22:08
modx.pro
344
0

[miniShop2] Не работает коллбэк добавления товара в корзину

Пробовал такой вариант:

miniShop2.Callbacks.add('Cart.add.response.success', 'add_ok', function (response) {
	console.log(response);
});

Такой:

miniShop2.Callbacks.Cart.add.response.success = function (response) {
	console.log(response);
};

И даже такой:

function added_to_cart(response) {
	console.log(response);
}
miniShop2.Callbacks.add('Cart.add.response.success', 'added_to_cart', function() { });

Но ни один не срабатывает. Ошибок в консоли JS нет. Компонент последней версии, пробовал переустановить, но все так же тщетно
Fullstack
22 сентября 2020, 17:56
modx.pro
1 094
0

[miniShop2] Как идентифицировать на фронтенде товар, успешно добавленный в корзину?

В каталоге нужно обратиться к товарам в DOM через JS, но надо как-то идентифицировать товар, который был добавлен в корзину и обработан бэкенд-плагинами MODX.

Использую данный callback на фронтенде для отлова события товара, успешно добавленного в корзину:
document.addEventListener('DOMContentLoaded', function () {
		if (typeof miniShop2 !== 'undefined') {
			miniShop2.Callbacks.add('Cart.add.response.success', 'add_ok', function (response) {
				console.log(response);
			});
		}
	});
В ответе получаю только ключ товара в корзине, но никак ни его идентификатор, по которому добавленный товар можно найти на странице
Fullstack
12 мая 2020, 20:41
modx.pro
949
0

[Tickets] Не заполняется createdby в modx_tickets_threads

В таблице `modx_tickets_threads` последнее время поле createdby почему-то всегда равно 0.
При создании новых тикетов, и изменении автора в существующих (например явно меняю автора тикета в ресурсе, а поле createdby в `modx_tickets_threads` все равно остается 0). Это поле почему-то всегда 0, хотя у части тикетов оно заполнено (у 2070 заполнено, у 19507 не заполнено).

Это баг или оно заполняет данное поле при каких-то особых условиях?
Просто если я напишу плагин-фикс (пускай это и костыль), то на большом сайте тикеты могут начать работать неправильно, а что хуже — посыпаться (если данное поле и не должно заполняться, а я его буду заполнять). Это ответственность.

И еще, как связаться с разработчиком? На обратную связь нет ни намека, GitHub Issues выключен, а на e-mail, указанный в GitHub'е, разработчик не отвечает. Как тут сообщаются баг-репорты?
Fullstack
12 февраля 2020, 05:59
modx.pro
324
0

BabelLinks выводит везде только EN версию сайта

Если зайти на mine.by/play, видно ссылку на EN версию сайта, здесь правильно. Но если зайти на en.mine.by/play (EN версия), там будет та же самая ссылка вместо RU версии). Как это исправить?

Настройки:
Fullstack
04 мая 2018, 02:20
modx.pro
898
0