Персональный разработчик Вашего сайта.
Модули. Скрипты. Плагины.

ParserGoods Outside

Парсер товаров с другого сайта для Modx Revo.

Вы - дистрибьютор товаров известной марки. У Вас есть свой интернет-магазин, который надо заполнять актуальной информацией о товарах, ценах, новинках. Беспрерывно следить и просматривать официальный сайт данной марки с тысячами товаров, чтобы ничего не упустить. Автоматическая загрузка прайса в базу - это хорошо, но обновляется лишь та информация, что получена внутри Вашей компании, склада. А что делать, если постоянно мониторить обновления официального сайта производителя нет времени и желания?

Решение одно - автоматически выводить информацию с того сайта на свой, парсить карточки товаров.

Вот мой парсер товаров для Modx Revo. Достаточно просто установить сниппет для вывода превью товаров в Ваш шаблон - каталог, и плагин для вывода карточек товара на отдельных страницах. Вам ничего не придётся больше делать, товары с официального сайта сами будут показываться у Вас при загрузке страниц.

Парсируем список категорий стороннего сайта

Парсируем каждую категорию отдельно

Выводим список товаров на наш сайт

Парсируем детальную информацию товара

Выводим детальную информацию товара

Сниппет - выводит превью товаров в категории

Плагин - выводит товар на отдельную страницу

А что если недостаточно просто вывести товары, как есть? Ведь Ваша главная цель - прибыль. О какой прибыли можно говорить, если продавать товар по себестоимости?

Добавить наценку в 18% от стоимости, например. А лучше 20%. И вывести клиенту товары уже не с первичной ценой, а с наценкой. Или лучше вообще заменить эти цены на свои. В плагине есть два варианта. Первый: в процессе парсинга цены товара добавлять к первоначальной стоимости 18-20% и более процентов от неё, и выводить цену на сайт. Второй: добавляем возможность загрузки собственного прайса Excel в базу данных в отдельную таблицу, содержащую столбцы id, name,price. Далее, при парсинге сайта производителя название товара/модели сравнивается с названием товара/модели из прайса (базы Mysql Modx) и в случае успеха - выводится цена из прайса. Кстати, на неё тоже можно повесить проценты.

Вывели товары, заменили цену - отлично! Но вот картинки? что же делать с картинками, если хочется "пометить" их как свои собственные? А что если у какого-то товара отсутствует изображение? Что тогда делать?

Третий вариант - парсер с ценой, загрузкой прайса, процентами и добавлением Вашего собственного водяного знака, а также подбором и присваиванием картинок для моделей товаров со схожими названиями. Парсим товары, берём картинку и пропускаем её через нашу функцию добавления watermark. Далее смотрим, есть ли у товара картинка, если нет, присваиваем ему картинку подобной модели. И всё это делает скрипт. Без Вашего участия! Автоматически.

Ниже прикрепляю архив с файлами плагина. Установка и настройка потребует некоторых знаний программирования на PHP и администрирования MODX.

Плагин когда-то писался под конкретный объект и цели, возможно, для Ваших нужд надо будет что-то поменять в коде.

Архив

Файл loadexl.php устанавливается в корне сайта, к нему будут идти Ajax запросы для импорта Excel

loadexl.php

<?php
// Create by pl.web-master - Lu_Smith
// for Modx Revolution 2.4.0-pl
// My mail - pl.web-master@yandex.ru

//include ('/core/config/config.inc.php');
//$db = mysql_connect('localhost','root','');

date_default_timezone_set('Europe/Moscow');

$db = mysql_connect('localhost','login','password') or die('Не могу соединиться с базой, проверьте пароль, логин, название базы!');
mysql_select_db('db_name', $db);


	set_time_limit(60);
	$uploaddir = 'temp/';
	
	function translit($str, $bool=0) {
	   $mess = Array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e-', 'ю' => 'yu', 'я' => 'ya', 'А' => 'a', 'Б' => 'b', 'В' => 'v', 'Г' => 'g', 'Д' => 'd', 'Е' => 'e', 'Ё' => 'jo', 'Ж' => 'zh', 'З' => 'z', 'И' => 'i', 'Й' => 'j', 'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u', 'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch', 'Ъ' => '', 'Ы' => 'y', 'Ь' => '', 'Э' => 'e-', 'Ю' => 'yu', 'Я' => 'ya', ' ' => '-');
	   $c_str = preg_split('/s+/is', $str);
	   $str = trim("$c_str[0] $c_str[1]");   
	   if($bool) {
			$mess = array_flip($mess);
			return $mess[$str]; 
		}
	   $str = preg_replace('/[^a-zА-Яа-яёЁ0-9s-]/is', ' ', strtolower($str));
	   $str = preg_replace('/s+/', ' ', $str);   
	   foreach($mess as $key => $val) {
			$str = preg_replace("/$key/is", $val, $str);
			//$str = preg_replace('/'.ucfirst($key).'/s', ucfirst($val), $str);
	   }
	   return $str;	
	}

// объявляем объект(файл) и работаем с ним 
	
function numsheets($fn){
	if(isset($fn)) {
		include_once 'Classes/PHPExcel/IOFactory.php';
		$objPHPExcel = PHPExcel_IOFactory::load($fn);
		return $objPHPExcel;
	}
}

// превращаем данные из Excel в массив
  function getXLS($obj, $numsheet){
	$objPHPExcel = $obj;
    $objPHPExcel->setActiveSheetIndex($numsheet);
    $aSheet = $objPHPExcel->getActiveSheet();
 
    //этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
    $array = array();
    //получим итератор строки и пройдемся по нему циклом
    foreach($aSheet->getRowIterator() as $row){
      //получим итератор ячеек текущей строки
      $cellIterator = $row->getCellIterator();
      //пройдемся циклом по ячейкам строки
      //этот массив будет содержать значения каждой отдельной строки
      $item = array();
      foreach($cellIterator as $cell){
        //заносим значения ячеек одной строки в отдельный массив
		
        //array_push($item, iconv('utf-8', 'cp1251', $cell->getCalculatedValue()));
		array_push($item, mb_convert_encoding($cell->getCalculatedValue(), "UTF-8", "auto"));
      }
      //заносим массив со значениями ячеек отдельной строки в "общий массив строк"
      array_push($array, $item);
    }
    return $array;
  }

// удалить файл

if($_POST['delete_file']) {
	unlink($_POST['delete_file']);
	print('<p style="font-weight: bold; color: #0000ff;">Файл '.$_POST['delete_file'].' удалён, перезагрузите страницу.</p>');
}

// загрузка выбранного листа из файла MAZ

if(isset($_POST['maz_numsheet'])) { 
	$fn = $_POST['maz_objPHPExcel1'];
	$objPHPExcel1 = numsheets($fn);
	$numsheet = $_POST['maz_numsheet'];
	$countsheet = $_POST['maz_alls'];
	$xlsData_maz = getXLS($objPHPExcel1, $numsheet); //извлекаем данные из XLS

	foreach($xlsData_maz as $xlsD_item_maz) {
		if($xlsD_item_maz[0] != '' || $xlsD_item_maz[0] != false) {

			$id = $xlsD_item_maz[0];
			$id = $id;
			$imya_maz = $xlsD_item_maz[1];
			$imya_maz = $imya_maz;
			$cena = $xlsD_item_maz[2];
			$cena = trim($cena);
			$cena = str_replace(',', '', $cena);
			$cena = str_replace(' ', '', $cena);
			
			//print($cena);
			
			$contentid_maz = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `modx_maz_price` WHERE `name` LIKE '%$imya_maz%' ORDER BY `id` DESC LIMIT 1"));
			
			$arr_val_maz = $xlsD_item_maz;
			
			if($_POST['check_nalog'] == 'yes') {
				$nalog = $cena * (0.18);
				$cena = $cena + $nalog;
				
				array_pop($arr_val_maz); array_push($arr_val_maz, $cena);
				
			} else {}
			
			if ( $contentid_maz['id'] > 0) {
				$ct = 0;
				// обновление описания, мета, ссылки товара
				mysql_query ("UPDATE `modx_maz_price` SET `cena` = '$cena' WHERE `name` LIKE '%$imya_maz%'");

				// обновление прайса MAZ	
				$c1++;				
				
			} else {
				$c2 = 0;
			
				// цена нового товара MAZ
				mysql_query ("INSERT INTO `modx_maz_price` (`id`, `name`, `cena`) VALUES ('$id', '$imya_maz', '$cena')");
				$c2++;
			}

		}
		$mess1 = ($c1 > 0) ? '<p style="font-weight: bold; color: #9dcb53;">Обновление '.$c1.' прайса МАЗ прошло успешно! Можете обновить следующий лист!</p>' : '';
		$mess2 = ($c2 > 0) ? '<p style="font-weight: bold; color: #9dcb53;">Загрузка '.$c2.' прайса МАЗ прошла успешно! Можете загрузить следующий лист!</p>' : '';
	}
	$mess = $mess1.$mess2;
	print($mess);
}

//сканируем папку с excel файлами

function exl_dir_f($uploaddir) {
	$name_dir = scandir($uploaddir);
	if(sizeof($name_dir) > 0) {
	$exl_dir_file = '';
		for($i=2; $i<=(sizeof($name_dir)-1); $i++) {
			$url_f = $uploaddir.$name_dir[$i];
			$num_sh = numsheets($url_f);
			$count_sh = $num_sh->getSheetCount();
			$inpt_1 = '';
			$c = 0;
			foreach ($num_sh->getWorksheetIterator() as $worksheet) {
				$worksheetTitle = $worksheet->getTitle();
					$inpt_1 .= '<button class="shh" name="numsheet" value="'.$c.'" type="button" id="numsheet'.$c.'">'.$worksheetTitle.'</button>';
				$c++;
			}
			if(strstr($url_f, 'price_maz.')) {
				$exl_dir_file_maz .= '<p>Залить прайс для MAZ c налогом 18%</p><div class="excelshtl_maz" id="maz_exl-'.($i-1).'" style="margin: 7px 0 9px;"><input name="maz_objPHPExcel1" value="'.$url_f.'" type="hidden" class="maz_objPHPExcel1" /><input name="maz_alls" value="'.$count_sh.'" type="hidden" class="maz_alls" /><p>'.($i-1).'. <a href="'.$url_f.'">'.$name_dir[$i].'</a></p><p>'.$inpt_1.'<button class="delete_file" name="delete_file" value="'.$url_f.'">Удалить файл</button></p></div>';
			} 
		}
		
		$exl_dir_file1 = '<div class="excelshtload">'.$mess.'<p style="margin: 9px 0 6px;">Или выберите название/номер листа Excel (кнопки ниже), товары с которого необходимо залить на сайт. Нумерация листов начинается с «1». Товары будут залиты в текущую папку (категория).</p><p>Номер кнопки соответствует порядковому номеру листа в Excel. Пожалуйста, будьте внимательны при загрузке, значения полей и расположение столбцов должно соответствовать примеру. От этого зависит как и куда загрузятся значения из икселя в базу. Если вышла ошибка, возможно, загружаемый лист пуст.</p>'.strval($exl_dir_file).strval($exl_dir_file_maz).'</div>';
		
	} else {
		 $exl_dir_file1 = '<p>В папке пока нет excel файлов для загрузки</p>';
	}	
		return $exl_dir_file1;
}

$exl_dir_l = exl_dir_f($uploaddir);


//загружаем файл excel
if($_FILES['userfile']) {

	$fnt = $uploaddir.$_FILES['userfile']['name'];
	if (move_uploaded_file($_FILES['userfile']['tmp_name'], $fnt)) {
		$countsheet_q = '1';
		$exl_dir_l = exl_dir_f($uploaddir);
		print "<p style='font-weight: bold; color: #9dcb53;' id='scsc'>Файл успешно загружен в папку ".$fnt."!</p><div id='excelload'>Выберите файл и подождите пока он загрузится: <input name='userfile' id='upload_f' type='file' value='' />".$mess.$exl_dir_l."</div>";
	} else {
		$exl_dir_l = exl_dir_f($uploaddir);
		print "<p style='font-weight: bold; color: #ff0000;' id='err'>Не удалось загрузить файл! Проверьте, существует ли папка для загрузки, размер файла не должен превышать 500КБ, расширение должно быть .xls или .xlsx</p><div id='excelload'>Выберите файл и подождите пока он загрузится: <input name='userfile' id='upload_f' type='file' value='' />".$mess.$exl_dir_l."</div>";
	}
}

$mess = $mess ? '<p>'.$mess.' Можете загрузить следующий лист!</p>' : '';
$html = $mess.'<div class="m"></div><div id="excelload"><div id="n"> Выберите файл и подождите пока он загрузится: <input name="userfile" id="upload_f" type="file" value="" />'.$exl_dir_l.'</div></div>';


$urlcur = $_SERVER['REQUEST_URI'];

Файл excel_onload_goods_maz.php добавляется в плагины сайта, просто создайте новый плагин в разделе редактирования тв/сниппетов/плагинов и вставьте код из данного файла. Отвечает за проверку наличия Excel файлов и вывода их на открываемую страницу.

excel_onload_goods_maz.php

<?php
// Create by Lu_Smith
// for Modx Revolution 2.4.0-pl
// My mail - pl.web-master@yandex.ru

//include ('/core/config/config.inc.php');
//$db = mysql_connect('localhost','root','');

date_default_timezone_set('Europe/Moscow');

$db = mysql_connect('localhost','login','password') or die('Не могу соединиться с базой, проверьте пароль, логин, название базы!');
mysql_select_db('db_name', $db);


	set_time_limit(60);
	$uploaddir = '../temp/';
	
	function translit($str, $bool=0) {
	   $mess = Array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e-', 'ю' => 'yu', 'я' => 'ya', 'А' => 'a', 'Б' => 'b', 'В' => 'v', 'Г' => 'g', 'Д' => 'd', 'Е' => 'e', 'Ё' => 'jo', 'Ж' => 'zh', 'З' => 'z', 'И' => 'i', 'Й' => 'j', 'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u', 'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch', 'Ъ' => '', 'Ы' => 'y', 'Ь' => '', 'Э' => 'e-', 'Ю' => 'yu', 'Я' => 'ya', ' ' => '-');
	   $c_str = preg_split('/s+/is', $str);
	   $str = trim("$c_str[0] $c_str[1]");   
	   if($bool) {
			$mess = array_flip($mess);
			return $mess[$str]; 
		}
	   $str = preg_replace('/[^a-zА-Яа-яёЁ0-9s-]/is', ' ', strtolower($str));
	   $str = preg_replace('/s+/', ' ', $str);   
	   foreach($mess as $key => $val) {
			$str = preg_replace("/$key/is", $val, $str);
			//$str = preg_replace('/'.ucfirst($key).'/s', ucfirst($val), $str);
	   }
	   return $str;	
	}

// объявляем объект(файл) и работаем с ним 
	
function numsheets($fn){
	if(isset($fn)) {
		include_once '../Classes/PHPExcel/IOFactory.php';
		$objPHPExcel = PHPExcel_IOFactory::load($fn);
		return $objPHPExcel;
	}
}

// превращаем данные из Excel в массив
  function getXLS($obj, $numsheet){
	$objPHPExcel = $obj;
    $objPHPExcel->setActiveSheetIndex($numsheet);
    $aSheet = $objPHPExcel->getActiveSheet();
 
    //этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
    $array = array();
    //получим итератор строки и пройдемся по нему циклом
    foreach($aSheet->getRowIterator() as $row){
      //получим итератор ячеек текущей строки
      $cellIterator = $row->getCellIterator();
      //пройдемся циклом по ячейкам строки
      //этот массив будет содержать значения каждой отдельной строки
      $item = array();
      foreach($cellIterator as $cell){
        //заносим значения ячеек одной строки в отдельный массив
        array_push($item, iconv('utf-8', 'cp1251', $cell->getCalculatedValue()));
      }
      //заносим массив со значениями ячеек отдельной строки в "общий массив строк"
      array_push($array, $item);
    }
    return $array;
  }
  

// загрузка выбранного листа из файла
if(isset($_POST['numsheet'])) {
	$fn = $_POST['objPHPExcel1'];
	$objPHPExcel1 = numsheets($fn);
	$numsheet = $_POST['numsheet'];
	$countsheet = $_POST['alls'];
	$xlsData = getXLS($objPHPExcel1, $numsheet); //извлекаем данные из XLS
	//print_r($xlsData);

	foreach($xlsData as $xlsD_item) {
		if($xlsD_item[0] != '' || $xlsD_item[0] != false) {

			$imya = $xlsD_item[0];
			$imya = $imya;
			$opisanie = $xlsD_item[15];
			$opisanie = iconv('cp1251', 'UTF-8', $opisanie);
			$parentID = $_POST['parentID'];
			//$parentID = '100';
			
			$contentid = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `modx_site_content` WHERE `pagetitle` LIKE '%$imya%' AND `parent` = '$parentID' ORDER BY `id` DESC LIMIT 1"));
			$pagetitleparent = mysql_fetch_assoc(mysql_query("SELECT `pagetitle` FROM `modx_site_content` WHERE `id` = '$parentID'"));
			$pagetitleparent = $pagetitleparent['pagetitle'];
			$pagetitleparentUPCASE = mb_strtoupper($pagetitleparent, "utf-8");
				
			//массив ID дополнительных полей характеристик
			$arrNameTV = array('86', '9', '105', '14', '11', '104', '12', '106', '18', '19', '16', '15', '13', '87');
			
			//подготовка исходного массива к слиянию с  $arrNameTV в ассоциативный массив - обрезаем первые два элемента и последний элемент, добавляем пустой элемент в конец массива $arr_val
			$arr_val = $xlsD_item;
			array_shift($arr_val);array_shift($arr_val); array_pop($arr_val);
			if($parentID == '362' || $parentID == '363') {
				array_push($arr_val, $pagetitleparentUPCASE);
			} else {
				array_push($arr_val, '');
			}

			// слияние массивов
			$arr_val_h = array_combine ($arrNameTV, $arr_val);
			
			if ( $contentid['id'] > 0) {
			
				// обновление описания, мета, ссылки товара
				mysql_query ("UPDATE `modx_site_content` SET `content` = '$opisanie' WHERE `pagetitle` LIKE '%$imya%' AND `parent` = '$parentID'");

				// обновление характеристик товара

				//вписываем характеристики из икселя в соответствующие тв поля
				foreach($arr_val_h as $ant_item => $ant_val) {
					if($ant_val != '') {
						mysql_query ("UPDATE `modx_site_tmplvar_contentvalues` SET `value` = '".$ant_val."' WHERE `tmplvarid` = '".$ant_item."' AND `contentid` = '".$contentid['id']."'");
					}
				}
					$mess = "Загрузка прошла успешно!";
				
			} else {
				$imya_f = $pagetitleparent.' '.$imya;
				$parentURL = mysql_fetch_assoc(mysql_query("SELECT `uri`, `pagetitle` FROM `modx_site_content` WHERE `id` = '$parentID'"));
				$parentURL = $parentURL['uri'];
				$aliasurl = translit(trim($imya));
				$allurl = $parentURL."/".$aliasurl;
			
				// описание, мета, ссылка нового товара
				mysql_query ("INSERT INTO `modx_site_content` (`id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`) VALUES ('', 'document', 'text/html', '$imya_f', '', '', '$aliasurl', '', 1, 0, 0, '$parentID', 0, '', '$opisanie', 1, 7, '', 1, 1, 1, 1446643476, '', 1463556765, 0, 0, 0, 1446643440, 1, '', 0, 0, 0, 0, 0, 'modDocument', 'web', 1, '$allurl', 1, 0, 1, '{"ms2gallery":{"media_source":"4"}}')");
				
				$contentid_new = mysql_fetch_assoc(mysql_query("SELECT `id` FROM `modx_site_content` WHERE `pagetitle` LIKE '%$imya%' ORDER BY `id` DESC LIMIT 1"));

				// вписываем характеристики нового товара
				
				//вписываем характеристики из икселя в соответствующие тв поля
				$contentid_new = $contentid_new['id'];
				if($contentid_new != '' || $contentid_new != 0) {
					foreach($arr_val_h as $ant_item_new => $ant_val_new) {
						if($ant_val_new != '') {
							$ant_val_new = trim($ant_val_new);
							$ant_val_new = $ant_val_new;
							mysql_query ("INSERT INTO `modx_site_tmplvar_contentvalues` (`id`, `tmplvarid`, `contentid`, `value`) VALUES
							('', '$ant_item_new', '$contentid_new', '$ant_val_new')");
						}
					}					
					$mess = "Загрузка прошла успешно!";
				} else {}
			}

		} else { }
	}
	
}

//сканируем папку с excel файлами

function exl_dir_f($uploaddir) {
	$name_dir = scandir($uploaddir);
	if(sizeof($name_dir) > 0) {
	$exl_dir_file = '';
		for($i=2; $i<=(sizeof($name_dir)-1); $i++) {
			$url_f = $uploaddir.$name_dir[$i];
			$num_sh = numsheets($url_f);
			$count_sh = $num_sh->getSheetCount();
			$inpt_1 = '';
			$c = 0;
			foreach ($num_sh->getWorksheetIterator() as $worksheet) {
				$worksheetTitle = $worksheet->getTitle();
					$inpt_1 .= '<button class="shh" name="numsheet" value="'.$c.'" type="button" id="numsheet'.$c.'">'.$worksheetTitle.'</button>';
				$c++;
			}
			if(strstr($url_f, 'price_maz.')) {
				$exl_dir_file_maz .= '<p>Залить прайс для MAZ c налогом 18%</p><div class="excelshtl_maz" id="maz_exl-'.($i-1).'" style="margin: 7px 0 9px;"><input name="maz_objPHPExcel1" value="'.substr($url_f, 3).'" type="hidden" class="maz_objPHPExcel1" /><input name="maz_alls" value="'.$count_sh.'" type="hidden" class="maz_alls" /><p>'.($i-1).'. <a href="'.substr($url_f, 2).'">'.$name_dir[$i].'</a></p><p>'.$inpt_1.'<button class="delete_file" name="delete_file" value="'.substr($url_f, 3).'">Удалить файл</button></p></div>';
			} else {
				$exl_dir_file .= '<div class="excelshtl" id="exl-'.($i-1).'" style="margin: 7px 0 9px;"><input name="objPHPExcel1" value="'.substr($url_f, 3).'" type="hidden" class="objPHPExcel1" /><input name="alls" value="'.$count_sh.'" type="hidden" class="alls" /><p>'.($i-1).'. <a href="/'.substr($url_f, 2).'">'.$name_dir[$i].'</a></p><p>'.$inpt_1.'<button class="delete_file" name="delete_file" value="'.substr($url_f, 3).'">Удалить файл</button></p></div>';
			}
		}
		
		$exl_dir_file1 = '<div class="excelshtload">'.$mess.'<p style="margin: 9px 0 6px;">Или выберите название/номер листа Excel (кнопки ниже), товары с которого необходимо залить на сайт. Нумерация листов начинается с «1». Товары будут залиты в текущую папку (категория).</p><p>Номер кнопки соответствует порядковому номеру листа в Excel. Пожалуйста, будьте внимательны при загрузке, значения полей и расположение столбцов должно соответствовать примеру. От этого зависит как и куда загрузятся значения из икселя в базу. Если вышла ошибка, возможно, загружаемый лист пуст.</p>'.strval($exl_dir_file).strval($exl_dir_file_maz).'</div>';
		
	} else {
		 $exl_dir_file1 = '<p>В папке пока нет excel файлов для загрузки</p>';
	}	
		return $exl_dir_file1;
}

$exl_dir_l = exl_dir_f($uploaddir);

//загружаем файл excel
if($_FILES['userfile']) {

	$fnt = $uploaddir.$_FILES['userfile']['name'];
	if (move_uploaded_file($_FILES['userfile']['tmp_name'], $fnt)) {
	    $countsheet_q = '1';
	    $exl_dir_l = exl_dir_f($uploaddir);
		print "<p id='scsc'>Файл успешно загружен в папку ".$fnt."!</p><div id='excelload'>Выберите файл и подождите пока он загрузится: <input name='userfile' id='upload_f' type='file' value='' />".$mess.$exl_dir_l."</div>";
	} else {
	    $exl_dir_l = exl_dir_f($uploaddir);
		print "<p id='err'>Не удалось загрузить файл! Проверьте, существует ли папка для загрузки, размер файла не должен превышать 500КБ, расширение должно быть .xls или .xlsx</p><div id='excelload'>Выберите файл и подождите пока он загрузится: <input name='userfile' id='upload_f' type='file' value='' />".$mess.$exl_dir_l."</div>";
	}
}


$mess = $mess ? '<p>'.$mess.' Можете загрузить следующий лист!</p>' : '';
$html = '<div class="m"></div><div id="excelload"><div id="n"> Выберите файл и подождите пока он загрузится: <input name="userfile" id="upload_f" type="file" value="" />'.$mess.$exl_dir_l.'</div></div>';

$urlcur = $_SERVER['REQUEST_URI'];
$parentID_res = $resource->get('id');

$modx->controller->addHtml("<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script><script type='text/javascript'>
window.onload = function() {
    var exlloadplace = document.getElementById('ext-gen348');
    exlloadplace.innerHTML = '".$html."';

    $('#upload_f').change(function() {
    
        var userfile = new FormData();
        userfile.append(this.name, this.files[0])
        $.ajax({
            type: 'POST',
            url: '/loadexl.php',
            data: userfile,
            contentType: false,
            processData: false,
            success: function(msg) {
                $('.m').html(msg);
				$('#n').hide();
            },
            error: function() {
                $('.m').html('Error js script!');
            }
        });
    });

}
$(document).on('click','.excelshtl button.shh', function() {

	$('#scsc').hide();
	$('#err').hide();
	
	var sheetload = new FormData();
	var objPHPExcel1 = $(this).parent().parent().find('.objPHPExcel1');
	var alls = $(this).parent().parent().find('.alls');

	sheetload.append('numsheet', $(this).val());
	sheetload.append('objPHPExcel1', objPHPExcel1.val());
	sheetload.append('alls', alls.val());
	sheetload.append('parentID', '".$parentID_res."');
	$.ajax({
		type: 'POST',
		url: '/loadexl.php',
		data: sheetload,
		contentType: false,
		processData: false,
		success: function(msg) {
			$('.m').html('<div class="blk">'+ msg + '</div>');
			$('#n').show();
		},
		error: function() {
			$('.m').html('Error js script!');
		}
	});
});
$(document).on('click','.excelshtl_maz button.shh', function() {
	$('#scsc').hide();
	$('#err').hide();
	
	var maz_sheetload = new FormData();
	var maz_objPHPExcel1 = $(this).parent().parent().find('.maz_objPHPExcel1');
	var maz_alls = $(this).parent().parent().find('.maz_alls');
	
    maz_sheetload.append('check_nalog','yes');
	maz_sheetload.append('maz_numsheet', $(this).val());
	maz_sheetload.append('maz_objPHPExcel1', maz_objPHPExcel1.val());
	maz_sheetload.append('maz_alls', maz_alls.val());
	$.ajax({
		type: 'POST',
		url: '/loadexl.php',
		data: maz_sheetload,
		contentType: false,
		processData: false,
		success: function(msg) {
			$('.m').html('<div class="blk">'+ msg + '</div>');
			$('#n').show();
		},
		error: function() {
			$('.m').html('Error js script!');
		}
	});
});

$(document).on('click','.excelshtl button.delete_file', function() {

	var id_prnt = $(this).parent().parent().attr('id');
	var idp = document.getElementById(id_prnt);
	
	var deleteExcel = new FormData();

	deleteExcel.append('delete_file', $(this).val());
	$.ajax({
		type: 'POST',
		url: '/loadexl.php',
		data: deleteExcel,
		contentType: false,
		processData: false,
		success: function(msg) {
			$(idp).html(msg);
		},
		error: function() {
		    $(this).parent()[1].html('Error js script!');
		}
	});
});
$(document).on('click','.excelshtl_maz button.delete_file', function() {

	var id_prnt = $(this).parent().parent().attr('id');
	var idp = document.getElementById(id_prnt);
	
	var deleteExcel = new FormData();

	deleteExcel.append('delete_file', $(this).val());
	$.ajax({
		type: 'POST',
		url: '/loadexl.php',
		data: deleteExcel,
		contentType: false,
		processData: false,
		success: function(msg) {
			$(idp).html(msg);
		},
		error: function() {
		    $(this).parent()[1].html('Error js script!');
		}
	});
});

</script>");

Файл add_price_maz_watermaker_and_prover_po_imenu_bd.php добавляется в сниппеты сайта, создайте новый сниппет с именем add_price_poducts в разделе редактирования тв/сниппетов/плагинов и вставьте код из данного файла. Добавляет водяной знак, цену, сравневает по имени/названию товара.

add_price_maz_watermaker_and_prover_po_imenu_bd.php

<?php
// author - pl.web-master (Lu_smith)
// for Modx Revolution 2.4.0-pl
// mail - pl.web-master@yandex.ru
// snippet parser goods from http://www.mysite.ru/catalog.html?cid= *
// to catalog http://domen.ru/priczepyi-i-polupriczepyi/maz
// name - add_price_poducts

function translit($str, $bool=0) {
   $mess = Array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e-', 'ю' => 'yu', 'я' => 'ya', 'А' => 'a', 'Б' => 'b', 'В' => 'v', 'Г' => 'g', 'Д' => 'd', 'Е' => 'e', 'Ё' => 'jo', 'Ж' => 'zh', 'З' => 'z', 'И' => 'i', 'Й' => 'j', 'К' => 'k', 'Л' => 'l', 'М' => 'm', 'Н' => 'n', 'О' => 'o', 'П' => 'p', 'Р' => 'r', 'С' => 's', 'Т' => 't', 'У' => 'u', 'Ф' => 'f', 'Х' => 'h', 'Ц' => 'c', 'Ч' => 'ch', 'Ш' => 'sh', 'Щ' => 'shch', 'Ъ' => '', 'Ы' => 'y', 'Ь' => '', 'Э' => 'e-', 'Ю' => 'yu', 'Я' => 'ya', ' ' => '-', '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9');
   $c_str = preg_split('/s+/is', $str);
    $str = '';
   for ($i = 0; $i < (count($c_str)); $i++) {
	$str .= trim($c_str[$i]." ");
	}
	
   if($bool) {
		$mess = array_flip($mess);
		return $mess[$str]; 
	}
   $str = preg_replace('/[^a-zА-Яа-яёЁ0-9s-]/is', ' ', strtolower($str));
   $str = preg_replace('/s+/', ' ', $str);   
   foreach($mess as $key1 => $val1) {
		$str = preg_replace("/$key1/is", $val1, $str);
		//$str = preg_replace('/'.ucfirst($key).'/s', ucfirst($val), $str);
   }
   return $str;	
}

function transl($str, $bool=0) {
	$rus = array(' ', 'ж', 'й', 'ц', 'ч', 'ш', 'щ', 'э', 'ю', 'я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ь', 'ы', 'ъ');
	$angl = array('-', 'zh', 'ij', 'ts', 'ch', 'sh', 'shh', 'je', 'ju', 'ja', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'z', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', '~', 'y', '^');
	
	$rus_m = array('в', 'р', 'х', 'н');
	$angl_m = array ('b', 'p', 'x', 'h');

$name_img = str_replace($ar_1, $ar_2, $name_img);
	
	$str = trim($str);
	$str = mb_strtolower($str, mb_detect_encoding($str));
	
	preg_match_all("#^(.*)([0-9a-zа-я]{6}-[0-9]{4}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}-[0-9]{2}|[0-9a-zа-я]{6}|[0-9a-zа-я]{4})?$#isu", $str, $str_matchs, PREG_SET_ORDER);
	
	$model_name = $str_matchs[0][1];
	$model_num = $str_matchs[0][2];
	
	if($bool==0) {
		$model_name = str_replace($rus, $angl, $model_name);
		$model_num = str_replace($rus_m, $angl_m, $model_num);
		$str = $model_name.$model_num;
	} else if($bool==1) {
		$model_name = str_replace($angl, $rus, $model_name);
		$model_name = str_replace('маз', 'Маз', $model_name);
		$model_num = str_replace($angl_m, $rus_m, $model_num);
		$model_num = mb_strtoupper($model_num, mb_detect_encoding($model_num));
		$str = $model_name.$model_num;
	}
	return $str;	
}

function btw($b1) {
	$b1 = preg_replace('!/*[^*]**+([^/][^*]**+)*/!', '', $b1);
	$b1 = str_replace(array("
", "
", "
", "	", '  ', '    ', '    '), '', $b1);
	return $b1;
}


 
 $db = mysql_connect('localhost','login','password') or die('Не могу соединиться с базой, проверьте пароль, логин, название базы!');
mysql_select_db('name_db', $db);

$host_get_content = 'http://www.mysite.ru/';

$array_category_rus_avtomobili_ID = '7';
$array_category_rus_pricep_ID = '167';

$array_category_rus_avtomobili = array( '100' => 'бортовые и фургоны', '120' => 'тягачи', '151' => 'самосвалы', '545' => 'шасси');


$array_category_mysite_url = 'http://www.mysite.ru/catalog.html?cid=';
$array_category_mysite_pricep_ID = '7';

$array_category_mysite_avtomobili = array( '2' => 'бортовые и фургоны', '1' => 'тягачи', '3' => 'самосвалы', '5' => 'шасси');

$razresheno = 'false';
static $r;

if(strstr($_SERVER['REQUEST_URI'], '/priczepyi-i-polupriczepyi/maz') ) {
    
    $array_category_mysite_pricep_ID = '7';
    $razresheno = 'true';
}

else if(strstr($_SERVER['REQUEST_URI'], '/avtomobili/bortovyie-i-furgonyi/maz') ) {
    
    $array_category_mysite_pricep_ID = '2';
    $razresheno = 'true';
}

else if(strstr($_SERVER['REQUEST_URI'], '/avtomobili/tyagachi/maz') ) {
    
    $array_category_mysite_pricep_ID = '1';
    $razresheno = 'true';
}

else if(strstr($_SERVER['REQUEST_URI'], '/avtomobili/samosvalyi/maz') ) {
    
    $array_category_mysite_pricep_ID = '3';
    $razresheno = 'true';
}

else if(strstr($_SERVER['REQUEST_URI'], '/avtomobili/shassi/maz') ) {
    
    $array_category_mysite_pricep_ID = '5';
    $razresheno = 'true';
}

if($razresheno == 'true') {

//откуда будем парсить информацию

 $content_list_url_pricep = file_get_contents($array_category_mysite_url.$array_category_mysite_pricep_ID);

// Определяем позицию строки, до которой нужно все отрезать
 $pos = strpos($content_list_url_pricep, '<th>МОДЕЛЬ</th>');

//Отрезаем все, что идет до нужной нам позиции
 $content_list_url_pricep = substr($content_list_url_pricep, $pos);
 $pos2 = strpos($content_list_url_pricep, '<a href="');
 $content_list_url_pricep = substr($content_list_url_pricep, $pos2);

// Точно таким же образом находим позицию конечной строки
 $pos1 = strpos($content_list_url_pricep, '<th>&nbsp;</th>');

// Отрезаем нужное количество символов от нулевого
 $content_list_url_pricep = substr($content_list_url_pricep, 0, $pos1);

// выводим спарсенный текст.
 $content_list_url_pricep = strip_tags(trim($content_list_url_pricep), '<a></a>');
 $content_list_url_pricep = btw($content_list_url_pricep);

 preg_match_all("#<a.*href=["'](.*)["'].*>(.*)</a>#isU", $content_list_url_pricep, $content_list_url_pricep_matchs, PREG_SET_ORDER);

 $content_list_url_pricep_model = array();
 
 foreach($content_list_url_pricep_matchs as $keyy => $vall) {
    $link_file = $host_get_content.$vall[1];
    
	$a= file_get_contents($link_file);

	// Определяем позицию строки, до которой нужно все отрезать
	$pos_a = strpos($a, '</thead>');

	//Отрезаем все, что идет до нужной нам позиции
	$a = substr($a, $pos_a);

	// Точно таким же образом находим позицию конечной строки
	$pos_a1 = strpos($a, "</tfoot>
</table>");

	// Отрезаем нужное количество символов от нулевого
	$a = substr($a, 0, $pos_a1);
	$a = str_replace('<td class="compare">'.("#(.*)#").'</td>','', $a);
	$content_list_url_pricep_model[] .= btw($a);
	
 }
 
//print_r($content_list_url_pricep_model);
 
 $arr_url = '';
 
 foreach($content_list_url_pricep_model as $arr_list_url => $arr_val_url) {
    $arr_url .= $arr_val_url;
 }
 
 $content_list_url_pricep_model = $arr_url;
 
 //print_r($content_list_url_pricep_model);
 
preg_match_all("#<td class="picture">(.*)</td><td class="name"><a.*href=["'](.*)["'].*>(.*)</a></td><td class="price">(.*)</td><td class="description">(.*)</td>#isU", $content_list_url_pricep_model, $content_list_url_pricep_model_matchs, PREG_SET_ORDER);
 
//print_r($content_list_url_pricep_model_matchs);

preg_match_all("#<img src="(.*)"/>#isU", $content_list_url_pricep_model, $content_default_img, PREG_SET_ORDER);
$arr_default_img = array();
foreach($content_default_img as $k => $v) {
    $arr_default_img[] .= $v[1];
};

//print_r($arr_default_img);
 
 $wer = "";

 foreach($content_list_url_pricep_model_matchs as $key => $val) {

	    preg_match_all("#<img src="(.*)"/>#isU", $val[1], $content_list_img, PREG_SET_ORDER);

		$name = $val[3];
		
if($val[2] != '') {
		$cena_parser = $val[4];
		
		$name_search = $name;
        $name_search = str_replace('МАЗ', 'МАЗ', $name_search);
        $name_search = str_replace('маз', 'МАЗ', $name_search);
        $name_search = trim($name_search);
        $name_search = str_replace(' ', '-', $name_search);
        
        $cena = mysql_fetch_assoc(mysql_query("SELECT `cena` FROM `modx_maz_price` WHERE `name` LIKE '%$name_search%' ORDER BY 'name' DESC LIMIT 1"));
        $cena = $cena['cena'];
		
		if($cena > 0) {
		//$cena = number_format($cena, 0, '', ' ').' <span class="price">руб.</span>';
		
		/*$nalog = $cena * (0.18);
		$cena = $cena + $nalog;*/
		$cena = number_format($cena, 0, '', ' ').' <span class="price">руб.</span>';
		} else {
		    $cena = '<a href="/contacts" style="font-size: 18px; font-weight: bold; color: #e9a30b;">Узнать стоимость</a>';
		}
		
	} else { $cena = ''; }
		
		$link = $val[2];
		$link_id = strpos($link, '=');
		$link_id = '?itemid'.substr($link, $link_id);
		$link_alias = $_SERVER['REQUEST_URI'].'/'.transl($name).'.html'.$link_id;
		
		$posimg = strpos($name, ' ');
		$name_img = substr($name, $posimg);
		$name_img = trim($name_img);
		$posimg1 = strpos($name_img, '-');
		$name_img = substr($name_img, 0,$posimg1);

		$ar_1 = array ('в', 'р', 'х', 'н', 'М','А','З','м','а','з', ' ');
		$ar_2 = array ('b', 'p', 'x', 'h', 'm', 'a', 'z', 'm', 'a', 'z', '-');

		$name_img = str_replace($ar_1, $ar_2, $name_img);
		
		$img = $content_list_img[0][1];
		
    if (! extension_loaded('gd')) { // Проверяем установку библиотеки GD
        echo 'GD не установлено. Обратитесь к администратору вашего сайта!';
        exit;
    }
    
    if($img != '' || $img != 0 || $img != false) {
		    $img = $host_get_content.$img;
		} else {
		    foreach($arr_default_img as $k_i => $v_i) {
		      
		        if(strstr($v_i, $name_img[1])) {
		            $img = $host_get_content.$v_i;
		        }
		    }
		}

    $sOrigImg = $img;
    $sOrigImg_NAME = explode('/', $img);
    $sOrigImg_NAME_id = count($sOrigImg_NAME)-1;
    $sOrigImg_NAME = $sOrigImg_NAME[$sOrigImg_NAME_id];
    
    $sWmImg = "watermark2.png";
    
    $aImgInfo = getimagesize($sOrigImg);
    $aWmImgInfo = getimagesize($sWmImg);
    
    if (is_array($aImgInfo) && count($aImgInfo)) {
        //header ("Content-type: image/png");

        $iSrcWidth = $aImgInfo[0];
        $iSrcHeight = $aImgInfo[1];

        $iFrameSize = 0;

        $rImage = imagecreatetruecolor($iSrcWidth, $iSrcHeight); // Создаем новое изображение
        $rSrcImage = imagecreatefromjpeg($sOrigImg); //  Создаем исходное изображение

        imagecopy($rImage, $rSrcImage, 0, 0, 0, 0, $iSrcWidth, $iSrcHeight); // Копируем полученное изображение на изображение-источник
        
        if (is_array($aWmImgInfo) && count($aWmImgInfo)) {
            $rWmImage = imagecreatefrompng($sWmImg); //  Создаем изображение водяного знака
            imagecopy($rImage, $rWmImage,  7, $iSrcHeight/(2.5), 0, 0, $aWmImgInfo[0], $aWmImgInfo[1]); // Копируем изображение водяного знака на изображение источник
        }

        /*$iTextColor = imagecolorallocate($rImage, 255, 170, 0); // Определяем цвет текста
        imagestring($rImage, 5, $iSrcWidth/2, $iSrcHeight/2, "rus.ru", $iTextColor); // Рисуем текст*/

        imagepng($rImage, 'foto_maz/'.$sOrigImg_NAME); // Выводим изображение
        $img = '/foto_maz/'.$sOrigImg_NAME; // Выводим изображение
    } else {
        $img = 'Image error!';
    }
	
	/* если нужно присвоить картинки товарам без изображений но со схожими названиями
	
	$ndirct = "foto_maz/"; 
    $nhdl=opendir($ndirct); 
    while ($nfile = readdir($nhdl)) 
    { 
    if (($nfile!=".")&&($nfile!="..")) 
            { 
                    $arrr_img[] = $nfile; 
            } 
    } 
    closedir($nhdl); 
    
    foreach ($arrr_img as $i_v) {
		if(stristr($i_v, $name_img)) {
        	$img = '/foto_maz/'.$i_v;
        }
    }
	делаем из алиаса название для картинки
		$im = $link_alias;
		$im = explode('/', $im);
		$im_id = count($im)-1;
		$im = $im[$im_id];
		$p_i = strpos($im, '.');
		$im = substr($im, 0, $p_i);

		preg_match_all("/(-[0-9]{6}|[0-9]{4}[a-z]{0,1}[0-9]{0,1}-)/is", $im, $img_m);
		if($img_m[0][0] != '') {
		$im = $img_m[0][0];
		$im = str_replace('-', '', $im);
		} else {
			preg_match_all("/([a-z0-9-()]+)/is", $im, $img_m);
			$im = $img_m[0][0];
			$im = str_replace('.', '', $im);
			$im = str_replace('(', '-', $im);
			$im = str_replace(')', '', $im);
		}
        
        $img = '/foto_maz/'.$im.'.jpg';
		$img = '<img typeof="foaf:Image" src="'.$img.'" alt="" />';
	
	*/
		
		$img = '<img typeof="foaf:Image" src="'.$img.'" alt="'.$name.'" />';
		$text = mb_substr($val[5], 0, 87, 'UTF-8');

		$wer .= '<tr>
					<td class="views-field views-field-field-truck-image">
						<a href="'.$link_alias.'">
							'.$img.'
						</a>
					</td>
					<td class="views-field views-field-field-truck-price">
						'.$cena.'
					</td>
					<td class="views-field views-field-title">
						<a href="'.$link_alias.'">'.$name.'</a>
						'.$text.'
					</td>
					<td class="views-field views-field-nothing">
						<a href="'.$link_alias.'">Подробнее ...</a>
					</td>
				</tr>';
 }
 

return $wer;

}


 if($_SERVER['REQUEST_URI'] == '/avtomobili/maz') {
    $arr_url_p = array('7', '2', '1', '3', '5');

foreach($arr_url_p as $k_up => $v_up) {
$array_category_mysite_pricep_ID = $v_up;
//откуда будем парсить информацию

 $content_list_url_pricep = file_get_contents($array_category_mysite_url.$array_category_mysite_pricep_ID);

// Определяем позицию строки, до которой нужно все отрезать
 $pos = strpos($content_list_url_pricep, '<th>МОДЕЛЬ</th>');

//Отрезаем все, что идет до нужной нам позиции
 $content_list_url_pricep = substr($content_list_url_pricep, $pos);
 $pos2 = strpos($content_list_url_pricep, '<a href="');
 $content_list_url_pricep = substr($content_list_url_pricep, $pos2);

// Точно таким же образом находим позицию конечной строки
 $pos1 = strpos($content_list_url_pricep, '<th>&nbsp;</th>');

// Отрезаем нужное количество символов от нулевого
 $content_list_url_pricep = substr($content_list_url_pricep, 0, $pos1);

// выводим спарсенный текст.
 $content_list_url_pricep = strip_tags(trim($content_list_url_pricep), '<a></a>');
 $content_list_url_pricep = btw($content_list_url_pricep);

 preg_match_all("#<a.*href=["'](.*)["'].*>(.*)</a>#isU", $content_list_url_pricep, $content_list_url_pricep_matchs, PREG_SET_ORDER);

 $content_list_url_pricep_model = array();
 
 foreach($content_list_url_pricep_matchs as $keyy => $vall) {
    $link_file = $host_get_content.$vall[1];
    
	$a= file_get_contents($link_file);

	// Определяем позицию строки, до которой нужно все отрезать
	$pos_a = strpos($a, '</thead>');

	//Отрезаем все, что идет до нужной нам позиции
	$a = substr($a, $pos_a);

	// Точно таким же образом находим позицию конечной строки
	$pos_a1 = strpos($a, "</tfoot>
</table>");

	// Отрезаем нужное количество символов от нулевого
	$a = substr($a, 0, $pos_a1);
	$a = str_replace('<td class="compare">'.("#(.*)#").'</td>','', $a);
	$content_list_url_pricep_model[] .= btw($a);
	
 }
 
//print_r($content_list_url_pricep_model);
 
 $arr_url = '';
 
 foreach($content_list_url_pricep_model as $arr_list_url => $arr_val_url) {
    $arr_url .= $arr_val_url;
 }
 
 $content_list_url_pricep_model = $arr_url;
 
 //print_r($content_list_url_pricep_model);
 
preg_match_all("#<td class="picture">(.*)</td><td class="name"><a.*href=["'](.*)["'].*>(.*)</a></td><td class="price">(.*)</td><td class="description">(.*)</td>#isU", $content_list_url_pricep_model, $content_list_url_pricep_model_matchs, PREG_SET_ORDER);
 
//print_r($content_list_url_pricep_model_matchs);

preg_match_all("#<img src="(.*)"/>#isU", $content_list_url_pricep_model, $content_default_img, PREG_SET_ORDER);
$arr_default_img = array();
foreach($content_default_img as $k => $v) {
    $arr_default_img[] .= $v[1];
};

//print_r($arr_default_img);
 
 $wer = "";
 $name=  '';
 $img = '';
 $name_img = '';
 foreach($content_list_url_pricep_model_matchs as $key => $val) {
 $name = $val[3];
 
	if($val[2] != '') {
		$cena = $val[4];
		
				$name_search = $name;
				$name_search = str_replace('МАЗ', 'МАЗ', $name_search);
				$name_search = str_replace('маз', 'МАЗ', $name_search);
				$name_search = trim($name_search);
				$name_search = str_replace(' ', '-', $name_search);
				
				$cena = mysql_fetch_assoc(mysql_query("SELECT `cena` FROM `modx_maz_price` WHERE `name` LIKE '%$name_search%' ORDER BY 'name' DESC LIMIT 1"));
				$cena = $cena['cena'];
				
				if($cena > 0) {
				
				$cena = number_format($cena, 0, '', ' ').' <span class="price">руб.</span>';
				} else {
					$cena = '<a href="/contacts" style="font-size: 18px; font-weight: bold; color: #e9a30b;">Узнать стоимость</a>';
				}
				
			} else { $cena = ''; }
	
	    preg_match_all("#<img src="(.*)"/>#isU", $val[1], $content_list_img, PREG_SET_ORDER);

		$link = $val[2];
		$link_id = strpos($link, '=');
		$link_id = '?itemid'.substr($link, $link_id);
		$link_alias = $_SERVER['REQUEST_URI'].'/'.transl($name).'.html'.$link_id;
		
		$posimg = strpos($name, ' ');
		$name_img = substr($name, $posimg);
		$name_img = trim($name_img);
		$posimg1 = strpos($name_img, '-');
		$name_img = substr($name_img, 0,$posimg1);

		$ar_1 = array ('в', 'р', 'х', 'н', 'М','А','З','м','а','з', ' ');
		$ar_2 = array ('b', 'p', 'x', 'h', 'm', 'a', 'z', 'm', 'a', 'z', '-');

		$name_img = str_replace($ar_1, $ar_2, $name_img);
		
		$img = $content_list_img[0][1];
		
	   if (! extension_loaded('gd')) { // Проверяем установку библиотеки GD
        echo 'GD не установлено. Обратитесь к администратору вашего сайта!';
        exit;
    }
    
    if($img != '' || $img != 0 || $img != false) {
		    $img = $host_get_content.$img;
		} else {
		    foreach($arr_default_img as $k_i => $v_i) {
		      
		        if(strstr($v_i, $name_img[1])) {
		            $img = $host_get_content.$v_i;
		        }
		    }
		}

    $sOrigImg = $img;
    $sOrigImg_NAME = explode('/', $img);
    $sOrigImg_NAME_id = count($sOrigImg_NAME)-1;
    $sOrigImg_NAME = $sOrigImg_NAME[$sOrigImg_NAME_id];
    
    $sWmImg = "watermark2.png";
    
    $aImgInfo = getimagesize($sOrigImg);
    $aWmImgInfo = getimagesize($sWmImg);
    
    if (is_array($aImgInfo) && count($aImgInfo)) {
        //header ("Content-type: image/png");

        $iSrcWidth = $aImgInfo[0];
        $iSrcHeight = $aImgInfo[1];

        $iFrameSize = 0;

        $rImage = imagecreatetruecolor($iSrcWidth, $iSrcHeight); // Создаем новое изображение
        $rSrcImage = imagecreatefromjpeg($sOrigImg); //  Создаем исходное изображение

        imagecopy($rImage, $rSrcImage, 0, 0, 0, 0, $iSrcWidth, $iSrcHeight); // Копируем полученное изображение на изображение-источник
        
        if (is_array($aWmImgInfo) && count($aWmImgInfo)) {
            $rWmImage = imagecreatefrompng($sWmImg); //  Создаем изображение водяного знака
            imagecopy($rImage, $rWmImage,  7, $iSrcHeight/(2.5), 0, 0, $aWmImgInfo[0], $aWmImgInfo[1]); // Копируем изображение водяного знака на изображение источник
        }

        /*$iTextColor = imagecolorallocate($rImage, 255, 170, 0); // Определяем цвет текста
        imagestring($rImage, 5, $iSrcWidth/2, $iSrcHeight/2, "rus.ru", $iTextColor); // Рисуем текст*/

        imagepng($rImage, 'foto_maz/'.$sOrigImg_NAME); // Выводим изображение
        $img = '/foto_maz/'.$sOrigImg_NAME; // Выводим изображение
    } else {
        $img = 'Image error!';
    }
	
		
/*		if($img != '' || $img != 0 || $img != false) {
		    $img = '<img typeof="foaf:Image" src="'.$host_get_content.$img.'" alt="'.$name.'" />';
		} else {
		    foreach($arr_default_img as $k_i => $v_i) {
		      
		        if(strstr($v_i, $name_img[1])) {
		            $img = '<img typeof="foaf:Image" src="'.$host_get_content.$v_i.'" alt="'.$name.'" />';
		        }
		    }
		}
		

$ndirct = "foto_maz/"; 
    $nhdl=opendir($ndirct); 
    while ($nfile = readdir($nhdl)) 
    { 
    if (($nfile!=".")&&($nfile!="..")) 
            { 
                    $arrr_img[] = $nfile; 
            } 
    } 
    closedir($nhdl); 
    
    foreach ($arrr_img as $i_v) {
		if(stristr($i_v, $name_img)) {
        	$img = '/foto_maz/'.$i_v;
        }
    }
$im = $link_alias;
$im = explode('/', $im);
$im_id = count($im)-1;
$im = $im[$im_id];
$p_i = strpos($im, '.');
$im = substr($im, 0, $p_i);
preg_match_all("/(-[0-9]{6}|[0-9]{4}[a-z]{0,1}[0-9]{0,1}-)/is", $im, $img_m);
if($img_m[0][0] != '') {
$im = $img_m[0][0];
$im = str_replace('-', '', $im);
} else {
    preg_match_all("/([a-z0-9-.()]+)/is", $im, $img_m);
    $im = $img_m[0][0];
    $im = str_replace('.', '', $im);
    $im = str_replace('(', '-', $im);
    $im = str_replace(')', '', $im);
}
        
        $img = '/foto_maz/'.$im.'.jpg';*/
		$img = '<img typeof="foaf:Image" src="'.$img.'" alt="" />'; 
		
		
		$text = mb_substr($val[5], 0, 87, 'UTF-8');

		$wer .= '<tr>
					<td class="views-field views-field-field-truck-image">
						<a href="'.$link_alias.'">
							'.$img.'
						</a>
					</td>
					<td class="views-field views-field-field-truck-price">
						'.$cena.'
					</td>
					<td class="views-field views-field-title">
						<a href="'.$link_alias.'">'.$name.'</a>
						'.$text.'
					</td>
					<td class="views-field views-field-nothing">
						<a href="'.$link_alias.'">Подробнее ...</a>
					</td>
				</tr>';
 }
}

return $wer;
 }


//------------------------------------------------------------------------------------------------------//

Файл maz_parser_tovar_watermaker.php добавляется в сниппеты сайта, создайте новый сниппет с именем add_price_poducts в разделе редактирования тв/сниппетов/плагинов и вставьте код из данного файла. Парсит указанный сайт: выуживает необходимую информацию и генерирует новую страницу с этими товарами на Вашем сайте.

maz_parser_tovar_watermaker.php

<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
if (!isset($_GET['itemid'])) {return false;}

$request = $_GET['itemid'];
if($request) {

function translit($str, $bool=0) {
   $mess = Array ( 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'jo', 'ж' => 'zh', 'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o', 'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'shch', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e-', 'ю' => 'yu', 'я' => 'ya', ' ' => '-', '0' => '0', '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9');
   $c_str = preg_split('/s+/is', $str);
    $str = '';
   for ($i = 0; $i < (count($c_str)); $i++) {
	$str .= trim($c_str[$i]." ");
	}
	
   if($bool == 1) { $mess = array_flip($mess); } else {  $mess = $mess; }
   
   $str = preg_replace('/[^a-zА-Яа-яёЁ0-9s-]/is', ' ', strtolower($str));
   $str = preg_replace('/s+/', ' ', $str);
   foreach($mess as $key3 => $val3) {

		$str = str_replace($key3, $val3, $str);
   }
   
   return $str;	
}


if (!function_exists('mb_ucfirst') && extension_loaded('mbstring'))
{
    /**
     * mb_ucfirst - преобразует первый символ в верхний регистр
     * @param string $str - строка
     * @param string $encoding - кодировка, по-умолчанию UTF-8
     * @return string
     */
    function mb_ucfirst($str, $encoding='UTF-8')
    {
        $str = mb_ereg_replace('^[ ]+', '', $str);
        $str = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding).
               mb_substr($str, 1, mb_strlen($str), $encoding);
        return $str;
    }
}


function transl($str, $bool=0) {
	$rus = array(' ', 'ж', 'й', 'ц', 'ч', 'ш', 'щ', 'э', 'ю', 'я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'з', 'и', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ь', 'ы', 'ъ');
	$angl = array('-', 'zh', 'ij', 'ts', 'ch', 'sh', 'shh', 'je', 'ju', 'ja', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'z', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', '~', 'y', '^');
	
	$rus_m = array('в', 'р', 'х', 'н', 'в', 'р');
	$angl_m = array ('b', 'p', 'x', 'h', 'v', 'r');

$name_img = str_replace($ar_1, $ar_2, $name_img);
	
	$str = trim($str);
	$str = mb_strtolower($str, mb_detect_encoding($str));
	
	preg_match_all("#^(.*)([0-9]{4}[a-z]{0,1}[0-9]{0,1}-[0-9]{0,4}-[0-9]{0,4})|(.*)([0-9a-zа-я]{6}-[0-9]{4}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}|[0-9a-zа-я]{6}-[0-9]{3}-[0-9]{2}|[0-9a-zа-я]{6}|[0-9a-zа-я]{4})?$#isu", $str, $str_matchs, PREG_SET_ORDER);
	
	$model_name = $str_matchs[0][1] ? $str_matchs[0][1] : $str_matchs[0][0];
	if($str_matchs[0][1] != '') {
	$model_num = $str_matchs[0][3] ? $str_matchs[0][3] : $str_matchs[0][2];
	}
	
	if($bool==0) {
		$model_name = str_replace($rus, $angl, $model_name);
		$model_num = str_replace($rus_m, $angl_m, $model_num);
		$str = $model_name.$model_num;
	} else if($bool==1) {
		$model_name = str_replace($angl, $rus, $model_name);
		$model_name = str_replace('маз', 'Маз', $model_name);
		$model_name = str_replace('нурсан', 'nursan', $model_name);
		$model_name = str_replace('турцйа', 'Турция', $model_name);
		$model_num = str_replace($angl_m, $rus_m, $model_num);
		$model_num = str_replace('турцйа', 'Турция', $model_num);
		$model_num = mb_strtoupper($model_num, mb_detect_encoding($model_num));
		$str = $model_name.$model_num;
	}
	return $str;	
}


function btw($b1) {
	$b1 = preg_replace('!/*[^*]**+([^/][^*]**+)*/!', '', $b1);
	$b1 = str_replace(array("
", "
", "
", "	", '  ', '    ', '    '), '', $b1);
	return $b1;
}

$cur_url = $_SERVER['REQUEST_URI'];
$cur_url = explode('/',$cur_url);
$cur_url_num = count($cur_url)-1;

preg_match_all("#((.*).html)#isU", $cur_url[$cur_url_num], $cur_url_matchs, PREG_SET_ORDER);

$cur_url_m = str_replace('maz', '', $cur_url_matchs[0][2]);
$cur_url = 'Маз '.$cur_url_m;

$host_get_content = 'http://www.mydomen.ru/';

$array_category_rus_avtomobili_ID = '7';
$array_category_rus_pricep_ID = '167';

$array_category_rus_avtomobili = array( '100' => 'бортовые и фургоны', '120' => 'тягачи', '151' => 'самосвалы', '545' => 'шасси');


$array_category_mydomen_url = 'http://www.mydomen.ru/catalog.html?cid=';
$array_category_mydomen_pricep_ID = '7';

$array_category_mydomen_avtomobili = array( '2' => 'бортовые и фургоны', '1' => 'тягачи', '3' => 'самосвалы', '5' => 'шасси');

$content_list_url_pricep_model_detail = $host_get_content.'catalog.html?itemid='.$_GET['itemid'];
	
$content_list_url_pricep_model_detail = file_get_contents($content_list_url_pricep_model_detail);

// Определяем позицию строки, до которой нужно все отрезать
$pos_b = strpos($content_list_url_pricep_model_detail, '<table id="catalog_item_wrap" border="0">');

//Отрезаем все, что идет до нужной нам позиции
$content_list_url_pricep_model_detail = substr($content_list_url_pricep_model_detail, $pos_b);

// Точно таким же образом находим позицию конечной строки
$pos_b1 = strpos($content_list_url_pricep_model_detail, '<div id="div_right_column">');

// Отрезаем нужное количество символов от нулевого
$content_list_url_pricep_model_detail = substr($content_list_url_pricep_model_detail, 0, $pos_b1);
$content_list_url_pricep_model_detail = btw($content_list_url_pricep_model_detail);


preg_match_all("#<td class="picture"><a.*href=["'](.*)["'].*><img.*src=["'](.*)["'].*></a>#isU", $content_list_url_pricep_model_detail, $model_img, PREG_SET_ORDER);

preg_match_all("#<span class="item_price">(.*)</span>#isU", $content_list_url_pricep_model_detail, $model_price, PREG_SET_ORDER);

preg_match_all("#<tr class=""><td class="item_spec">(.*)</td><td class="item_spec">(.*)</td></tr>#isU", $content_list_url_pricep_model_detail, $model_harakteristiki, PREG_SET_ORDER);

preg_match_all("#</table></td></tr></table>(.*)</div>#isU", $content_list_url_pricep_model_detail, $model_descr, PREG_SET_ORDER);

$model_descr = str_replace('<br /><p><p>', '<p>', $model_descr[0][1]);
$model_descr = str_replace('</p></p>', '</p>', $model_descr);

preg_match_all("#<p>(.*)</p>#isU", $model_descr, $model_descr, PREG_SET_ORDER);

$model_descr_ch = '';

$db = mysql_connect('localhost','login','password') or die('Не могу соединиться с базой, проверьте пароль, логин, название базы!');
mysql_select_db('name_db', $db);

foreach($model_descr as $key_op => $val_op) {
    if(strstr($val_op[0], 'CompanyName') || strstr($val_op[0], 'кредит')) {    } 
    else {
        $model_descr_ch .= $val_op[0]."
";
    }
}

$model_descr = $model_descr_ch;

$name = $cur_url;
$img = $host_get_content.$model_img[0][1];
$cena = $model_price[0][1];

$name_search = $name;
        $name_search = mb_strtolower('МАЗ', 'МАЗ', $name_search);
        $name_search = trim($name_search);
        $name_search = str_replace(' ', '-', $name_search);
        
        $cena = mysql_fetch_assoc(mysql_query("SELECT `cena` FROM `modx_maz_price` WHERE `name` LIKE '%$name_search%' ORDER BY 'name' DESC LIMIT 1"));
        $cena = $cena['cena'];

$rub = $cena ? ' руб.' : 'Узнайте цену у оператора';
if(!isset($cena) || $cena == '' || $cena == 0) {
    $cena = '';
} else {
    $cena = number_format($cena, 0, '', ' ');
}

$harac = '';
foreach($model_harakteristiki as $key_h => $val_h) {
    
    $harac .= '<tr><td class="even">'.$val_h[1].'</td><td class="even">'.$val_h[2].'</td></tr>';
    
}

//------------------------------------------------//

    if (! extension_loaded('gd')) { // Проверяем установку библиотеки GD
        echo 'GD не установлено. Обратитесь к администратору вашего сайта!';
        exit;
    }

    $sOrigImg = $img;
    $sWmImg = "watermark.png";
    
    $aImgInfo = getimagesize($sOrigImg);
    $aWmImgInfo = getimagesize($sWmImg);
    
    if (is_array($aImgInfo) && count($aImgInfo)) {
        //header ("Content-type: image/png");

        $iSrcWidth = $aImgInfo[0];
        $iSrcHeight = $aImgInfo[1];

        $iFrameSize = 0;

        $rImage = imagecreatetruecolor($iSrcWidth, $iSrcHeight); // Создаем новое изображение
        
        if(strstr($sOrigImg, '.png')) {
            $rSrcImage = imagecreatefrompng($sOrigImg); //  Создаем исходное изображение из png
        } else if(strstr($sOrigImg, '.gif')) {
            $rSrcImage = imagecreatefromgif($sOrigImg); //  Создаем исходное изображение из gif
        } else {
            $rSrcImage = imagecreatefromjpeg($sOrigImg); //  Создаем исходное изображение из jpg
            if(!$rSrcImage) { print($sOrigImg); }
		}

        imagecopy($rImage, $rSrcImage, 0, 0, 0, 0, $iSrcWidth, $iSrcHeight); // Копируем полученное изображение на изображение-источник
        
        if (is_array($aWmImgInfo) && count($aWmImgInfo)) {
            $rWmImage = imagecreatefrompng($sWmImg); //  Создаем изображение водяного знака
            imagecopy($rImage, $rWmImage,  30, $iSrcHeight/(2.5), 0, 0, $aWmImgInfo[0], $aWmImgInfo[1]); // Копируем изображение водяного знака на изображение источник
        }

        /*$iTextColor = imagecolorallocate($rImage, 255, 170, 0); // Определяем цвет текста
        imagestring($rImage, 5, $iSrcWidth/2, $iSrcHeight/2, "rus.ru", $iTextColor); // Рисуем текст*/

        imagepng($rImage, 'r.jpg'); // Выводим изображение
        $img = 'r.jpg'; // Выводим изображение
    } else {
        $img = 'Image error!';
    }

$tovar = '<div id="trucks-body">
                                            <h1 itemprop="name" class="title" id="page-title">'.$name.'</h1>
                                            <div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="views-field-field-truck-price">
                                                <span itemprop="price" class="field-content">'.$cena.'</span>
                                                <meta itemprop="priceCurrency" content="RUB">
                                                <span class="rub">'.$rub.'</span>
                                            </div>

                                            <div class="views-field-nothing-1">
                                                <span class="views-field-nothing-1">
                                                    <a class="order-link1 link-popup-zakaz" href="javascript:void(0);" title="">Отправить запрос</a>
                                                </span>
                                            </div>
                                        </div>
                                        
                                        <div id="owl-carousel" class="owl-carousel cart-magn-pop">
                                            <a href="'.$img.'" title="" >
    <img itemprop="image" typeof="foaf:Image" src="'.$img.'" width="290" alt="" title="">
</a>
                                        </div>
                                        
                                        
                                        <div class="field field-name-field-truck-body field-type-text-long field-label-hidden">
                                            <div class="field-items">
                                                <div class="field-item even">
                                                    <div class="field field-name-field-truck-body field-type-text-long field-label-hidden">
                                                        <div class="field-items">
                                                            <div class="field-item even">
                                                                <div class="field field-name-field-truck-body field-type-text-long field-label-hidden">
                                                                    <div class="field-items">
                                                                        <div itemprop="description" class="field-item even">
                                                                            
                                                                            <div class="pr-title desc-tovar-title">Характеристики</div>
                                                                            <table class="tech-table"><tbody>
                                                                                '.$harac.'
                                                                            </tbody></table>
                                                                            
                                                                            <div class="desc-tovar-title">Описание</div>
                                                                            '.$model_descr.'
                                                                            <p>Данное предложение не является публичной офертой.</p>
                                                                            <p>Комплектации и цены согласовывайте с отделом продаж ООО "Came Company".</p>';
//echo $tovar;
	switch ($modx->event->name) {
    case 'OnPageNotFound':
    $out_put = '';
    $out_put = $modx->getObject('modTemplate', array('id' => 7));
    $out_put = $out_put->getContent();
    //print_r($out_put);
    
     $out_put = btw($out_put);
    
    preg_match_all('#[[\$([a-zA-Z]+)]]#isU', $out_put, $out_put_matchs, PREG_SET_ORDER);
    
    foreach($out_put_matchs as $key => $val) {
    	$out_put_val = $val[1];
    	$chunk = $modx->getObject('modChunk', array('name' => $out_put_val));
		$tpl = $chunk->getContent();
		$out_put = str_replace('[[$'.$out_put_val.']]', $tpl, $out_put);
    }


if(strstr($_SERVER['REQUEST_URI'], 'priczepyi-i-polupriczepyi')) {
	$title_tail = ' – Продажа Прицепов и полуприцепов по выгодным ценам на сайте «Company Name»';
	$pdo_Crumbs = '<a href="/katalog" class="term-1">Каталог</a>&gt;<a href="/priczepyi-i-polupriczepyi" class="term-1">Прицепы и полуприцепы</a>&gt;<a href="/priczepyi-i-polupriczepyi/maz" class="term-1">Маз</a>&gt;<span>'.$name.'</span>';
}


		$out_put = str_replace('<meta property="keywords" content="[[+seoPro.keywords]]">', '<meta name="keywords" content="'.$name.'" />', $out_put);
		$out_put = str_replace('[[!seo_get_canonical? &id=`[[*id]]`]]', $_SERVER['REQUEST_URI'], $out_put);
		$out_put = str_replace('[[*id:is=`1`:then=`front`:else=`not-front`]]', 'not-front', $out_put);
		$out_put = str_replace('[[!get_seo_text? &type=`title` &id=`[[*id]]`]]', '<title>'.$name.$title_tail.'</title>', $out_put);
		$out_put = str_replace('[[!get_seo_text? &type=`description` &id=`[[*id]]`]]', '<meta name="description" content="Купите '.$name. '- высокое качество по выгодной цене" />', $out_put);
		$out_put = str_replace('[[*pagetitle]]', $name, $out_put);
        
		
		$id=4;
		$page = $modx->getObject('modResource', 4);
        $tpl_tv = $page->getTVValue('phone'); 
        //$tpl_tv = $modx->resource->getTVValue('phone');
		$out_put = str_replace('[[#4.phone]]', $tpl_tv, $out_put);
		$out_put = str_replace('[[*id:is=`2`:then=`style="display: none;"`:else=``]]', '', $out_put);
		
    $out_put = preg_replace('#<div id="content-wrapper">(.*)<div id="sidebar-first" class="sidebar">#isU', '<div id="content-wrapper">
    <div id="content">
                <div id="content-section">
                    <div id="breadcrumb">
    <div class="breadcrumb">
        [[!pdoCrumbs?
        &outputSeparator=`>`
        &tplWrapper=`@INLINE [[+output]]`
        &tpl=`@INLINE <a href="[[+link]]" class="term-1">[[+menutitle]]</a>`
        ]]
    </div>
</div>
<div class="region region-content">
                        <div id="block-system-main" class="block block-system">
                            <div class="content">
                                <div class="node node-truck node-full clearfix">
                                    <div itemscope itemtype="http://schema.org/Product" class="content clearfix">'.$tovar.'</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div id="sidebar-first" class="sidebar">', $out_put);
$mod_menu = $modx->runSnippet('pdoMenu',array(
'parents' => '0',
'level' => '1',
'tplOuter' => '@INLINE [[+wrapper]]',
'tplHere' => '@INLINE <li [[+classes]]><span>[[+menutitle]]</span>[[+wrapper]]</li>'));
$out_put = str_replace('[[!pdoMenu?
        			    &parents=`0`
        			    &level=`1`
        			    &tplOuter=`@INLINE [[+wrapper]]`
        			    &&tplHere=`@INLINE <li [[+classes]]><span>[[+menutitle]]</span>[[+wrapper]]</li>`
    			    ]]', $mod_menu, $out_put);
 			    
$parse_MIGX = $modx->runSnippet('parseMIGX',array(
'tpl' => 'index-slider-tpl',
'input' => '[[*index-slider]]'));

$out_put = str_replace('[[parseMIGX? 
            &tpl=`index-slider-tpl` 
            &input=`[[*index-slider]]` 
        ]]', $parse_MIGX, $out_put);
        
/*$pdo_Crumbs = $modx->runSnippet('pdoCrumbs',array(
'outputSeparator' => '>',
'tplWrapper' => '@INLINE [[+output]]',
'tpl' => '@INLINE <a href="[[+link]]" class="term-1">[[+menutitle]]</a>'));*/


$out_put = str_replace('[[!pdoCrumbs?
        &outputSeparator=`>`
        &tplWrapper=`@INLINE [[+output]]`
        &tpl=`@INLINE <a href="[[+link]]" class="term-1">[[+menutitle]]</a>`
        ]]', $pdo_Crumbs, $out_put);
        
$ms2_Gallery_Resources = $modx->runSnippet('ms2GalleryResources',array(
'parents' => '5',
'tpl' => 'sidebarMenu',
'depth' => '0',
'sortby' => '{menuindex:ASC}',
'includeOriginal' => '1'));

$out_put = str_replace('[[!ms2GalleryResources?
                    &parents=`5`
                    &tpl=`sidebarMenu`
                    &depth=`0`
                    &sortby=`{menuindex:ASC}`
                    &includeOriginal=`1`
                ]]', $ms2_Gallery_Resources, $out_put);
                
$pdo_Resources_menu = $modx->runSnippet('pdoResources',array(
'parents' => '301',
'tpl' => 'news-item-sidebar-tpl',
'includeTVs' => 'thumb'));

$out_put = str_replace('[[pdoResources?
                        &parents=`301`
                        &tpl=`news-item-sidebar-tpl`
                        &includeTVs=`thumb`
                    ]]', $pdo_Resources_menu, $out_put);
                    
$pdo_Resources_special = $modx->runSnippet('pdoResources',array(
'parents' => '304',
'depth' => '0',
'tpl' => 'special-offer-sidebar-tpl'));

$out_put = str_replace('[[pdoResources?
                                &parents=`304`
                                &depth=`0`
                                &tpl=`special-offer-sidebar-tpl`
                            ]]', $pdo_Resources_special, $out_put);
                            
$Ajax_Form = $modx->runSnippet('AjaxForm',array(
'snippet' => 'FormIt',
'form' => 'tpl.AjaxForm.order',
'hooks' => 'email',
'emailTpl' => 'tpl.AjaxForm.orderEmail',
'emailSubject' => 'Новый запрос',
'emailTo' => '[[++feedback_email]]',
'validate' => 'name:required,emailTo:required,phone:required,comment:required,subjectOfMail:required',
'validationErrorMessage' => 'В форме содержатся ошибки!',
'successMessage' => 'Сообщение успешно отправлено'));

$out_put = str_replace('[[!AjaxForm?
        	&snippet=`FormIt`
        	&form=`tpl.AjaxForm.order`
        	&hooks=`email`
        	&emailTpl=`tpl.AjaxForm.orderEmail`
        	&emailSubject=`Новый запрос`
        	&emailTo=`[[++feedback_email]]`
        	&validate=`name:required,emailTo:required,phone:required,comment:required,subjectOfMail:required`
        	&validationErrorMessage=`В форме содержатся ошибки!`
        	&successMessage=`Сообщение успешно отправлено`
        ]]', $Ajax_Form, $out_put);
        
preg_match_all('#[[\!(pdoMenu).*(&parents=`)(.*)(`).*]]#isU', $out_put, $out_put_matchs_menu, PREG_SET_ORDER);
    
foreach($out_put_matchs_menu as $key3 => $val3) {
	$menu_val = $val3[3];
	
	$menu_snip = $modx->runSnippet('pdoMenu',array(
				'rowClass' => 'leaf',
				'tplOuter' => '@INLINE [[+wrapper]]',
				'parents' => $menu_val,
				'level' => '1',
				'where' => '{"isfolder":"1"}'));
				
	$out_put = str_replace('[[!pdoMenu?
                &rowClass=`leaf`
                &tplOuter=`@INLINE [[+wrapper]]`
                &parents=`'.$menu_val.'`
                &level=`1`
                &where=`{"isfolder":"1"}`
            ]]', $menu_snip, $out_put);
}

preg_match_all('#[[~([0-9]+)]]#isU', $out_put, $url_alias_matchs, PREG_SET_ORDER);

foreach($url_alias_matchs as $key4 => $val) {
    $id_url = $val[1];
    $alias_url = $modx->makeUrl($id_url);
    $out_put = str_replace('[[~'.$id_url.']]', $alias_url, $out_put);
}   

$url_contact = $modx->makeUrl(4);

   echo($out_put);
    
    break;

}
} 
die;

Есть вопросы? Пишите: pl.web-master@yandex.ru

Разработанные мной скрипты, модули и CMS
Портфолио

Смотреть все статьи