Владимир

Владимир

С нами с 28 декабря 2012; Место в рейтинге пользователей: #90
Василий Наумкин
24 февраля 2016, 19:36
1
0
Да и так вроде уже должно работать:
&where=`{"tags.file_id":null}`
Но Fenom, понятно, лучше со всех сторон.
Алексей
24 февраля 2016, 18:11
1
0
Тоже долго искал решения для IS NULL условия, никак не мог заставить pdoTools писать IS NULL, всегда было IS " NULL", но вот через fenom все заработало с первого раза:
{$_modx->runSnippet('pdoResources', [
'loadModels'	=> 'ms2gallery',
'class'		=> 'msResourceFile',
'where'		=> [
	'parent'	    	=> 0,
	'active'	    	=> 1,
	'resource_id'		=> "{$_modx->resource.id}",
	'tags.file_id:IS'	=> null
	],
'limit'		=> 0,
....
Это для выборки изображений из галереи ms2gallery, которым не присвоено ни одного тэга.
Павел Романов
23 февраля 2016, 14:48
2
+1
[[pdoMenu?
&parents=`20`
&level=`3`
&levelClass=`lev`
&tplParentRow=`@INLINE <li [[+classes]]>[[+menutitle]][[+wrapper]]</li></div>`
&tpl=`@INLINE <li [[+classes]]><a href="[[+link]]">[[+menutitle:nbsp]]</a></li>`
]]
Ну и оформите потом как нужно .lev1, .lev2, .lev3
Дмитрий Кондаков
17 февраля 2016, 19:14
1
+2
А можно и так:
$(document).on('af_complete', function(event, response) {
  if (response.success) {
    var form = response.form;
    if(form.data('yareach')) {
      yaCounter25745255.reachGoal(form.data('yareach'));
    }
  }
});
И тогда имя цели прописывать в самой форме чтобы каждый раз в скрипты не лазить:
<form data-yareach="callback" ...
Евгений Шеронов
17 февраля 2016, 19:02
2
+3
Всё есть в документации к AjaxForm:
Немножко подправив, можно сделать что-угодно.
$(document).on('af_complete', function(event, response) {
	if (response.success) {
    		var form = response.form;
   		if (form.attr('id') == 'callback') {yaCounter25745255.reachGoal('callback');}
		if (form.attr('id') == 'buy') {yaCounter25745255.reachGoal('buy');}
		if (form.attr('id') == 'commerce') {yaCounter25745255.reachGoal('commerce');}
        }
});

Не проверял, но должно работать)
Павел Гвоздь
16 февраля 2016, 18:59
3
0
Скрипт мигрирует с ТВ типа «Тег» на ТВ типа «tvSuperSelect»:
<?php
$tv_tag = 18; // id тв поля с типом "Тег"
$tv_tss = 17; // id тв поля с типом "tvSuperSelect"
$modx->addPackage('tvsuperselect', MODX_CORE_PATH .'components/tvsuperselect/model/');
$objs = $modx->getIterator('modTemplateVarResource', array('tmplvarid' => $tv_tag));
foreach ($objs as $obj)
{
	$values = explode(',', $obj->value);
	foreach ($values as $value)
	{
		$where = array(
			'resource_id' => $obj->contentid,
			'tv_id' => $tv_tss,
			'value' => $value,
		);
		if (!$modx->getCount('tvssOption', $where))
		{
			$new = $modx->newObject('tvssOption');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
		$where = array(
			'contentid' => $obj->contentid,
			'tmplvarid' => $tv_tss,
		);
		if ($old = $modx->getObject('modTemplateVarResource', $where))
		{
			$old_values = $modx->fromJSON($old->value);
			$old_values[] = $value;
			$old->set('value', $modx->toJSON(array_unique($old_values)));
			$old->save();
		}
		else {
			$new = $modx->newObject('modTemplateVarResource');
			$new->fromArray($where);
			$new->save();
			unset($new);
		}
	}
}
Запускать в пакете "Console"
Илья Уткин
15 февраля 2016, 13:51
10
+12
Вот такой файлик проще
<?php
define('MODX_API_MODE', true);
require 'index.php';
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');
unlink(basename(__FILE__));
$modx->sendRedirect('/manager/');
?>

Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
Илья Уткин
15 февраля 2016, 12:00
1
+4
По поводу вывода новостей с другого сайта. Хорошо, что начал писать код. Но надо стараться убирать какое бы то ни было оформление (HTML) из кода. За оформление в MODX отвечают чанки. Вот их и надо использовать. И самому потом проще будет поменять оформление, если что
<?php
$tpl = $modx->getOption('tpl', $scriptProperties, 'myTpl');
require_once 'assets/library/simple_html_dom.php';
$html = file_get_html('http://colesa.ru/news');
foreach($html->find('.views-row') as $element) {
    $item['link'] = $element->find('.news-list .theme-pic a', 0)->href;
    $item['title'] = $element->find('.news-list .head h2 a', 0)->plaintext;
    $item['img'] = $element->find('.news-list .theme-pic a img', 0)->src;
    $item['description'] = $element->find('.news-list .news-list-text', 0)->plaintext;
    $elements[] = $item;
}

$output = array();
for($i = 0; $i < 10; $i++) {
  $output[] = $modx->getChunk($tpl, $elements[$i]);
}
return implode(PHP_EOL, $output);

И чанк myTpl
<div class="col-sm-12 margin-top-bottom-30">
  <a target="_blank" href="[[+link]]"><h4>[[+title]]</h4></a>
  <div class="col-sm-4"><img class="img-responsive" src="[[+img]]"></div>
  <div class="col-sm-8">[[+description]]</div>
</div><hr>
Павел Гвоздь
13 февраля 2016, 08:48
3
+2
Феномом как-то так:
{if $_modx->resource.tags?}
	{foreach json_decode($_modx->resource.tags,1) as $tag}
		{var $tags[] = '<a href="">'~ $tag ~'</a>'}
	{/foreach}
	{$tags|join:", "}
{/if}
На стандартном синтаксисе хз, надо писать сниппет. Где-то в марте обновлю пакет, добавлю туда необходимый, для вывода стандартным синтаксисом, сниппет. Сейчас совершенно не до этого, тем более я уже давно не использую почти нигде стандартный синтаксис MODX, поэтому мне «не припекает» особо писать его.

Можешь сам для себя написать сниппет, он будет похож на код Fenom. Ничего сверхъестественного нет.