Григорий Коленько

Григорий Коленько

С нами с 26 апреля 2013; Место в рейтинге пользователей: #219
Григорий Коленько
29 февраля 2016, 12:28
+3
Обычный скрипт для работы с DB вообще
Григорий Коленько
29 февраля 2016, 12:26
0
Всплывающее окно это возникает, когда какие-то проблемы с сессиями, скорее всего у тебя в браузере две сессии сохранены в куки и msearch или pdotools не могут найти конфиг, сохраненный в таблице сессий. Разлогинь всех пользователей в админке и почисти куки в браузере.
Григорий Коленько
26 февраля 2016, 18:47
0
Класс. Идея Василию. Добавить раздел «вопросы за 300». С автоматической отправкой победителю выигрыша ) и 10% на развития портала.
Григорий Коленько
26 февраля 2016, 15:12
0
Лексиконы же есть. Они обрабатываются в зависимости от cultureKey прописанного в контексте
Григорий Коленько
26 февраля 2016, 12:55
2
0
Да, знаю. У меня для этого есть решение. Во первых мне очень не нравится, что этот сниппет работает через TV, поэтому я пишу алиасы ресурсов в properties ресурса. Зачем в бейбл вообще пользуются TV, мне не ясно.
Плагин:
<?php
switch ( $modx->event->name ) {
	case'OnDocFormRender':
	case 'OnDocFormSave':
		if ( $mode == 'new' && $modx->event->name == 'OnDocFormRender' ) {
			break;
		}
		$tvVar = $resource->getTVValue( 'babelLanguageLinks' );
		//web:92;ru:50

		$tvVarArr = explode( ";", $tvVar );

		$result  = array();
		$pagesid = array();
		foreach ( $tvVarArr as $v ) {
			$tmp               = explode( ":", $v );
			$result[ $tmp[0] ] = $tmp[1];
			$pagesid[]         = $tmp[1];
		}

		if ( $pages = $modx->getCollection( 'modResource', array( "id:IN" => $pagesid ) ) ) {
			foreach ( $pages as $page ) {
				$page->setProperties( array( "aliases" => $result ), 'babel' );
				$page->save();

			}

		}


		break;

}

И снипет, который расставляет плейсхолдеры.
<?php
$ids = explode( ",", $modx->getOption( 'input', $scriptProperties ) );

$context       = $modx->getOption( 'context', $scriptProperties, $modx->context->key );
$toPlaceholder = $modx->getOption( 'toPlaceholder', $scriptProperties, true );


if ( count( $ids ) == 1 && $modx->resource == $ids[0] ) {
	//если ресурс тот же что нам надо, то кончаем быстро :)
	$properties = $modx->resource->getProperties( "babel" );
	if ( isset( $toPlaceholder ) ) {
		$modx->setPlaceholder( "id_$ids[0]", $properties['aliases'][ $ids[0] ] );

	} else {
		return $properties;
	}

	return;
} else {

	$pages = $modx->getCollection( "modResource", array(
		"id:IN" => $ids
	) );
	$result = array();
	foreach ( $pages as $page ) {

		$properties = $page->getProperties( "babel" );

		if ( $toPlaceholder ) {
			$id               = $page->get( "id" );
			$result["id_$id"] = $properties['aliases'][ $context ];

		} else {
			$result[] = $properties['aliases'][ $context ];
		}
	}
	if ( $toPlaceholder ) {
		$modx->setPlaceholders( $result );

		return;
	} else {

		return implode( ",", $result );
	}

}

return;

Т.е. ты пишешь, к примеру:
[[getBabelAliasId?&input=`15,4`]]
и можешь вызывать сниппет так:
[[pdoMenu?
                &parents=`[[+id_4]]`
                &outerClass=`menu-before-outer`
                &tplHere=`menuRowHere`
                &tpl=`menuRow`
                &includeTVs=`after_menutitle`
                &tvPrefix=``
                ]]

 [[pdoMenu?
                        &parents=`[[+id_15]]`
                        &outerClass=`menu-main-outer`
                        &tplHere=`menuRowHere`
                        &tpl=`menuRow`
                        ]]
В результате, ты всегда в плейсхолдере получаешь айди ресурса из текущего контекста. Без лишних запросов
Григорий Коленько
26 февраля 2016, 01:55
0
Бейбл установлен? Если да, то вот, как вариант rtfm.modx.com/extras/revo/babel/babel.babeltranslation
Григорий Коленько
25 февраля 2016, 16:33
0
Если включаешь чпу, то в htaccess раскомментировать пару строчек надо. Я уже не помню что там. У меня свой, но всю инфу можешь найти в официальном мануале modx по поводу чпу
Григорий Коленько
25 февраля 2016, 15:14
0
Настройки контекстов прописал?
Григорий Коленько
15 февраля 2016, 18:11
0
посмотри, как это сделано в Ajax form. Настройки сниппета хранятся в сессии под ключом сгенерированным из настроек. Ключ в форме передаётся на обработку через скрытый инпут.
Григорий Коленько
15 февраля 2016, 16:55
+1
Подробно не смотрел, но подозреваю, что тебе поможет:
img{max-width:100%; height: auto;}
Можешь обернуть это в media queries для мобильного только.
Григорий Коленько
10 февраля 2016, 02:46
0
В общем копал-копал, пока не понял, что tinymcerte конвертирует зачем-то именно так, и контент превращается в кашу из символов. Пришлось все ресурсы перелопатить и дописать в конфиге tinymcerte 1 строчку, чтобы было нормально.
Все что писал выше не актуально. Не на то грешил. Все работает теперь как надо :)
Григорий Коленько
10 февраля 2016, 01:17
0
Поразглядывая таблицу, все-таки понял, что символы все-таки подменяет на стандартные английские. Вот только если символ на конце слова, то начинаются проблемы
Григорий Коленько
10 февраля 2016, 00:32
0
вырезается и заменяется на символы из английского
Не, это не делается оказывается :)
Григорий Коленько
10 февраля 2016, 00:19
0
Вообще оказывается чешские слова добавляются как-то странно.

Хорошо, что на написание символов поиск не обращает внимание, и большая часть из них (áčďéěíňóřšťúůýž) вырезается и заменяется на символы из английского, но к примеру на первом скрине, в третьей строке сверху слово «signováno», по нему теперь ничего не найдет.



Григорий Коленько
09 февраля 2016, 23:57
0
Этот способ не работает, почему-то если попробовать присвоить «Tichý František». Ничего в таблицу не пишется
Григорий Коленько
09 февраля 2016, 23:17
0
Вопрос, а зачем, если (как я понял из примера Василия) уже при вызове туда передается объект со страницей?
Т.е. опять же как я понимаю, из примера, каждый раз когда ресурс добавляется в индекс, срабатывает «mse2OnBeforeSearchIndex»?
$resource = $modx->getObject('modResource', $row['id']);
Григорий Коленько
26 января 2016, 12:30
0
Лучше свой сниппет написать с выводом pdofetch
Григорий Коленько
25 января 2016, 15:33
1
0
Хорошо. Это я правда у Василия скопировал. Туда тоже наверное надо написать
bezumkin.ru/modx/minishop2/admin/644/#comment-13896