[miniShop2] Сниппет msVendor
        Ковыряясь с AJAX загрузкой данных о продукте написал сниппет для получения данных о производителе по id.
Как работает:
Указываем id и получаем данные производителя в виде массива, либо строки обработанного чанка.
Параметры:
Запаковал все в транспортный пакет, однако из-за проблем на сервере (перенастраиваю VPS) и пока еще кривыми правами не могу проверить функциональность загрузки пакета, да и тут не позволяют грузануть zip к посту. Так что добавляю код сниппета сюда:
GIT — github.com/2ball/modx/tree/master/msVendor
P.S. — если посчитаете полезным, добавьте в simpledream, вдруг кому пригодится.
    
    
                                                                                
            Как работает:
Указываем id и получаем данные производителя в виде массива, либо строки обработанного чанка.
Параметры:
- vendor — id производителя (по-умолчанию 0)
 - tpl — шаблон вывода, плейсхолдеры соответствуют полям в таблице (по-умолчанию tpl.msVendor)
 - returnData — если указать 1, то сниппет вернет массив данных (по-умолчанию 0)
 - returnOption — если указать имя конкретного поля, которое нужно, то сниппет вернет только его значение (по-умолчанию '')
 - includeContent — если указано 1, сниппет проверит значение указанного ресурса с описанием производителя и при наличии такового добавить в выводимые значения поля pagetitle, introtext и content указанного ресурса (по-умолчанию 0)
 
Запаковал все в транспортный пакет, однако из-за проблем на сервере (перенастраиваю VPS) и пока еще кривыми правами не могу проверить функциональность загрузки пакета, да и тут не позволяют грузануть zip к посту. Так что добавляю код сниппета сюда:
GIT — github.com/2ball/modx/tree/master/msVendor
P.S. — если посчитаете полезным, добавьте в simpledream, вдруг кому пригодится.
<?php
/**
 * Author: Anton Jukov
 */ 
if (!empty($scriptProperties['vendor'])) {
	$vendor = $modx->getObject('msVendor', $scriptProperties['vendor']);
	//Check vendor exist
	if (is_object($vendor)) {
		//Get fields data
		$vendor = $vendor->_fields;
		//Get content
		if ($scriptProperties['includeContent'] == 1) {
			if (!empty($vendor['resource'])) {
				$resource = $modx->getObject('modResource', $vendor['resource']);
				if (is_object($resource)) {
					$vendor['pagetitle'] = $resource->get('pagetitle');
					$vendor['introtext'] = $resource->get('introtext');
					$vendor['content'] = $resource->get('content');
				}
			}
		}
		//How to return?
		if ($scriptProperties['returnData'] == 1) {
			if (!empty($scriptProperties['returnOption'])) {
				return $vendor[$scriptProperties['returnOption']];
			}
			else {
				return $vendor;
			}
		}
		else {
			$output = $modx->getChunk($scriptProperties['tpl'], $vendor);
			return $output;
		}
	}
	else {
		return false;
	}
}
else {
	return false;
}    Комментарии: 5
                Я думаю лучше всего этот сниппет добавить в сам miniShop2. Нужно лишь сделать pull-request и дождаться аппрува от Василия.            
                    
                ну тогда надо по феншую сниппет переписать…
зы. а вообще если честно не понял для чего этот сниппет…
pps. Василий серия рассказов «Большой рассказ про pdoTools» — это офигенно!
попробовал писать сниппеты — это просто кайф!
Спасибо тебе огромное!!!
                    зы. а вообще если честно не понял для чего этот сниппет…
pps. Василий серия рассказов «Большой рассказ про pdoTools» — это офигенно!
попробовал писать сниппеты — это просто кайф!
Спасибо тебе огромное!!!
                По умолчанию данные о продукте получаются через чанк msProducts, который собирает все со страницы продукта через цепочку сниппетов, чанков, tv и плейсхолдеров. Если же нужно получить данные продукта в произвольном месте, то используется сниппет msProducts, в котором от производителя можно получить только id. 
Мне же нужна была расширенная информация. Вот и потратил немного времени на написание получения полной картины через просто запрос по id, так сказать смасштабировал и вынес метод получения, чтобы не городить огород в сниппете получения через AJAX.
Осмысленно не стал вносить изменения в msProducts, чтобы не затереть при обновлении.
                    Мне же нужна была расширенная информация. Вот и потратил немного времени на написание получения полной картины через просто запрос по id, так сказать смасштабировал и вынес метод получения, чтобы не городить огород в сниппете получения через AJAX.
Осмысленно не стал вносить изменения в msProducts, чтобы не затереть при обновлении.
                Подскажите почему этот сниппет может в последнем minishop не работать? Максимум выводит 'array' и все.            
                    
                Пофик, по другому сделал.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.