Павел Гвоздь

Павел Гвоздь

С нами с 31 мая 2015; Место в рейтинге пользователей: #2
Павел Гвоздь
01 сентября 2015, 07:20
0
+ файлы, я так понимаю, можно легко перенести в другой проект?
Павел Гвоздь
30 августа 2015, 18:30
0
А "+" не забыли?

/users/{user_firstname:[A-Za-z0-9]+}/
Павел Гвоздь
29 августа 2015, 20:36
+3
Для не особо больших сайтов вот эта штука с сообщением для конкретного пользователя в некоторых случаях — просто песня!
Павел Гвоздь
27 августа 2015, 16:24
+2
Удачного отпуска! :)
Павел Гвоздь
27 августа 2015, 15:25
0
Видел я его. Не подошёл он мне.
Павел Гвоздь
26 августа 2015, 16:50
+1
Сам лично видел что-то подобное:
[[#[[#[[#[[*id]].parent:ne=`0`:then=`
Павел Гвоздь
26 августа 2015, 10:41
+2
Супер! Этого очень не хватало в debugParser!
Тоже, кстати, уже 2ой сайт делаю исключительно на Fenom! Счастью нет предела, до сих пор вызывает радость то, насколько грамотно можно построить структуру шаблона с использованием шаблонизатора, а не тормозных MODX тегов!
Павел Гвоздь
24 августа 2015, 22:09
+1
Василий, я конечно не в тему поинтересуюсь, но создавать отдельный топик тоже не хочется. Ты как-то писал о том, что в будущем сделаешь курс по ExtJS, я очень жду до сих пор и хотелось бы узнать — а ждать ли вообще?)
Павел Гвоздь
24 августа 2015, 13:51
1
0
Всё-же немного поторопился публиковать сниппет. Перед последней строкой return $return; должно быть вот это:
$MobileDetect->saveSettings( $return );

Итого, более правильный код сниппета вот:
<?php
if( !$MobileDetect = $modx->getService('mobiledetect', 'MobileDetect', MODX_CORE_PATH . 'components/mobiledetect/') ) {return;}


$key = $MobileDetect->config['force_browser_variable'];

$device = !empty($_GET) && array_key_exists($key, $_GET)
		? $modx->stripTags($_GET[$key])
		: '';

if( empty($device) )
{
	$device = $MobileDetect->getSettings();
}

if( empty($device) )
{
	$detector = $MobileDetect->getDetector();
	
	if( $detector->isMobile() )
	{
		$return = 'mobile';
	}
	else {
		$return = 'standard';
	}
}
else {
	$return = $device;
}

$MobileDetect->saveSettings( $return ); // ставим печеньку

return $return;

Советую, для корректной работы с мультиязыками использовать системную настройку «session_cookie_path». Значение данной настройки должно быть "/" (без кавычек).
Павел Гвоздь
24 августа 2015, 12:49
0
Как будет время покопаю, думаю. Пока решил проблему, вроде, небольшим костылём.
Павел Гвоздь
24 августа 2015, 12:48
1
+1
Отключил в настройках плагин MobileDetect. Использую сниппет, который определяет средствами MobileDetect девайс, в сочетании с Феном. В начале чанка «layout» вставил такой код:
<?php
if( !$MobileDetect = $modx->getService('mobiledetect', 'MobileDetect', MODX_CORE_PATH . 'components/mobiledetect/') ) {return;}


$key = $MobileDetect->config['force_browser_variable'];

$device = !empty($_GET) && array_key_exists($key, $_GET)
		? $modx->stripTags($_GET[$key])
		: '';

if( empty($device) )
{
	$device = $MobileDetect->getSettings();
}

if( empty($device) )
{
	$detector = $MobileDetect->getDetector();
	
	if( $detector->isMobile() )
	{
		$return = 'mobile';
	}
	else {
		$return = 'standard';
	}
}
else {
	$return = $device;
}

$MobileDetect->saveSettings( $return ); // ставим печеньку

return $return;
Внимание! Сниппет будет работать только с установленным компонентом MobileDetect.

Советую, для корректной работы с мультиязыками использовать системную настройку «session_cookie_path». Значение данной настройки должно быть "/" (без кавычек).
Павел Гвоздь
24 августа 2015, 10:49
0
Если кто-то сталкивался с этим, посоветуйте пожалуйста, как решить можно. Это очень важно, друзья, в ближайшее время.
Павел Гвоздь
23 августа 2015, 16:01
0
Пример обработки JSON поля средствами Fenom:
{set $video_json = $modx->fromJSON($_modx->resource.video)}

{if !empty($video_json['video'])}
	<iframe width="860" height="650" src="{$video_json['video']}" frameborder="0" allowfullscreen></iframe>
{else}
	Видео нет
{/if}
Павел Гвоздь
23 августа 2015, 09:04
+2
Обязательно чуть позже напишу пример того, как средствами Феном вывести видео на странице.
Павел Гвоздь
23 августа 2015, 09:01
0
Panorama так и не понимает ссылки такого вида. По поводу «зачем 2 класса», Вы сами ответили на свой вопрос. Один для того, если не введен ключ апи, второй чтобы получать название и описание.

По полям, которые ниже поля с видео — эти поля каждый создает сам, ровно как и поле с типом videoGallery, поэтому вместо «заполняется автоматически», каждый для себя может написать что угодно. А может вообще не создавать эти поля, а выводить ту-же самую информацию используя возможности Fenom. Фактически, эти 4 поля каждый создает (или не создаёт) сам для своего же удобства. Кому удобнее хранить всё в одном json поле — обходится только первым полем. Единственное я скрыл поле с массивом json, наверное всё же нужно было оставить его для наглядности того, что оно есть?

Данные запрашиваются при событии jquery — «input». А при сохранении срабатывает плагин, который удаляет старые не используемые изображения из папки, оставляя только то, что используется в Json массиве в поле с типом «videoGallery».
Павел Гвоздь
21 августа 2015, 14:09
0
Супер! Спасибо, Василий!
Павел Гвоздь
21 августа 2015, 13:49
0
Можешь не верить, но я задумываюсь. По крайней мере стараюсь.

Перед тем, как ты ответил, я обновил предыдущий пост и написал, как раз о том, о чём написал ты. Дело не в этом, Василий, я это прежде всего проверил.

Вот так тоже самое:
{$_modx->runSnippet('MinifyX', [
	'minifyCss'			=> 1,
	'registerCss'		=> '1',
	'cssSources'		=> '
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/bootstrap.min.css,
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/add.css
	',
	'minifyJs'			=> 1,
	'registerJs'		=> '1',
	'jsSources'			=> '
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/js/bootstrap.min.js
	'
])}
Павел Гвоздь
21 августа 2015, 13:39
1
0
Вот так если Minifyx вызвать в чанке Theme.BootstrapHead, то воспроизводится:

{$_modx->runSnippet('MinifyX', [
	'minifyCss'			=> 1,
	'cssPlaceholder'	=> 'minifyxCss',
	'registerCss'		=> 'placeholder',
	'cssSources'		=> '
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/bootstrap.min.css,
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/css/add.css
	',
	'minifyJs'			=> 1,
	'jsPlaceholder'		=> 'minifyxJs',
	'registerJs'		=> 'placeholder',
	'jsSources'			=> '
		' ~ $_modx->config.assets_url ~ 'components/themebootstrap/js/bootstrap.min.js
	'
])}

{$_modx->getPlaceholder('minifyxCss')}
{$_modx->getPlaceholder('minifyxJs')}

Обновлено: Но дело не в cssPlaceholder/jsPlaceholder, и без них тоже самое происходит.
Павел Гвоздь
21 августа 2015, 10:50
0
Ещё, если в настройках указано «cache_resource=1» (по сути, по-умолчанию), то при кешированном вызове сниппета через $_modx->runSnippet при первой загрузке после обновлённого кеша сниппет отрабатывает, а при последующих он как-будто вообще не выполняется. Даже из кеша. Это, я так понимаю, точно баг?