Всего 122 778 комментариев

Василий Наумкин
19 сентября 2013, 03:36
0
Если делаешь для себя и переносить никуда не планируешь — то вполне правильный метод.
Николай
19 сентября 2013, 00:30
0
{$modx->getTableName('tablename')}
Ага, в этом была проблема, нафиг getTableName только чистое название бд… А на сколько этот метод правильный?
Николай
19 сентября 2013, 00:10
0
Василий, я только вникаю в суть работы PDO и xPDO. Прошу подсказать как вывести все данные из своей созданной таблички.
$sql = "SELECT * FROM {$modx->getTableName('tablename')} LIMIT 1000";
$q = $modx->prepare($sql);
$q->execute();
$res = $q->fetchAll(PDO::FETCH_ASSOC);

foreach ($res as $v) {
    echo $v['createdon'];
}
Ничего не выводится… Я пытался и modx_tablename — тоже результата 0.

Из предыдущей заметки

$q = $modx->newQuery('modResource');
$q->where(array('id:>' => 0));
$q->limit('100');
if ($q->prepare() && $q->stmt->execute()) {
    $arr = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
}
getStatus('Выборка '.count($arr).' ресурсов через xPDO');
Это вообще кладет сайт с 500й ошибкой
Максим Свиридов
18 сентября 2013, 22:42
0
А какой нынче (для 0.7.0) Для Yanndex`a Callback URI?
Сделал по аналогии Твиттера: сайт.ru/components/hybridauth/?hauth.done=Yandex
получаю redirect_uri_mismatch
Что не так делаю?
Алексей Карташов
18 сентября 2013, 22:02
0
Да! Хабрапак очень классный)
Продолжайте в том же духе!

p.s. эх, их бы чуть побольше (буквально раза в 2)), шоп ретина, все дела… да svg… мечты-мечты =)
Михаил
18 сентября 2013, 20:43
0
А был кажется пост.
Вот тут думаю варианты:
Вот раз
Вот два
Василий Наумкин
18 сентября 2013, 20:36
0
Тебе спасибо (у нас тут все «на ты»)!

Я думаю, теперь ты чаще будешь видеть свои иконки, учитывая популярность HybridAuth для MODX.

Обновление с радостью добавлю!
Алексей Карташов
18 сентября 2013, 18:35
0
Понял, спасибо)

p.s. я как в доки экста захожу — у меня глаза округляются — ни хрена не понимаю с какого боку к нему подойти xD
Поэтому, если что-то с экстом делаю, то только по аналогии с уже написанным в самом modx. Дальше не хожу)
Василий Наумкин
18 сентября 2013, 17:23
9
0
<?php
$tvid = 1; // id нужного ТВ параметра
$res = array(); // Сюда забиваем результаты

$q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid));
$q->select('contentid,value');
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$res[$row['contentid']] = $row['value'];
	}
}
print_r($res);

Получишь массив с id ресурсов и значенями ТВ c id = 1.
Николай
18 сентября 2013, 17:00
0
Может быть далеко не лучшее решение, но у меня сдали нервы =)

$mass = explode(',', $idsx);

$result = array();

for ($i=0; $i<count($mass); $i++) {
$page = $modx->getObject('modResource', $mass[$i]);
array_push($result, $page->getTVValue('goodsx')); }

$result = array_values(array_unique($result));

for ($i = 0; $i<count($result); $i++) {
echo '<option value="'.$result[$i].'">'.$result[$i].' см</option>'; }
Собственно idsx мы передаем сниппетом msProduct
Василий Наумкин
18 сентября 2013, 14:32
0
stateful — это встроенная фишка ExtJS, у них в доках описано.
Все само сохраняет и делает, нужно только указать верные параметры и функцию getState().

У меня отключено потому, что показалось не очень удобно, когда у юзера запоминается таб — он чаще нужен только первый.
Алексей Карташов
18 сентября 2013, 11:11
0
Круто-круто! Спасибо огромное!

А вот это:
/*
	Ext.apply(this, {
		activeTab: 0
		,stateful: true
		,stateId: \'modx-user-tabs\'
		,stateEvents: [\'tabchange\']
		,getState: function() {
			return {
				activeTab:this.items.indexOf(this.getActiveTab())
			};
		}
	});
*/
, на сколько я понимаю, для того, чтобы активную вкладку запоминать? И где-то есть метод. который в это куку записывает?

p.s. интересный способ вывода скриптов через массив и implode) Возьму на заметку))
Василий Наумкин
18 сентября 2013, 10:56
0
По второму вопросу сказать не могу — голова занята другим.

А по первому — держи плагин от Extras, там всё понятно:
if ($modx->event->name == 'OnManagerPageBeforeRender') {

	$controller->Extras = $Extras = $modx->getService('extras','Extras', MODX_CORE_PATH . 'components/extras/model/extras/', array());

	$controller->addLexiconTopic('extras:default');
	//$controller->addJavascript($this->modx->getOption('manager_url',null,MODX_MANAGER_URL).'assets/modext/util/datetime.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/extras.js');
	$controller->addJavascript($Extras->config['jsUrl'].'misc/extras.combo.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/widgets/key/keys.grid.js');
	$controller->addJavascript($Extras->config['jsUrl'].'mgr/widgets/extras.tree.js');
	$controller->addCss($Extras->config['cssUrl'].'mgr/main.css');

	$scripts = array(
		'head' => '
			Extras.config = '.$modx->toJSON($Extras->config).';
			Extras.config.connector_url = "'.$Extras->config['connectorUrl'].'";
		'
		,'tree' => $modx->hasPermission('extras_tree')
			? '
			Ext.ComponentMgr.onAvailable(\'modx-leftbar-tabpanel\', function() {
				this.on(\'beforerender\', function() {
					this.add({
						title: _(\'extras_packages\')
						,xtype: \'extras-tree-extras\'
						,id: \'extras-tree-extras\'
					});
				});
			});
			'
			: ''
		,'user' => '
			Ext.ComponentMgr.onAvailable(\'modx-user-tabs\', function() {
			/*
				Ext.apply(this, {
					activeTab: 0
					,stateful: true
					,stateId: \'modx-user-tabs\'
					,stateEvents: [\'tabchange\']
					,getState: function() {
						return {
							activeTab:this.items.indexOf(this.getActiveTab())
						};
					}
				});
			*/
				this.on(\'beforerender\', function() {
					this.add({
						title: _(\'extras_keys\')
						,xtype: \'extras-panel-keys\'
						,id: \'extras-panel-keys\'
					});
				});
			});
		'
		,'permissions' => $modx->hasPermission('extras_repository_new')
			? 'MODx.perm.extras_repository_new = true;'
			: ''
	);

	$controller->addHtml('<script type="text/javascript">'.implode("\n", $scripts).'</script>');
}

Вся соль в волшебном методе Ext.ComponentMgr.onAvailable.
Юрий Эффа
17 сентября 2013, 22:59
0
Так вопрос с нерабочим (в данной ситуации) сниппетом, мы так и не решили, вроде?
Роман Наумов
17 сентября 2013, 21:00
0
Вот здесь нечто подобное обсуждалось.
Василий Наумкин
17 сентября 2013, 19:44
0
Да мне то без разницы как у тебя сайт будет работать.

Просто предупредил.
Юрий Эффа
17 сентября 2013, 19:27
0
Василий, благодарю за совет — буду иметь ввиду.
Полагаю, что в мой адрес посыпятся гром и молнии, но всё таки… А если сайт небольшой и производительностью можно пренебречь в угоду упрощения работы контент-менеджера..?)
Сергей
17 сентября 2013, 18:30
0
Нет. Вот допустим на Хабре, публикации ложатся в директорию post, т.е. site.ru/post/12456
Мне типа этого нужно.
Муравьев Олег
17 сентября 2013, 18:14
0
Тебе нужно в документе, в поле alias жестко прописать то, что тебе нужно.