Максим Кузнецов

Максим Кузнецов

С нами с 01 июля 2013; Место в рейтинге пользователей: #33
26 июля 2015, 17:02
+1
Вставляет при помощи пхп в самом сниппете как-то так:
$modx->regClientStartupScript('<script type="text/javascript">здесь код</script>', true);

Не подгружает, скорее всего, потому что сниппет не инициализируется в любом контексте, отличном от web.

Причиной может служить как неправильная инициализация скрипта с вашей стороны (возможно, следует указать параметр &context), так и банальный недосмотр со стороны разработчика.

//ну и так, на всякий случай — когда работаете через разные контексты, всегда не лишним будет включить системную настройку allow_forward_across_contexts
26 июля 2015, 13:11
+1
Медиа -> Источники файлов -> Tickets -> параметр thumbnails

Там же можно настроить параметры водяного знака и метод обрезания.

Пример:
{"w":120,"h":90,"q":90,"zc":"1","bg":"000000","fltr":"wmi|/assets/watermark.png|BR|90"}
25 июля 2015, 18:07
0
Исправьте
strip_tags($input)
На
strip_tags($input, '')
25 июля 2015, 16:38
0
Да, можно и так, но, имхо, это лишняя динамичная нагрузка, которую незачем воспроизводить каждый раз при отображении + в GetResources придется обязательно выставлять includeContent, который сам по себе может не использоваться.

Впрочем, если требуется считать кол-во символов более, чем у одного поля — этот вариант действительно удобнее.
25 июля 2015, 14:41
0
Как вариант могу предложить создать одно доп. тв-поле (числовое) для ресурса — чтобы не увеличивать время вызова со стороны пользователя, занимаясь подсчетом.

Далее, создаем плагин и подключаем его на событие OnDocFormSave:
if ($modx->event->name == 'OnDocFormSave') {

		//отсеиваем ненужные шаблоны, оставляя только тот, где требуется произвести подсчет
		if ($resource->get('template') == "айди_шаблона") {

			//вырезаем все теги, затем пробелы и под конец считаем кол-во символов и заносим их в соответствующее тв-поле
			$resource->setTVValue('название_тв_с_числом_символов', strlen(str_replace(' ', '', strip_tags($resource->getContent(), '') ) ) );
			$resource->save();
		}
	}

И выводите созданное тв-поле в любом желаемом месте.
25 июля 2015, 02:35
0
Для начала — скинуть лог ошибок.)
24 июля 2015, 16:41
0
Не за что.)
24 июля 2015, 15:28
+2
Раз вы реализуете данную задачу через ajax, имхо, лучше и загрузчик вынести в скрипты:

$(document).on('af_complete', function(event, response) {
	if (response.form.attr('id') == 'айди_формы' && response.success == true) {
		$.fileDownload('путь_до_файла').done(function () { alert('Файл успешно загружен!'); });
	}
});

Хук, соответственно, не нужен.
24 июля 2015, 14:34
0
assets/components/tickets/js/web/default.js

,save: function(form, button)  {
			$(form).ajaxSubmit({
				data: {action: 'comment/save'}
				,url: TicketsConfig.actionUrl
				,form: form
				,button: button
				,dataType: 'json'
				,beforeSubmit: function() {
					clearInterval(window.timer);
					$('.error',form).text('');
					$(button).attr('disabled','disabled');
					return true;
				}
				,success: function(response) {
					$(button).removeAttr('disabled');
					if (response.success) {
						//тут ваш код для скрытия
						Tickets.forms.comment(false);


+ Файл скрипта лучше перенести в отдельную папку и указать его путь в системных настройках, чтобы не затерлось при обновлении.
20 июля 2015, 22:05
0
Дополнительные табы реализуются при помощи ExtJS. (примеры)

Что же до аналога вкладки tickets'ов — можно или расширить его ядро в том месте, где определяется этот таб (не рекомендуется, т.к. при обновлении расширения все слетит) или сэмулировать его вызов внутри свежесозданного таба, по аналогии с тем, как он вызывается для tickets'ов. В этом случае минусом будет то, что при изменении данного вызова для tickets'ов в новых версиях, ваша версия закладки комментариев для прочих ресурсов станет устаревшей.
18 июля 2015, 17:11
0
Не должно — поставил на своем сайте => в результаты сниппета товары minishop'a также попадают.

Покажите, что пишет лог?
13 июля 2015, 07:37
0
Тогда нужно обновить версию php, скорее всего. Инфы и правда маловато..)
13 июля 2015, 07:33
0
modx.pro/help/4088/ — здесь решения на вашу проблему.

В частности:
Открываем файл /core/cache/system_settings/config.cache.php, и заменяем в нем строки:
'compress_css' => '1'
'compress_js' => '1'
на
'compress_css' => '0'
'compress_js' => '0'

Ну и кэш чистим, да.
01 июля 2015, 21:50
+1
Можно попробовать воспользоваться параметром [[[+idx]], обернув его в условия.
Но если есть возможность, то лучше через css.
30 июня 2015, 16:10
+1
Упс. Хром не всегда возвращает алерт о новом сообщении вовремя..)

Классы состоят из тех, которые возвращает сам снипеет (допустим, pdoResources, который по-умолчанию возвращает modResource) — это «основной» класс (его еще можно переназвать при помощи параметра &class), к которому будет происходить join.
Это может быть как modResource, Data и прочее — зависит от сниппета и легко просматривается через &showLog.

Через leftJoin же мы определяем псевдоним таблицы («Image» в примере выше) и далее в коде используем его как префикс у поля, чтобы определить из какой из таблиц выбрать колонку (для selecta, метода склеивания таблиц и тд).
Что до «добавочных» классов при leftJoine — это расширяющие модели xPDO, которые получаются при помощи парсинга папки core/components/Название_класса, в которой уже хранится остальная информация (какая таблица, какие типы данных и так далее).
Тут я вам точнее не скажу, советую почитать вот это или это.
30 июня 2015, 14:19
2
+1
Да, конечно:
&leftJoin=`{
		"Image": {
			"class": "msResourceFile",
			"on": "modResource.id = Image.resource_id AND Image.parent = 0"
		},
		"Thumb": {
			"class": "msResourceFile",
			"on": "Image.id = Thumb.parent AND Thumb.path LIKE '%120x90%'"
		}
	}`

Вот тут более подробная информация и заодно ответ на ваш первый вопрос.
30 июня 2015, 11:00
+1
Да не за что.)

По pdoTools — в основном, здесь и доки. В остальном — разве что еще англоязычные форумы modx'a. Впрочем, тут уже лучше гуглить — точно не скажу.
30 июня 2015, 03:40
+2
1. Или при помощи дополнения pdoField, или при помощи экспериментального парсера, идущего в комплекте с pdoTools — тогда вот таким образом: [[#12.pagetitle]].
Только учтите, что если вызывать эти данные таким образом, а не в рамках, допустим, вашего getResources единым массивом — то это лишний запрос в базе, а если их будет много = все будет тормозить.

2. вам нужно добавить параметр &includeContent=`1`. А вообще — советую перейти на pdoResources, он быстрее будет..)