Александр

Александр

Был в сети 06 февраля 2023, 18:32
Заказы не принимаю
Ну то, что посты не выходят — это понятно, почему.
А админка не то чтобы глючит, просто если ресурс через контекстное меню в дереве публиковать, то ничего не происходит.

В логах тишина.

switch($modx->event->name) {
  case 'OnDocPublished':
    if( $name = $resource->get('pagetitle')){
      $this->modx->log(1, 'resource name autosave = '.$name);
    }
  break;
}
Это понятно. А как его потом использовать по всему сайту (менять контент на страницах, в зависимости от города, например)?

Неужели всем хватает GeoLocation? Компонент-то хороший, но половины городов не знает.
Пытался связаться с автором — не отвечает. Судя по комментариям, расширить базу городов невозможно.
Это реально вообще?
Просто компонент необходим для нескольких проектов, и везде города разные (многих нет в базе GeoLocation). По срокам и цене договориться не проблема, главное понять, можно это реализовать вообще или нет.
Вижу) спасибо огромное!
Если кому нужно, выкладываю скрипты:

Файл getlist.php
<?php
	if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest' || empty($_POST['action'])) {
		return;
	}

	define('MODX_API_MODE', true);

	require dirname(dirname(dirname(__FILE__))) . '/index.php';
	
	$modx->getService('error','error.modError');
	$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
	$modx->setLogTarget('FILE');
	
	
	if ($_POST['action'] == "getList" && isset($_POST['parent'])) {
		//Получаем значение для второго селектора
		$snippetParams = array();
		$snippetParams['parents'] = intval($_POST['parent']);
		$snippetParams['tpl'] = 'option.item';
		//Дописать параметры для сниппета получающего результаты по вкусу			

		$snippetResult = $modx->runSnippet('pdoResources', $snippetParams);

		$result = array($snippetResult, 'success');
	}
	else {
		$result = array('Некорректный запрос', 'error');
	}
	
	if (!empty($result)) {
		die(json_encode($result));
	}

javascript:
<script type="text/javascript">
    	$(document).on('change', 'select[name="selector-1"]', function(e) {
    		if ($(this).val() != '') {
        			$.ajax({
        				type: "POST",
        				url: "assets/ajax/getlist.php",
        				data: {
        				    action: 'getList', 
        				    parent: $("select[name='selector-1']").val()
           		         },

        			success: function(response) {
        				var data = eval(response);
        
        				switch (data[1]) {
        					case 'success':
    						//Если все ок - вставляем результат во второй селектор
    						$("select[name='selector-2']").val("").html("<option value='' selected disabled>Выберите значение из списка</option>" + data[0])
    
        						break;
        							
        					case 'error':
    						//Если не ок - выводим ошибку (используется jGrowl)
        						$.jGrowl(data[0], {theme: 'error', position: 'center'});
        							
        						break;
        						
        					}
        				}
        			});
    		}
    	});
    </script>

Ну и html понятно:
<select name="selector-1">
    <option selected disabled>Выберите услугу</option>
    [[!pdoMenu?
    	&level=`1`
    	&parents=`2`
    	&tplOuter=`@INLINE [[+wrapper]]`
    	&tpl=`@INLINE <option value="[[+id]]">[[+menutitle]]</option>`
    ]]
</select>
<select name="selector-2">
    <option value="" selected disabled>Выберите врача</option>
</select>