but1head

but1head

С нами с 01 апреля 2014; Место в рейтинге пользователей: #19
but1head
24 августа 2014, 08:44
3
+2
Не могу найти версию где берет родительские теги, если надо выложу.

<title>[[!meta? &tag=`title`]]</title>
<meta name="keywords" content="[[!meta? &tag=`keywords`]]" />
<meta name="description" content="[[!meta? &tag=`description`]]" />
сниппет meta
<?php
$tag = $scriptProperties['tag'];

if($tag == 'title'){

	$page_title = $modx->resource->get("pagetitle");
	$meta_title = $modx->resource->getTVValue("meta_title");
	$title = ($meta_title != '' ? $meta_title : $page_title);

} elseif($tag == 'description'){

	$meta_description = $modx->resource->getTVValue("meta_description");
	$site_description = $modx->getOption('site_description');
	$description = ($meta_description != '' ? $meta_description : $site_description);

} elseif($tag == 'keywords'){

	$meta_keywords = $modx->resource->getTVValue("meta_keywords");
	$site_keywords = $modx->getOption('site_keywords');
	$keywords = ($meta_keywords != '' ? $meta_keywords : $site_keywords);

}

switch ($tag) {
    case 'title': return $title; break;
    case 'description': return $description; break;
    case 'keywords': return $keywords; break;
}
в системные настройки нужно добаить site_description & site_keywords, создать tv: meta_title, meta_description, meta_keywords
but1head
24 августа 2014, 01:32
0
Обычно пользуюсь свои сниппетом. Умеет выводить дескрипшн и кейвордс, если они не заданы выводить родительские, если и они не заданы то с главной страницы. Если интересно выложу
but1head
17 августа 2014, 12:08
0
[[geocoords]] выведет координаты, их выводите в коде яндекс карт.
but1head
17 августа 2014, 11:56
1
0
у вас как я понимаю если редактируете ресурс и сохраняете — заного все геокодируется. вот мое решение для яндекса.
плагин:
<?php
switch ($modx->event->name) {
	case 'OnDocFormPrerender':
		$_SESSION['before'] = $resource->getTVValue('adres'); // адрес при загрузке
	break;
	case 'OnDocFormSave':
		$after = $resource->getTVValue('adres'); // адрес при сохранении
		if($after !== $_SESSION['before']){
			$param = array(
			  'adres' => $resource->getTVValue('adres'),
			  'id' => $resource->get('id')
			);
		  $modx->runSnippet('geocoords',$param);
		}
	break;
}
сниппет:
<?php
$doc = $modx->getObject('modResource', $id);

$replace = array(' ', '/');
$adres_new = str_replace($replace, '+', $adres);

$dataCoords = simplexml_load_file('http://geocode-maps.yandex.ru/1.x/?geocode='.$adres_new);

foreach ($dataCoords->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos as $coords) {
	
	$array = explode(' ',$coords);
	$coords = $array[1].','.$array[0];
	$doc->setTVValue('coords', $coords);
} 



$doc->save();
but1head
27 июля 2014, 20:36
0
а на pdoresources нету варианта?
but1head
22 июля 2014, 01:53
1
0
Несколько дней рылся по докам и так и не нашел. как сделать загрузку изображений минишопа?
Нашел только единственный выход:
при создании грузить файл и вставлять ссылку на загруженный файл в базу.
Но при создании у товара нету id, непонятно как разбить несколько фоток.
Да и грузить фотки только после сохранения ресурса не очень хорошо…
Есть у кого идеи?
but1head
17 июля 2014, 22:40
0
Обновил снипеты и чанки создания и редактирования, более божеский вид и защита от других групп.
but1head
13 июля 2014, 13:21
0
Работает, спасибо!
but1head
13 июля 2014, 13:03
0
Не отрабатывает, пишет «не равны» все время.
Не подскажете документации по сохранение в модкс/сессию?
but1head
12 июля 2014, 19:55
0
switch ($modx->event->name) {
	case 'OnDocFormPrerender':
		$before = $resource->getTVValue('adres'); // адрес при загрузке
	break;
	case 'OnDocFormSave':
		$after = $resource->getTVValue('adres'); // адрес при сохранении
   	 break;
}

if($after == $before){
	$modx->event->output('равны');
}else{
	$modx->event->output('не равны');
}
Почему-то не получается. Должно выводить если тв не изменен — «равны», если изменен «не равны».

При загрузке ресурса сразу пишет — «не равны», при сохранении — «равны»

В какую сторону копать?
but1head
12 июля 2014, 02:38
0
Остались следующие вопросы:
1) если изменен ресурс (любое поле) а тв adres не изменен или создан ресурс без заполнения тв adres — не запускать сниппет/плагин
2) если изменен тв adres или создан ресурс с заполнением тв adres — запустить сниппет/плагин
3) запускать все это только при определенном шаблоне (как понимаю можно задать системный параметр и в нем проставить template для которых будет запускаться сниппет/плагин)
but1head
12 июля 2014, 02:23
0
plugin: getadres

$param = array(
      'adres' => $resource->getTVValue('adres'),
      'id' => $resource->get('id')
      );
$modx->runSnippet('geocoords',$param);
Почему-то с вашим кодом плагин не заработал, пока не разбирался

snippet: geocoords
<?php
$doc = $modx->getObject('modResource', $id);

$replace = array(' ', '/');
$adres_new = str_replace($replace, '', $adres);

$dataCoords = simplexml_load_file('http://geocode-maps.yandex.ru/1.x/?geocode='.$adres_new);

foreach ($dataCoords->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos as $coords) {
	
	$array = explode(' ',$coords);
	$coords = $array[1].','.$array[0];
	$doc->setTVValue('coords', $coords);
} 

$doc->save();

В тв «adres» забивается адрес (санкт-петербург, невский проспект 1/3), в тв «coords» выводятся координаты
but1head
12 июля 2014, 00:07
0
Про запись в тв нашел, не подкинете документации на «плагином на сохранение допустим»? Заранее благодарен
but1head
11 июля 2014, 20:55
0
[[!+modx.user.id:is=`1`:or:if=`[[!+modx.user.id]]`:is=`0`:then=`
<span id="open_login" onclick="open_login()">Личный кабинет</span>
`:else=`
 <a href="cabinet">Личный кабинет</a>
`]]

Если админ/не зареган = авторизация, зареган = личный кабинет. При верстке напрягало что он понимал что у меня есть авторизация в /manager
but1head
10 июля 2014, 18:57
0
0.0013461: Created inline chunk
0.3065090: Total time
3 932 160: Memory usage

Цена в месяц 749 руб.
Диск 20.0 ГБ
Процессор 2x2000 МГц
Память 1024 МБ
ОС centos6_php_selector-x86_64_isp_lite
but1head
08 июля 2014, 11:50
0
Тоже хотел предложить такую реализацию, virtuemart например, так и построен.
but1head
08 июля 2014, 00:46
+1
Вчитайтесь повнимательней, вопрос не в деньгах
but1head
07 июля 2014, 15:58
+1
Я прекрасно знаю уровень цен за работу и что на халяву никто не станет работать.
Вы развиваете modx и за это вам огромный плюс и поклон, но не очень правильно делать стандартные вещи платно. Да minishop2 не cms магазина, а дополнение, но такая маленькая фича есть во всех магазинах и должна быть у вас изначально. По поводу других дополнений вопросов нет, офис и прочее стоят своих денег т.к. это не совсем стандартный функионал и на базе его можно многое построить. Все кто разрабатывают свои системы показывают их плюсы, а не хотите стандартного функионала — заплатите.
Меня жаба не душит потратить 790р, но осадок немного не приятный остается.