Всего 125 966 комментариев

Артур Шевченко
05 марта 2022, 22:22
0
Очень легко: нужно под каждую комбинацию опций создать отдельное правило SEO. Под две опции, нужно 3 правила
1. {$option1}
2. {$option2}
3. {$option1}/{$option2}
Для трех опций нужно 7 правил
1. {$option1}
2. {$option2}
3. {$option3}
4. {$option1}/{$option2}
5. {$option1}/{$option2}/{$option3}
6. {$option1}/{$option3}
7. {$option2}/{$option3}
И так далее
Дмитрий Бородин
05 марта 2022, 20:09
0
Столкнулся с такой же проблемой. BabelLinks не выводит ссылки в меню в контексте web. Если добавить параметр &showCurrent=`1`, показывает только основной язык (русский). Также на сайте добавлен английский и французский языки в указанном порядке. Если вручную перейти на английскую версию сайта, то BabelLinks выводит ссылку на русскую и английскую версии только. Если вручную перейти на французскую версию сайта, тогда BabelLinks выводит уже все три языка… Переводы все есть. Кэш чистил несколько раз. Сайт включен. А проблема не исчезает. Пытался найти ответ на других форумах, там предлагают использовать для переключения сторонние плагины только. Только не хочется использовать для этого костыли, когда есть стандартное готовое решение.
Артур Шевченко
05 марта 2022, 09:48
+1
Непосредственно html-тэги нельзя отправить, но можно сделать так
<htm>
    <body>
        <form>
            <p>Some text</p>
            <input type="hidden" name="service">
        </form>  
        <script>
            let  form = document.querySelector('form');
            form.addEventListener('submit', function(e){
            e.preventDefault();
            let par = document.querySelector('p'),
                input = document.querySelector('input[name="service"]');
            input.value = par.innerText;
            });
        </script>
    </body>
</html>
Евгений Webinmd
04 марта 2022, 16:29
+1
Создаете новую папку с ключем языка в папке с лексиконами минишопа, копируете туда английский или русский вариант и меняете там нужные вам надписи
Артур Шевченко
04 марта 2022, 14:11
+1
Можно под каждую таблицу создать отдельное ТВ или по три ТВ, но по-моему лучше обойтись одним MIGX.
Артур Шевченко
04 марта 2022, 14:10
0
ну так-то да, но есть один нюанс, если заказчик, а так бывает, захочет добавить ещё раздел на первом уровне или переименовать существующий, статически выведенное меню нужно будет менять вручную, поэтому я бы так не делал, просто из-за лени)))
Артур Шевченко
04 марта 2022, 14:07
0
А я не говорил про id страницы, у каждого пункта меню, т.к. это ресурс, есть id и при выводе меню вы проверяете равен ли id текущего пункта например 2, где 2 это id ресурса Товары, если равен, то вызываете pdoResources/pdoMenu/
Константин Ильин
04 марта 2022, 12:20
0
Гляньте:
1. ошибка в Консоли браузера
2. ошибка в Логе modx
3. ошибка в Логе Сервера
4. Если зайти в Админке, в ресурс, MIGX нормально показывает? Это вопрос про ошибку на 1860 строке prnt.sc/3CQsst937gOr
5. Попробовать(естественно с переделками) данный код в Console
Сергей Карпович
04 марта 2022, 12:09
0
или подставлять другой чанк, если в галерее только одно фото выбрано?..
Сергей Карпович
04 марта 2022, 11:52
0
Есть ли способ задать чанк для одиночного фото, что бы было возможно настроить кадрирование изображения и сжатие?
Vladimir
04 марта 2022, 10:33
0
Вот это работает и записывает данные
$tvcid->setValue($currentResourceId, json_encode($ar));
но поменял на это
$tvr = $modx->newObject('modTemplateVarResource');
$tvr->set('tmplvarid', 25);
$tvr->set('contentid', $currentResourceId);

$tvr->set('value', json_encode($ar));
$tvr->save();
MIGX_id обязательно нужно ставить, иначе сам он не подставляет именно в код
И всё так же уходит в бесконечное сохраннее если этот плагин включен
<?php
switch ($modx->event->name) {
	
	case 'OnDocFormSave':
		if ($resource->get('template') == 3 && empty($resource->getTVValue('reviews'))) {
			$resource->setTVValue('ratingCount', strval(0));
			$resource->setTVValue('activeReviewsCount', strval(0));
		}
		elseif ($resource->get('template') == 3 && !empty($resource->getTVValue('reviews'))) {
			$activeReviews = 0;
			$totalActiveRating = 0;    
			$avgRating = 0;

			try {
				$reviews = json_decode($resource->getTVValue('reviews'), true);
				
				if($reviews){
					foreach($reviews as $key => $value){
						if($value['is_active'] == '1'){
							$activeReviews += 1;
							$totalActiveRating += $value['rating'];
						}
					}
					
					$avgRating = $totalActiveRating / 5;                        
				}
				$resource->setTVValue('ratingCount', strval($avgRating));
				$resource->setTVValue('activeReviewsCount', strval($activeReviews));
			} catch(Exception $e) {
				$modx->log(1, 'Бред 0');
				$modx->log(1, $e);                    
			}


		}

}
Georg
04 марта 2022, 10:21
0
Спасибо за ответ. Я не хотел использовать migx, но где моя ошибка понял
Vladimir
04 марта 2022, 09:23
0
Если делать через ресурсы, то человек без прав не может создать migx запись, поэтому пришлось делать так. Всё равно не помогает
Александр Мельник
04 марта 2022, 08:20
+1
Я любитель еще более простых решений) Зачем вам статичные пункты меню, такие как — о компании, контакты, формировать динамически через pdoMenu. Оставьте их в html и пропишите руками ссылки. А для формирования подменю с товарами используйте уже pdoMenu или pdoResources или msProducts и настройте их так чтобы отбирались только товары.
Дмитрий Бородин
04 марта 2022, 04:41
0
Интересное решение, конечно, только я пока не совсем понимаю… Проверка id страницы выведет результат, в зависимости от того, на какой странице я нахожусь. Разве нет? А главное меню должно на всех страницах быть одинаковым.
Артур Шевченко
03 марта 2022, 23:09
0
Не понимаю причём тут авторизованные люди. Вы можете в объект modx добавить любого пользователя. А что касается MIGX, то указывать MIGX_id необязательно, он подставиться автоматически, возможно и из-за этого проблема. И лучше всё же сделать через ресурсы.
Артур Шевченко
03 марта 2022, 23:05
0
Я как любитель простых решений, предлагаю выводить меню только первого уровня, при этом в чанке &tpl проверять id, и если он равен id Товары, то выводить товары сниппетом pdoResources.
Артур Шевченко
03 марта 2022, 22:32
+1
Как это исправить?
Сделать idtab, gid, range параметрами сниппета. Тогда сниппет будет вызываться так
[[!Google-Shits?
&idtab=`value`
&gid=`value`
&range=`value`
]]
Ну а сами параметры, я бы запихнул в migx.
Вместо этого нужно оставить только параметры.
$idx = $modx->getObject('modTemplateVar', array('name' => 'idtab'))->getValue($modx->resource->get('id'));
$gid = $modx->getObject('modTemplateVar', array('name' => 'gid'))->getValue($modx->resource->get('id'));
$range = $modx->getObject('modTemplateVar', array('name' => 'range'))->getValue($modx->resource->get('id'));
Олег
03 марта 2022, 14:40
0
Спасибо большое! Иначе это был бы ад.