Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #5
03 апреля 2016, 15:17
+1
а выводятся и 36 и 41 id…
А выводятся они скорее всего потому, что для них срабатывает условие
FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02'
т.е. дата публикации у них '2016-04-02'. Поэтому я в первом комментарии и сделал группировку условия, чтобы OR было в скобках.
Вот же как получается без группировки
WHERE  ( FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-02' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '2016-04-03' AND `modResource`.`parent` IN (3,27,28,29,30,31,34,33) AND `modResource`.`published` = 1 AND `modResource`.`hidemenu` = 0 AND `modResource`.`deleted` = 0 )
А чтобы ограничить parent, нужно указать depth=1 (или 0, точно не помню).
03 апреля 2016, 11:19
+1
Интересный поворот событий.
03 апреля 2016, 11:04
+1
&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[!today]]')"]
Кроме того, этот код желательно оптимизировать. Вместо вызова 2-х сниппетов вызывать один с выставлением плейсхолдеров today и yesterday. Вызывать его перед pdoPage. Тогда условие будет выглядеть так
&where=`["(FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+yesterday]]' OR FROM_UNIXTIME(publishedon, '%Y-%m-%d') = '[[+today]]')"]
Есть еще вариант с использованием фенома. Тогда можно из без сниппета обойтись.

Совет. У pdoTools сниппетов есть замечательный параметр showLog. Советую его использовать при отладке.
03 апреля 2016, 10:16
0
Сделал, как посоветовал Илья. Повесил регистрацию js на OnDocFormPrerender
А разве в плагине в третье строчке не это событие указано?
03 апреля 2016, 10:12
0
Не успел, ниже уже ответили.
Событие OnManagerPageBeforeRender будет регистрировать скрипт для любого объекта (ресурса, чанка, сниппета), а нужно только для ресурса. Тут подойдет событие OnDocFormPrerender.
В примере моего плагина 2 javacript события — beforeSubmit и success. Если задействовать первое, то второе не нужно. Потому что, во-первых, изменения уже видны в интерфейсе (обновлять страницу не нужно) и, во-вторых, новые значения запишутся в базу (не надо их ловить в OnDocFormSave). Для знатоков яваскрипт не составит труда обработать и ТВшки. Этот вариант более интерактивный.
Ну а если таких знаний не хватает, то подойдет вариант ниже — в OnDocFormSave (можно в OnBeforeDocFormSave) меняются значения ТВ, а в яваскрипте, подключенным в OnDocFormPrerender, обновляется страница. Этот вариант проще.
02 апреля 2016, 13:14
1
0
Ну и наворочено. Не уверен, что пример рабочий. Вот простейший рабочий вариант с примером изменения поля
<?php
switch ($modx->event->name) {
    case 'OnDocFormPrerender':
        $modx->controller->addHTML('
	<script type="text/javascript">
		Ext.ComponentMgr.onAvailable("modx-panel-resource", function (e) {
		    var res = Ext.getCmp("modx-panel-resource");
		    res.on("beforeSubmit", function(){
			// Меняем зачение поля longtitle
		        Ext.getCmp("modx-resource-longtitle").setValue("Новое значение");
		    });
		    res.on("success", function(){ 
		        // Перезагрузка страницы после сохранения
		        location.reload();
		    });
		});
    </script>');
    break;
}
01 апреля 2016, 18:27
+1
Интересно, многие ли знают как расшифровывается MODX?
01 апреля 2016, 17:55
+5
Согласен. Нельзяограничиватьтворческихлюдей. Вотувасимянаписаносмаленькойбуквывопрекиправиламрусскогоязыка. НонадеюсьвынеобидитесьеслияназовувасАндрей. ;)
П.С.Мнепростоленьписатьпробелы.
31 марта 2016, 22:06
0
Тут в основном революционеры. Вот явка протестантов.
31 марта 2016, 17:34
+1
А, понятно. Тут только один вариант, засунуть адрес в плейсхолдер в шаблоне.
'tpl' => '@INLINE
	{set $dlink = $uri}
	{$_modx->setPlaceholder("dlink", $uri)}
	<div class="image-fixed-fill" style="background-image: url([[+1920x1080]]);"></div>
',
31 марта 2016, 16:39
0
Если утюгом погреть страницу про pdoTools, то можно заметить написанную молоком инструкцию.
Последнее обновление позволяет сделать это так
{$_modx->resource.id | url}
31 марта 2016, 10:11
0
Тогда остается такой вариант
case xPDOTransport::ACTION_UNINSTALL:
      $c = $modx->prepare('DROP TABLE modx_****');
      $c->execute();
      break;
31 марта 2016, 09:25
0
Странно, у меня работало без ошибок. Проверим.
Можете сделать проще.
// Поменяйте modExtra на свой
$modelPath = $modx->getOption('modextra_core_path', null, $modx->getOption('core_path') . 'components/modextra/') . 'model/';
$modx->addPackage('modextra', $modelPath);
$manager->removeObjectContainer('Имя класса');
За удаление чанков отвечает настройка. Поставьте true. Видите, у сниппета ниже стоит true, поэтому они обновляются и удаляются. Если не хотите, чтобы чанки у пользователя обновлялись при обновлении компонента, то придется удалять их вручную
case xPDOTransport::ACTION_UNINSTALL:
    $chunk = $modx->getObject('modChunk', array('name'=>$chunkName));
    $chunk->remove();
    ...
31 марта 2016, 09:13
0
Ну тоже самое же написано, только запись сокращенная. Ровно ничего не изменится, кроме размера записи. Это как использовать тернарный оператор, вместо классического условия.
Ну да, ну да.
{private message}
30 марта 2016, 21:49
+1
Николай, боюсь, что вашего плюса (если он ваш) я не заслужил, так как положительно я говорил только про ту часть, которую придумал Василий. А ваша реализация вызывает смешанные чувства. Сниппет лучше заменить. Например, на такой
if ($modx->user->isAuthenticated()) {
	// Сохранить название компании
	$modx->user->Profile->set('company_name',$companyName);
	$modx->user->save();
	// Получить название компании
	return $modx->user->Profile->get('company_name');
}
Правка ExtJs исходников решает задачу до первого обновления. Лучше сделать свой скрипт и подключать его используя вариант Григория.
Тогда это будет готовое решение.
30 марта 2016, 20:39
0
я планирую использовать определенные поля для сортировки
Ну о данных планах в статье ничего не написано. Для хранения компании достаточно extended.
Конечно предложенный вариант расширения таблицы пользователей гораздо лучше, чем TV или extended.
30 марта 2016, 20:11
+1
Вообще-то DELETE FROM удаляет не таблицу, а записи из указанной таблицы. В modExtra есть код для удаления таблицы.