Всего 125 943 комментария

Роман
09 января 2023, 15:12
0
В итоге сделал так, вроде работает :), может кому зайдет еще.
Для проверки ID на конце alias воспользовfлся explode и end

<?php
if ($modx->event->name == 'OnDocFormSave') {
    
if ($mode == 'new') {
    // resource created
         if ($resource->get('template') == 2) {
    if (!empty($resource->get('alias'))) {
              $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
              $resource->save();
        }else{
            $resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            $resource->save();
        }
}
}
else {
   // existing resource was updated
    if ($resource->get('template') == 2) {
  
         if (!empty($resource->get('alias'))) {
            
                 $array = explode('-', $resource->get('alias'));
                 $altid = end($array);

           if ($altid != $resource->get('id')) {
               $resource->set('alias',$resource->get('alias').'-'.$resource->get('id'));
               $resource->save();
             }
            
        }else{
            //$resource->set('alias',$resource->get('pagetitle').'-'.$resource->get('id'));
            //$resource->save();
        }  
    }
}
}
Михаил
09 января 2023, 14:21
0
Создал отдельную страницу — вывожу там отзыв
[[!ecMessages?
&threads=`*`
&tpl=`tpl.ecMessages.Row.all`
&limit=``
&messages=`5`
]]
Делаю ссылку отзыву «Читать весь отзыв» site.ru/reviews?id=5
Вопрос как автоматизировать этот процесс?
Артур Шевченко
09 января 2023, 13:44
0
Ну это больше похоже на целую статью, которую явно писал авторизованный пользователь. Мне кажется в этом случае использовать easyComm не очень удобно, я бы использовал Tickets или написал бы своё решение.
Михаил
09 января 2023, 13:37
0
Сам понимаю что незачем, но нужно чтобы было как тут otzovik.com/reviews/hotel_snegiri_russia_siktivkar/
Предполагаются очень длинные отзывы.
Константин Ильин
09 января 2023, 13:32
0
а, да) Я просто копирнул из примеров) Вызывал сомнение этот параметр, но не трогал)
Сейчас все норм и сохраняется, а сохраняется наверно потому что, я до этого под админом открывал сайт, т.е. не был авторизирован в контексте)
Спасибо Артур! буду дальше тестировать :)
Михаил
09 января 2023, 13:29
0
Добрый день. Вывожу карту со всеми ресурсами из определенного родителя. Как вывести только определенные ресурсы? Например, выводить только те ресурсы у которых заполнен какой нибудь TV
Код вызова:
[[!yandexMaps?
	&tvCoords=`coords`
	&styleMapBlock=`width:100%; height:600px;`
	&zoom=`12`
	&showMoreLink=`true`
	&showMoreLinkTpl=`balloon`
	&fieldForBalloonContent=`introtext`
	&fieldForHint=`pagetitle`
		&objectsTypesJSON=`[
	{
	"Adresa": {
		"parent":30",
		"preset":"islands#redDotIcon"
			}
		}
	]`
]]
Артур Шевченко
09 января 2023, 13:28
0
Нельзя сделать ссылку на страницу, которой нет))) Да и зачем отзыву целая страница? Я чаще всего делаю разворачивающийся текст, реже модалку с полным текстом. Но если прям надо страницу, то надо создать ресурс, в котором будете вызывать сниппет ecMessages, который будет по переданным get-параметрам получать из БД нужный отзыв.
Роман
09 января 2023, 13:20
0
Благодарю! Спасибо что откликаетесь.
Артур Шевченко
09 января 2023, 13:18
+1
Ну так-то, конечно не работает))) Ты указал, что имя пользователя надо брать из поля email, а имя пользователя у тебя не равно email.
Артур Шевченко
09 января 2023, 13:14
1
+1
Я просто вариант предложил, а ты делай как больше нравится)))
Роман
09 января 2023, 13:13
0
Спасибо, попробую! ereplace интересно, обойтись без доп самописного сниппета будет хорошо
Артур Шевченко
09 января 2023, 13:11
1
+1
Зачем делать код читабильнее? Ну чтобы удобнее было его читать самому и другим.
Что же до проблемы, то я бы на твоём месте проверил настройки источника файлов (baseUrl), так как у меня нет. Если же исходить из того, что слэш есть и он нужен то можно сделать так
{set $photo = ($el.id | resource: 'photo')}
{set $base_path = $_modx->config.base_path | ereplace: '/\/$/' : ''}
{set $path = $base_path ~ $photo}
{if $phote && file_exists($path)}
<img src="{$photo | pthumb : 'w=660&h=412&zc=1&q=90'}" alt="{$el.pagetitle}"/>
{/if}
Константин Ильин
09 января 2023, 13:02
0
Хм, походу я криворучко или праздники сказываются, даже авторизация не работает.
Модхост сейчас поднял
s31388.h10.modhost.pro/

Простой пользователь
test@test.ru
123123123

админский
s31388.h10.modhost.pro/manager/
s31388
AzbNTYpnYF11
Роман
09 января 2023, 12:55
0
Да тоже все работает, просто если прям подставить

$resource->set('alias',$resource->cleanAlias($title));
$resource->save();
то записывается пустота
Артур Шевченко
09 января 2023, 12:50
0
Где-то у тебя ошибка. Я проверил у себя на сайте в плагине на сохранение всё работает.
Роман
09 января 2023, 12:46
0
тут один вариант, смотреть на конце строки ID и уже от этого плясать, пробую strpos
Роман
09 января 2023, 12:45
0
Можно, а зачем? У меня там в другомпроблема, в $_modx->config.base_path есть папка assets/ на конце со слешем, а у рисунка путь начинается с /assets/… со слешем в начале. Поэтому и добавил функцию назвал substr в которой вырезаю у пути assets/
Роман
09 января 2023, 12:41
0
Пробовал $resource->cleanAlias($title) пусто почему-то в $resource->cleanAlias($title)
Артур Шевченко
09 января 2023, 12:16
0
А почему бы не разбить на части?
{set $photo = ($el.id | resource: 'photo')}
{set $path = $_modx->config.base_path ~ $photo}
{if $phote && file_exists($path)}
<img src="{$photo | pthumb : 'w=660&h=412&zc=1&q=90'}" alt="{$el.pagetitle}"/>
{/if}
По-моему так читабельнее.
Роман
09 января 2023, 12:13
0
Я понял, спасибо, тоже как вариант. Если хочешь что-бы были скопированы TV копируй ресурс, да нормально. Но думаю пока как сделать так, при создании страницы будет выпадающий список у MIGx TV, где пользователь выбирает из списка ресурсов из которого скопировать контент этого MIGx TV, выпадающий список как listbox список ресурсов. Просто типа из готовых шаблонов выбираешь нужный, заполненный.