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

iWatchYouFromAfar
09 ноября 2021, 17:30
0
А зачем вам для этого migx? Вот пример добавление в раздел пользователя таба, внутри которой можете рендерить что угодно и работать с этими полями штатно, как с другими полями пользователя.

Роман
09 ноября 2021, 17:24
0

Что-то типа того.
Посмотрите, тут, может натолкнет на мысль.
Часть кода, что быстро написал:
Ext.override(MODx.panel.User,{
    getParentFields: MODx.panel.User.prototype.getFields,
    
    getFields: function(config) {
        var parentFields = this.getParentFields.call(this,config);
		parentFields.push({
			id: 'my-custom-tab'
			,title: 'Доступ к курсам'
			,layout: 'form'
			,defaults: { border: false ,autoHeight: true }
			,hideMode: 'offsets'
			,items: [{
				html: '<p>Включение и отключение доступа пользователя к видео-урокам</p>'
				,xtype: 'modx-description'
			},
			{
				xtype: 'textfield'
				,fieldLabel: 'Кол-во баллов'
				,name: 'ball'
				,width: 300
			
			},
			{
			xtype: 'panel',
			cls: 'container',
			items: [
				{
					xtype: 'grid',
					columns: [ // Добавляем ширину и заголовок столбца
						{dataIndex: 'date', width: 150, header: 'Дата'},
						{dataIndex: 'count', width: 150, header: 'Кол-во'}
					],
					autoHeight: true, // Высота таблицы вычисляется автоматически
					viewConfig: {
						forceFit: true, // Растягиваем таблицу на всю ширину
						scrollOffset: 0 // Убираем вертикальный скролл (у нас же автовысота)
					},
					store: new Ext.data.ArrayStore({
						fields: ['date','count'],
						data: [
							['2021-11-09', '-7'],
							['2021-11-09', '-3'],
							['2021-11-09', '+10'],
						]
					})
				}]
			}]
		});

        return parentFields;
    }
});
iWatchYouFromAfar
09 ноября 2021, 17:24
0
Не буду тратить время, пытаясь вслепую понять, почему ваш сайт попал в 00.01% сайтов, на котором сниппет не работает.

Главное что вы решили вашу проблему. А как, и чем это аукнеться, это уже вопрос для более глубоких тем и обсуждений.
Giant Dad
09 ноября 2021, 16:41
0
Вообще, я хочу сделать в админке баллы для пользователя магазина. Знаю, что есть модуль для MiniShop2, но проблема в том, что на сайте Shopkeeper. Поэтому решил реализовать сам, пусть и костыльно. Не придумал ничего лучше, чем попробовать реализовать доп. вкладку у пользователя, на которой было бы поле migx, в которое можно было бы заносить элементы, в которых было бы записано количество баллов и дата их сгорания.
Роман
09 ноября 2021, 16:30
0
Нет, не пробовал. А что вы хотите сделать?
Поищите на ютубе: «Свои xtype в ExtJS».
Андрей
09 ноября 2021, 15:52
0
Сравнивай с оригинальным чанком, проверяй и делай по аналогии — chunk.comment_one_auth.tpl
Giant Dad
09 ноября 2021, 15:36
0
Спасибо! Это помогло. А как в таком случае выводить кастомное поле на вкладке? А Вам не приходилось добавлять в профиль в админке поле migx? Не можете подсказать как это можно сделать?
Игорь
09 ноября 2021, 15:03
0
1. @iWatchYouFromAfar, вы правы — мне следовало написать, что предложенный вами вариант решает задачу формирования семантически правильных ХК («хлебных крошек») в 99,9% случаях (специально проверил на своих и клиентских сайтах). Спасибо, что выложили рабочий код, но заметки на вашем сайте я читаю достаточно внимательно (давно уже в закладках).

Тем не менее, предложенный вами вариант формирования ХК на одном сайте «не сработал» (повторно перепроверял … ни в какую… ). Спасибо за предложенный вами вариант замены
href="{$_modx->makeUrl(1)}"
на
href="{$_modx->makeUrl($_modx->config['site_start’])}"
но в этом случае получаю ошибку
«Unexpected token 'site_start' in expression in pdoCrumbs»
Буду благодарен за совет, как от нее избавится.

2. По поводу того, что «на всех нормальных сайтах в ХК просто напросто нет текущего элемента» — не соглашусь. Например, на многих «нормальных» сайтах установлен SeoFilter, в котором «стандартный функционал заточен под чанк tpl.SeoFilter.crumbs.current, который идёт в комплекте. Для тех, кто использует pdoCrumbs, достаточно указать параметр в вызове сниппета: &tplCurrent=`tpl.SeoFilter.crumbs.current`»

Не стоит забывать, что уровень технических знаний у нас всех разный и кто-то (как, например, я) воспользуется документацией SeoFilter. Правда, чтобы добиться семантически правильных ХК, мне пришлось изменить tpl.SeoFilter.crumbs.current

<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="breadcrumb-item sf_crumb{if !$sflink} active{/if}" data-idx="{$idx}" data-separator="{$outputSeparator|htmlentities}">
    {if $sflink}
        <a title="{$menutitle}" itemprop="item" href="{$link}"><span itemprop="name">{$menutitle}</span>
        <meta itemprop="position" content="{$idx}"></a>
    {else}
        <span itemprop="name">{$menutitle}</span>
        <meta itemprop="position" content="{$idx}"
    {/if}
</li>{if $sflink}{$outputSeparator}<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="breadcrumb-item active sf_crumbs" data-idx="{++$idx}">
<span itemprop="name" class="sf_link">{$sflink}</span>
<meta itemprop="position" content="{$idx}"
    {*закомментированный ниже вариант позволит возвращать ссылку *}
    {*{set $page_link = $link}
    {foreach ['.html','.php'] as $suffix}
        {set $msufx = '*'~$suffix}
        {if $page_link | match : $msufx}
            {set $r_mask = '/'~$suffix~'$/'}
            {set $page_link = ($page_link | ereplace: $r_mask:'/')}
            {break}
        {/if}
    {/foreach}
    <a href="{$page_link}{$sfurl}" class="sf_link">{$sflink}</a>
    *}
</li>
{/if}
Возможно @Евгений Шеронов или кто-то из «старших товарищей» исправит и этот «говнокод» — к сожалению, других «правильных» вариантов мне найти не удалось.
Дмитрий Беляков
09 ноября 2021, 14:03
0
Да, кнопка появилась с комментарий ответный в панель залетает, но почему не выводиться в дереве на странице
Роман
09 ноября 2021, 13:37
0
Попробуй вставить: после
<div class="comment-content">[[+text]]</div>
<div class="comment-reply">
        <a href="#" class="reply">ответить</a>
</div>
Дмитрий Беляков
09 ноября 2021, 13:21
0
А подробнее?
вот мой чанк самого комментария, куда вставить
<div class="comment-item ticket-comment" id="comment-[[+id]]" data-parent="[[+parent]]" data-newparent="[[+new_parent]]" data-id="[[+id]]">
<div class="row no-margin ticket-comment-body[[+bad]]">
<div class="col-lg-1 col-xs-12 col-sm-2 no-margin left">
<div class="avatar">
<img src="[[+avatar]]" alt="avatar">
</div>
</div>
<div class="col-xs-12 col-lg-11 col-sm-10 no-margin-right right">
<div class="comment-body">
<div class="meta-info">
<header class="row no-margin">
<div class="pull-left ticket-comment-rating inactive">
<h4 class="author"><a href="[[+url]]#comment-[[+id]]">[[+fullname]]</a></h4>
<span class="date">- [[+date_ago]]</span>
<span class="likes plus"><span class="likes-count rating[[+rating_positive]][[+rating_negative]]">[[+rating]]</span>
</span>
[[+has_parent]]
<span class="ticket-comment-down"><a href="#" data-child="">↓</a></span>
</div>
</header>
</div>
<div class="comment-content">[[+text]]</div>
<div class="clients" style="display:none;">[[+fullname]]</div>
</div>
</div>
</div>

</div>
<!--tickets_rating_positive  positive-->
<!--tickets_rating_negative  negative-->
<!--tickets_has_parent <span class="ticket-comment-up"><a href="[[+url]]#comment-[[+parent]]" data-id="[[+id]]" data-parent="[[+parent]]">↑</a></span>-->
Василий
09 ноября 2021, 12:02
0
Тоже столкнулся с отправкой через smtp, для меня решением было добавление сертификата ssl в параметры PHPMailer:
$mail->SMTPOptions = array(
        'ssl' => [
            'verify_peer' => true,
            'verify_depth' => 3,
            'allow_self_signed' => true,
            'peer_name' => 'smtp.yandex.ru',
            'cafile' => $_SERVER['DOCUMENT_ROOT'].'/PHPMailer/cacert.pem',
        ],
    );
А сам сертификат благополучно утащил из папки /core/model/aws/lib/requestcore/, но можно получить и свой, но не стал заморачиваться пока. Тестил на своем сниппете, в modx пока не пробовал добавлять, но думаю, что там проблема решится, т.к. PHPMailer той же версии брал, что и в modx стоит.
Алексей
09 ноября 2021, 11:33
0
Добрый день!
Вот, мне кажется ваш вариант.
Кнопка Показать больше/Показать меньше
Роман
09 ноября 2021, 11:12
0
Я делал так и ставил событие на OnUserFormRender
if ($modx->event->name != 'OnUserFormRender') return '';
$modx->controller->addLastJavascript('/assets/components/customModx/js/mgr/user/tab.js');

Файл: /assets/components/customModx/js/mgr/user/tab.js
Ext.override(MODx.panel.User,{
    getParentFields: MODx.panel.User.prototype.getFields,
    getFields: function(config) {
        var parentFields = this.getParentFields.call(this,config);
		parentFields.push({
			id: 'my-custom-tab'
			,title: 'Доступ к курсам'
			,layout: 'form'
			,defaults: { border: false ,autoHeight: true }
			,hideMode: 'offsets'
			,items: [{
				html: '<p>Включение и отключение доступа пользователя к видео-урокам</p>'
				,xtype: 'modx-description'
			},{
				//Тут остальные элементы
			}]
		});

        return parentFields;
    }
});
alex
09 ноября 2021, 09:00
0
Можно все это через js сделать. Отображаете первое предложение, остальное прячете в скрытый блок, при клике разворачиваете его.
Сергей Лим
09 ноября 2021, 07:48
0
Пока решил закомментированием проверки в ms2form.class.php

/*if (!$this->authenticated || empty($this->config['allowFiles'])) {
return $this->error('ms2form_err_access_denied');
}*/
iWatchYouFromAfar
09 ноября 2021, 02:51
0
В моем варианте все прекрасно работает, использовал этот сниппет на более чем дватцати сайтах:

{'pdoCrumbs' | snippet : [
'outputSeparator' => '',
'showHome' => 1,
'showCurrent' => 0,
'hideSingle' => 1,
'tplWrapper' => '@INLINE <ul itemscope itemtype="http://schema.org/BreadcrumbList" class="breadcrumbs">{$output}</ul>',
'tpl' => '@INLINE
        <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
             <a title="{$menutitle}" itemprop="item" href="{$link}"><span itemprop="name">{$pagetitle}</span></a>
             <meta itemprop="position" content="{$idx}">
        </li>'
]}
Я в комментариях и на своем сайте привел аж два варианта генерации ХК сниппетом pdoCrumbs. Просто кто-то читает не внимательно.

Вы заменили генерацию урла для первого элемента ХК, это не костыль даже, это просто бесполезное действие, оно ни на что не влияет. Разве что в один чудный день, главная страница вашего сайта вдруг сменит идентификатор и вот тут костыль ваш всплывет. Костыли со скрипом но решают задачи, а вы просто заменили геренацию урла для первого элемента ХК. Это вообще не относится к itemprop=«item…

Если уж хочется говнокостылить, то делайте это хоть чуть-чуть правильно:

href="{$_modx->makeUrl($_modx->config['site_start'])}"

Рекомендую вам вернуть все как было и еще раз прогнать разметку через валидатор schema.org. После внимательно посмотреть, где ошибка.

Ошибка «Отсутствует поле „item“» возникает на элементе текущей страницы ХК при генерации ХК этим вариантом сниппета, но на всех нормальных сайтах в ХК просто напросто нет текущего элемента.

Именно по этой причине я и написал на своем сайте:

"Наиболее правильный вариант, который устраивает поисковых роботов и Google и Yandex:"
Игорь
08 ноября 2021, 22:17
0
На данный момент, рабочий вариант для Google такой:
{'pdoCrumbs' | snippet: [
'showAtHome' => '0',
'showHome' => '1',
'outputSeparator' => '<li> / </li>',
'tplWrapper' => '@INLINE <ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">{$output}</ol>',
'tplHome' => '@INLINE
        <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
             <a title="{$menutitle}" itemprop="item" href="{$_modx->makeUrl(1)}"><span itemprop="name">{$pagetitle}</span>
             <meta itemprop="position" content="{$idx}"></a>
        </li>',
'tpl' => '@INLINE
        <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
             <a title="{$menutitle}" itemprop="item" href="{$link}"><span itemprop="name">{$pagetitle}</span>
             <meta itemprop="position" content="{$idx}"></a>
        </li>',    
'tplCurrent' => '@INLINE
        <li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
             <a title="{$menutitle}" itemprop="item" href="{$link}"><span itemprop="name">{$pagetitle}</span>
             <meta itemprop="position" content="{$idx}"></a>
        </li>',

]}
В предложенном @iWatchYouFromAfar варианте, валидатор микроразметки выдавал предупреждение, что у первого элемента хлебной крошки («Номе») в коде нет атрибута itemprop=«item». Ошибка пропала при замене в 'tplHome'
href="{$link}"
на
href="{$_modx->makeUrl(1)}"
Возможно, «костыль», но рабочий)