Загрузка...

Codes

Codes

Уникальные значения ТВ

<?php
if ((!isset($tvid)) || ($tvid=='')) return;
$out = '';
$r = $modx->db->query('Select distinct(value) from '.$modx->getFullTableName('site_tmplvar_contentvalues').' where tmplvarid='.$tvid.' order by value asc');
while($row = $modx->db->getRow($r)) $out.= str_replace('',$row['value'],$tpl);
return $out;
//[ [UniqueCity? &tvid=`20` &tpl=`<option value="[ +value+]"></option>`]]

FaviconGenerator

<?php
$out='';
$bg = isset($bg) ? $bg : "FFFFFF00";
//apple

$sizes = array('57x57','144x144','72x72','144x144','60x60','120x120','76x76','152x152');
foreach ($sizes as $size){
$as = explode('x',$size);
$out.='<link rel="apple-touch-icon-precomposed" sizes="'.$size.'" href="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w='.$as[0].',h='.$as[1].',f=png,far=C,bg='.$bg)).'"/>'.PHP_EOL;
}

//classic
$sizes = array('32x32','16x16','96x96','128x128','196x196');
foreach ($sizes as $size){
$as = explode('x',$size);
$out.='<link rel="icon" type="image/png" sizes="'.$size.'" href="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w='.$as[0].',h='.$as[1],',f=png,far=C,bg='.$bg)).'"/>'.PHP_EOL;
}

// MS
$out.='<meta name="msapplication-TileColor" content="#FFFFFF" />'.PHP_EOL;
$out.='<meta name="msapplication-TileImage" content="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w=144,h=144,f=png,far=C,bg='.$bg)).'" />'.PHP_EOL;
$sizes = array('70x70','150x150','310x310');
foreach ($sizes as $size){
$as = explode('x',$size);
$out.='<meta name="msapplication-square'.$size.'logo" content="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w='.$as[0].',h='.$as[1].',f=png,far=C,bg='.$bg)).'"/>'.PHP_EOL;
}

//Generate .ico
if ($notico!=''){
$out.='<link rel="shortcut icon" href="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w=16,h=16,f=ico,far=C,bg='.$bg)).'" type="image/x-icon">'.PHP_EOL.'
<link rel="icon" href="'.$modx->runSnippet('phpthumb',array('input'=>$img,'options'=>'w=16,h=16,f=ico,far=C,bg='.$bg)).'" type="image/x-icon">';
}

return $out;

//[ [FaviconGenerator? &img=`[ (client_company_favicon)]`]]

Удаление всех полей в mm_rules

mm_hideFields('longtitle,description,link_attributes,introtext,menutitle,content,alias,parent,menuindex,show_in_menu', '', '19');
mm_hideTabs('settings', '', '19');

Выводт статистической информации на странице

<!-- Memory: [ ^m^], MySQL: [ ^qt^], [ ^q^] request(s), PHP: [ ^p^], total: [ ^t^], document retrieved from [ ^s^] -->

Assets - постоянное обновление файлов js/css

<?php
if ((!isset($files) || empty($files)) && (!isset($folders) || empty($folders))){
		return '';
	}
if (!function_exists('set_assets_files')){
	function set_assets_files($files,$exceptions){		
		$output = '';
		if (!$files) return;
		if (is_string($files)) $files = array_map('trim',array_filter(explode(',',$files)));
		foreach($files as $file) {
		$file = trim($file);
		if (In_array($file,$exceptions)) continue;
		$filename = MODX_BASE_PATH . $file;
		if (file_exists($filename)){
			$ext = pathinfo($filename, PATHINFO_EXTENSION);
			$time = file_exists($filename) ? filectime($filename) : 0;				
				switch($ext) {
					case 'js':
					default:
						$output .= '<script src="'.$file.'?v='.$time.'"></script>';
						break;

					case 'css':
						$output .= '<link rel="stylesheet" href="'.$file.'?v='.$time.'">';
						break;
				}
			}
		}
		return $output;
	}
}
$output = '';

if ((isset($exceptions)) && (!empty($exceptions))){
	$exceptions = array_map('trim',array_filter(explode(',',$exceptions)));
} else $exceptions = array();

if ((isset($files)) && !empty($files)){
	$output.=set_assets_files($files,$exceptions);	
}
if ((isset($folders)) && !empty($folders)){
	$folders = explode(',',$folders);
	foreach($folders as $folder) {
		$dir = scandir(MODX_BASE_PATH.$folder);	
		$files = [];
		foreach($dir as $file){
			if (($file!='.') && ($file!='..')) $files[] = $folder.'/'.$file;
		}
	}
	$output.=set_assets_files($files,$exceptions);	
}
return $output;

// [ ! assets? &files=`/site/css/main.min.css` &folders=`assets/`! ]

MODxAPI - работа с документами

<?php
include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modResource.php");
//Создание
$doc = new modResource($modx);							
$doc->create($fields);
$id = $doc->save(true, false);
//Редактирование
$doc = new modResource($modx);
$doc->edit($id);
foreach($fields as $key=>$val) $doc->set($key, $val);
$doc->save(true, false);

Вызов evo из внешненго файла:

<?php
define('MODX_API_MODE', true);
define('IN_MANAGER_MODE', false);	
include_once("index.php");	
$modx->db->connect();	
if (empty ($modx->config)) {
	$modx->getSettings();
}

CheckSpamTime

<?php
if ($_SESSION['now'])
{
	$_SESSION['lt'] = $_SESSION['now'];	
}
$_SESSION['now'] = microtime(true);

if (!function_exists('checkSpamTime')) 
{
	function checkSpamTime(&$fields)	
	{
		if (!preg_match('/[\p{Cyrillic}]/u', $fields['message'])) exit();	
		$time = $_SESSION['now'] - $_SESSION['lt'];		
		if (($time<2) or ($time>1440)) exit(); //Здесь проверяем сколько секунд прошло с момента точки входа. 5 - с запасом, можно ставить и единицу
	}
}
// в eForm вставляем &eFormOnBeforeMailSent=`checkSpamTime`

Текущий алисас документа

$modx->documentIdentifier;

Событие загрузки страницы JS

document.addEventListener('DOMContentLoaded', function(){

});

Отправка формы AJAX-ом

$(document).on("submit",".eform form",function(e){
	e.preventDefault();
	var formid = '#'+$(this).closest('.eform').attr('id');
	console.log(formid);
	var err = false;
	$(formid+' form [required="required"]').each(function() {
		if (!$(this).val()){
			$(this).addClass('error');
			err = true;
		}
	});		
	if (err) {
		setTimeout(function(){
			$('.error').removeClass('error');			
		}, 3000);
		return;
	}				
	
	
	var obj = $(this);		
	var formData = new FormData();
	$.each($(obj).find("input[type='file']"), function(i, tag) {		
		$.each($(tag)[0].files, function(i, file) {
			formData.append(tag.name, file);
		});
	});
	var params = $(obj).serializeArray();
	$.each(params, function (i, val) {
		formData.append(val.name, val.value);
	});		
	
	$.ajax({
		type: 'post',
		url: location.href,
		data: formData,			
		processData: false,
		contentType: false,
		success: function(result){				
			var data = $(result).filter(formid).html();				
			$(formid).html(data);
		}
	});
});

Оставить комментарий

только без мата, пожалуйста)

Свяжитесь со мной

удобным способом

Связь

+7 (991) 7-444-515

или рассчитайте стоимость сайта онлайн и отправьте заявку

или смело пишите в телеграм @dvakotaby

или пришлите задание на почту alexey@liber.pro

и я предоставлю вам исчерпывающую информацию, как технического, так и финансового характера