Алексей Карташов

Алексей Карташов

С нами с 04 февраля 2013; Место в рейтинге пользователей: #58

Зачем нужен action.php в компонентах?

Всем привет!

Напомните, пожалуйста, зачем нужен action.php для обработки ajax-запросов в компонентах?

Т.е. я понимаю, что некоторые компоненты врубают MODX_API_MODE, чтобы modx не запускал системный обработчик запросов (который будет проверять статус сайта, загружать необходимый ресурс, отдавать соответствующие ошибки и вот это вот всё), и можно было бы просто обработать запрос и отдать какой-то результат (закрыв сессию).

Но
Алексей Карташов
23 октября 2017, 11:56
modx.pro
1
1 430
0

[sql] Как добавить произвольную строку в выборку?

Всем привет!

Пните в нужную сторону, пожалуйста. Простая вроде задачка, а решения что-то не видно.

Вот есть запрос, который выбирает, скажем, ресурсы и который собирается через newQuery. Есть несколько условий для выборки в WHERE, которые генерируются в зависимости от других условий.

Вопрос — как с учётом имеющихся в запросе условий добавить в выборку строку с произвольным id?

Проще объясню на примере:
Алексей Карташов
12 апреля 2015, 03:33
modx.pro
1
4 114
0

Super MODx SEO-strict +ускоряем фронтенд

Михаил задал вопрос про канонизацию урлов в MODx.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.

Поехали.
Алексей Карташов
25 марта 2015, 14:29
modx.pro
70
16 608
+11

Улучшения админ-меню. Раскрытие по клику и не только

Проскочил тут вопрос про скорость раскрытия верхнего меню в админке.
И вспомнилось мне, как меня жутко бесит это hover-меню.
Сколько раз я матерился случайно нажимая на случайный пункт на внезапно раскрывшемся подменю.
Или когда оно внезапно закрывается в самый неподходящий момент, потому что курсор вышел на доли секунды на пару пикселей за его пределы и приходится заново елозить мышкой в поисках нужного пункта и ждать эти грёбанные анимации…

Короче, выбрал время и, собственно, встречайте:
Алексей Карташов
11 февраля 2015, 23:22
modx.pro
4
3 498
+3

Возможно баг вывода tv-фильтров в mFilter2

Сел тут посмотреть mSearch2/mFilter2, что к чему да почему и наткнулся на баг (возможно).
Алексей Карташов
23 января 2015, 15:24
modx.pro
1 612
0

Залогинить юзера на фронте, если он залогинен в админке

Всем привет!
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
switch ($modx->event->name) {
  сase 'OnHandleRequest':
    if ($modx->context->key == 'mgr') { return; }
    // если залогинен в 'mgr' и не залогинен в текущем контексте
    if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
      // логиним юзера в текущем контексте
      $modx->user->addSessionContext($modx->context->key);
    }
   
    // die(var_dump($modx->user->hasSessionContext('mgr')).' '.var_dump($modx->user->hasSessionContext($modx->context->key)));
    break;
}
Но чот не работат.

Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его mgr-сессия, т.е. из админки разлогинивает.

Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
Алексей Карташов
20 ноября 2014, 09:32
modx.pro
1
1 990
0

Наследуемость полей у расширяемых xPDO-классов

Всем привет!

Смотрите, когда в своих компонентах мы наследуемся от, допустим, modResource, то в схеме мы пропишем следущее:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
  <object class="myObject" extends="modResource">
  </object>
</model>
И, собственно, всё — объект myObject унаследует все поля, их свойства и методы от класса modResource.

Теперь то, что хочу сделать я.
У меня есть пара десятков сущностей (и, соответственно, таблиц), у каждой из которых должен быть определённый набор полей, вроде «кем создан», «когда создан», «активно», «удалено» и т.д.

Так вот по аналогии с расширением класса modResource подумалось мне сделать вот так:
<model package="myPackage" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="myPackage" phpdoc-subpackage="" version="1.1">
  <object class="myObjectTemplate" extends="xPDOSimpleObject">
    <field key="active"                  dbtype="tinyint" precision="1"    attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="deleted"                 dbtype="tinyint" precision="1"    attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="createdby"               dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="createdon"               dbtype="int"     precision="20"   attributes="unsigned" phptype="timestamp" null="false" default="0" />
    <field key="deletedby"               dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
    <field key="deletedon"               dbtype="int"     precision="20"   attributes="unsigned" phptype="timestamp" null="false" default="0" />
    <!-- в действительности будет ещё десяток таких полей + индексы к ним -->
  </object>

  <object class="myObjectOne" table="my_object_one" extends="myObjectTemplate">
    <field key="my_object_one_field"     dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
  </object>
  
  <object class="myObjectTwo" table="my_object_two" extends="myObjectTemplate">
    <field key="my_object_two_field"     dbtype="int"     precision="10"   attributes="unsigned" phptype="integer"   null="false" default="0" />
  </object>
</model>
Таким образом, имеем объект-«шаблон», у которого прописаны определённые поля и не прописана таблица. И остальные классы, которые расширяют этот класс-«шаблон» и добавляют в себя собственные столбцы (коряво выразился, знаю).

Так вот.
Алексей Карташов
12 ноября 2014, 22:52
modx.pro
12
2 774
+2

На post запросах отваливается php5-fpm

Всем привет!

Если обычно в вопросах, касаемых linux, у меня кривые руки и сам всё ломаю, то теперь я не при чём :-)

В общем, система debian 7.
Добавил dotdeb-репозитории и обновился:
sudo apt-get update
Почему-то не всё смогло скачаться (это вывод в консоли):
{здесь список скачавшихся пакетов}
Err http://ppa.launchpad.net wheezy/main Sources
  404  Not Found
Err http://ppa.launchpad.net wheezy/main i386 Packages
  404  Not Found
{здесь список скачавшихся пакетов}
W: Failed to fetch http://ppa.launchpad.net/nginx/stable/ubuntu/dists/wheezy/main/source/Sources  404  Not Found
W: Failed to fetch http://ppa.launchpad.net/nginx/stable/ubuntu/dists/wheezy/main/binary-i386/Packages  404  Not Found
E: Some index files failed to download. They been ignored, or old ones used instead.
Ну, думаю, ладно. Проапгрейдимся:
sudo apt-get upgrade

Всё прошло нормально. Т.е. по сути обычный апдейт.
Но вот после этого
Алексей Карташов
22 октября 2014, 16:01
modx.pro
7 583
0

nginx периодически отдаёт 404 на тяжёлых скриптах

Всем привет!

В общем, nginx периодически отваливается на тяжёлых скриптах.
Т.е. есть у меня сниппет, который ресайзит одну (но большую) картинку. И раз-через-раз страница открывается с 404 ошибкой. При чём я бы понял, если бы дело было в таймаутах, но тут ведь как — nginx может через 2 секунды отдать 404, а может думать секунд 10 и потом спокойно открыть страничку с отресайзенной картинкой. Магия.
Алексей Карташов
24 сентября 2014, 10:19
modx.pro
2 057
0

Актуализация данных в mysql-таблице. Много данных.

Всем привет!

Ситуация такая.
Есть в базе таблица, скажем, с десятью тысячами строк. Их будет и 100 тысяч, и миллион, и гораздо больше.
И есть внешний источник этих данных, т.е. api стороннего сайта, откуда эти данные по крону вытягиваются.
Количество данных увеличивается постоянно. И с каждым разом с внешнего сайта нужно вытягивать всё больше и больше.

Задача — держать данные в таблице в актуальном состоянии, в соответствии с этим внешним источником.
Вопрос — как такое лучше провернуть?)

Какие я вижу варианты:
Алексей Карташов
11 августа 2014, 14:21
modx.pro
1
2 207
0