Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #25
Отправить деньги
Денис
20 февраля 2017, 01:31
1
0
через плагин:
if($modx->event->name == "OnDocFormRender" && $resource->get('class_key') == 'Ticket') {
	$modx->regClientStartupHTMLBlock("<script type='text/javascript'>
		Ext.ComponentMgr.onAvailable('tickets-box-publishing-information', function() {
			this.on('beforerender', function() {
				this.items.replace(this.items.map['modx-resource-menutitle'], new Ext.form.TextField({
					xtype: 'textfield',
					name: 'menutitle',
					fieldLabel: _('resource_menutitle'),
					description: '<b>[[*menutitle]]</b><br />'+_('resource_menutitle_help'),
					anchor: '100%',
					id: 'modx-resource-menutitle'
				}));
			});
		});
	</script>");
}
Сергей Шлоков
10 февраля 2017, 09:09
1
+2
Ты кстати можешь временно изменить уровень логирования, чтобы левые ошибки не сыпались. Установи log_level = 0. Потом вернёшь обратно.
Василий Наумкин
09 февраля 2017, 13:57
1
+1
Логи же просто так сыпятся. Обновился — ошибки сами пропали, обычное дело, так всегда и бывает.
Смешно.

Encountered empty IN
Где-то вызывается условие в xPDO с пустым IN, типа
&where=`{"parents:IN":"[[+parents]]"}`
и вот здесь в плейсхолдере пусто. Ищи, где у тебя есть IN.

Missing argument 3 for Fenom\Modifier::replace()
Это проще. Где-то в чанках есть вызов модификатора Fenom replace, без нужного параметра. То есть, строка для замены есть, что заменять есть, а на что заменять — нет.
Ищи где у тебя в чанках есть
{$variable | replace : 'что-то'}
Дока
Сергей Шлоков
09 февраля 2017, 12:19
2
+1
Логи лежат в core/cache/logs/error.log
$f = $modx->getOption(xPDO::OPT_CACHE_PATH) . 'logs/error.log';
if (file_exists($f)) {
	$filesize = filesize($f) / 1024 / 1024;
	// Если больше 5МБ, удалить
	if ($filesize > 5) unlink($f); 
}
Василий Наумкин
06 февраля 2017, 08:28
3
+3
Нужно использовать волшебный параметр
&scheme=`uri`
тогда для адресов страниц будет использоваться их uri, без запуска функции modX::makeUrl().

Вот лог modx.pro:
0.0000691: pdoTools loaded
0.0000439: Conditions prepared
0.0000050: Query parameters ready
0.0000920: No cached data for key «default/sitemap/13f0b2»
0.0000150: xPDO query object created
0.0000861: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `editedon`, `createdon`, `context_key`, `class_key`, `uri`, `content`
0.0000200: Processed additional conditions
0.0002549: Added where condition: modResource.hidemenu=0, OR:modResource.class_key:IN(Ticket,Article), modResource.published=1, modResource.deleted=0, modResource.searchable=1, modResource.context_key=web
0.0000701: Sorted by modResource.menuindex, asc
0.0002680: SQL prepared «SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`editedon`, `modResource`.`createdon`, `modResource`.`context_key`, `modResource`.`class_key`, `modResource`.`uri`, `modResource`.`content` FROM `b2QHetSLC6ET_site_content` AS `modResource` WHERE ( ( `modResource`.`hidemenu` = 0 OR `modResource`.`class_key` IN ('Ticket','Article') ) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 AND `modResource`.`searchable` = 1 AND `modResource`.`context_key` = 'web' ) ORDER BY modResource.menuindex asc „
0.1018419: SQL executed
0.0021629: Total rows: 9786
0.0283070: Rows fetched
0.0230331: Returning raw data
0.0005159: Created inline “modChunk» with name «93a97ed9d66e351bc63bf3ddfa38f405»
0.0122530: Compiled Fenom chunk with name «modchunk/93a97ed9d66e351bc63bf3ddfa38f405»
0.1083400: Rows processed
0.0142739: Saved data to cache «default/sitemap/13f0b2»
0.0096161: Created inline «modChunk» with name «be75dd4b9525127c59b774f94767849c»
0.0241339: Rows wrapped
0.3255181: Total time
82 395 136: Memory usage

Вот такой вызов:
[[!pdoSitemap?
	&scheme=`uri`
	&tpl=`@INLINE
	<url>
		<loc>{$_modx->config.site_url}{$url}</loc>
		<lastmod>{$date}</lastmod>
		<changefreq>{$update}</changefreq>
		<priority>{$priority}</priority>
	</url>`
]]
Максим Кузнецов
06 февраля 2017, 06:52
1
+2
$cases = array(2, 0, 1, 1, 1, 2);
$titles = array('год', 'года', 'лет');
			
return $titles[($input % 100 > 4 && $input % 100 < 20) ? 2 : $cases[min($input % 10, 5)]];
Василий Наумкин
18 декабря 2016, 12:11
2
+3
Да, этот параметр не работает и будет удалён в следующей версии.

Для включения проверки разрешения «section_add_children» нужно:
1. Создать новую группу ресурсов, например Special.
2. Добавить в эту группу нужные секции тикетов.
3. Добавить какой-либо группе пользователей политику TicketSectionPolicy для новой группы ресурсов.

И с этого момента только члены группы пользователей с политикой TicketSectionPolicy смогут публиковать и редактировать тикеты в секциях Special.

Так работает система прав MODX, что пока ни у одной группы нет особых разрешений к разделу, то запретов вовсе нет.
Алексей
08 декабря 2016, 15:24
3
0
Спасибо всем за ответы и советы.
Вот нашел…
Сниппет выбирает и выводит все категории, к которым принадлежит товар — его можно использовать как своеобразные теги. Предложил Виктор Долгий.
<?php
if (empty($rid)) {$rid = $modx->resource->id;}
if (empty($pid)) {$pid = $modx->resource->parent;}
if (empty($delimeter)) {$delimeter = ', ';}
$scheme = $modx->getOption('link_tag_scheme', null, 'full', true);

$q = $modx->newQuery('msCategory');
$q->leftJoin('msCategoryMember', 'msCategoryMember', array(
	'`msCategory`.`id` = `msCategoryMember`.`category_id`'
));
$q->sortby('pagetitle','ASC');
$q->groupby('id');
$q->select(array('id','pagetitle'));
$q->where('`msCategoryMember`.`product_id` = '.$rid.' OR `id` = '.$pid);

$result = array();
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$url = $modx->makeUrl($row['id'], '', '', $scheme);
		$result[] = '<a href="'.$url.'">'.$row['pagetitle'].'</a>';
	}
}
return implode($delimeter, $result);
Все ссылки ведут на bezumkin.ru/modx/minishop2/solutions/1160/ — эту не действующую но актуальную страницу… по поиску ни как не нашел… и до сих пор не знаю как её найти… текст выдрал из кэша поисковиков
Дмитрий
08 декабря 2016, 12:09
1
0
Спасибо за ответ.
>>>попробуйте выставить настройку msoptionsprice_sort_modification_option_values в нет
поставил работает, но после обновления до 2.1.22 beta перестало работать, значение в настройках стоит нет, проверил.
Andrey
16 ноября 2016, 22:08
1
+1
Итак! Почти сутки тотального уничтожения мозга и несколько кружек горячего чая, я наконец немного разобрался, как собственно и думал почти с самого начала…
Необходимо просто расширить возможности вот этого файла:
assets/components/videogallery/js/libs/vg-handler.js
Расширить пока не удалось… НО! Нет худа без добра, просто поменял вот это:
function setVideo(str) {
            if (typeof str == 'undefined' || !str) {
                str = '';
            }
            var element = document.querySelector(self.config.selectors['videoEmbedBlock']);
            if (element) {
                element.innerHTML = str
                    ? '<iframe width="140" height="105" src="' + str + '" frameborder="0" allowfullscreen></iframe>'
                    : '';
            }
        }
на это:
function setVideo(str) {
            if (typeof str == 'undefined' || !str) {
                str = '';
            }
            var element = document.querySelector(self.config.selectors['videoEmbedBlock']);
            if (element) {
                element.innerHTML = str
                    ? '<input type="text" name="videoUrl" value="' + str + '" id="videoUrl"/>'
                    : '';
            }
        }
И все стало на свои места! Костыль? Ну чего поделать! Пока не разберусь как расширить возможности, не чего не удаляя! Может кому пригодится!