Будет со временем демка :)

Топик: modCaptcha

Спасибо за хорошее дополнение! Еще бы здесь прямо демку сделали вообще класс было бы! )) Сразу просто увидеть демонстрацию было бы нагляднее)))

Топик: modCaptcha

просто по дизайну маленький комментарий: При добавлении товара в корзину (нажатии купить в карточке товара) всплывает маленькое окно напоминание об этом на джуквери, это окно/полоска черного цвета ?и на ней написан текст Что товар успешно добавлен в корзину, сделайте эту полоску как цвет (C67E35) у корзины ?, будет гораздо приятнее глазу, и выделятся будет это сообщение, фон и так темный в целом и это сообщение напоминание почти незаметно.

И еще добавлю: по опыту, расширять modUser — не удачная идея. Я уже пробовал, и с этим связано очень много проблем, особенно ввиду того, что в классе modX жестко прописано при инициализации пользователя получать именно modUser. Сами понимаете какие из-за этого вытекают проблемы. Вот поэтому я не расширяю modUser, а добавляю класс связанного объекта, и просто добавляю эту связь базовому классу. Пример добавления таких связей. На выходе вы получаете новые связанные объекты с базовым юзером без лишних заморочек (только пропишите extendedPackage и все). И в любом месте сможете работать с $modx->user->addOne(), $modx->user->getOne() и т.п. Это гораздо практичней.

Здравствуйте! Сорри, только добрался к компу нормально. Видел, вы на modxим написали, что вопрос решен, тем не менее я не увидел, чтобы кто-то расписал решение, и вы тоже не написали в чем именно проблема была. Немного напишу по этому поводу. Итак, есть предположение, что пользователь, которого вы получаете, в таблице имеет class_key = 'modUser', а по этой причине даже если вы в запросе указываете $user = $modx->getObject('extUser', array('username:=' => $nickname)), вы все равно в итоге получите объект от класса modUser, а не extUser. И таблица для этого объекта будет родная, а не расширенная. Почему? Потому что инстанс конечного объекта зависит от того, какой class_key прописан в получаемой записи. Очень подробно про это писал здесь: modxclub.ru/blog/166.html Резюмирую: для того, чтобы у вас работало как положено, у вас записи в вашей таблице должны в колонке class_key содержать имя вашего класса. Только тогда, при сохранении объекта, если это будет инстанс вашего класса, будет запись выполнена в вашу таблицу. А так получается, что запрос на селект выполнен корректно с учетом вашей таблицы, но в полученных записях class_key = 'modUser', хоть и с данными из вашей таблицы. Конечный объект — modUser, его таблица по мап-файлу — site_users, и при сохранении туда данные и пишутся. Попробуйте в консоли так сделать: print $modx->getObject('extUser', array('username' => $nickname))->get('class_key'); Что напишет? И тут же попутно: a. $user->save(); b. $user->addOne($data, 'Data'); $user->save(); c. $data->save(); Лишний раз сохраняете. Это ни к чему. Достаточно так: $user->addOne($data, 'Data'); Если связь прописана в мап-файле корректно, то $data сохранится автоматически при сохранении объекта юзера.

Попробуйте в директории /manager/ найти файл ht.access и переименовать его в .htaccess В этом файле написано «RewriteEngine Off» и по идее это должно отключить рерайты для данной папки. Ну и пропишите rel=«canonical» на всех страницах, чтобы склеились быстрее. А вообще если сайт рабочий и приносит деньги, я бы не особо заморачивался со структурой URL. Это все таки потребует склейку страниц и перенос авторитета на новые. Некоторые страницы могут выпасть из выдачи.

$managers = $modx->getService('managers','Managers',dirname(FILE).'/core/components/managers/model/managers/',$scriptProperties); 1. У вас несколькими строчками выше указано require_once dirname(dirname(dirname(FILE))).'/index.php';, то есть на две директории выше, а здесь в текущей директории. Думаю, что-то здесь не то. Да и ошибка у вас лезет, что не верная директория для пакета. Invalid path specified for package: managers; using default xpdo model path: Z:/home/modx/www/core/xpdo/om/ [2014-02-02 22:50:26] (WARN @ /mods/managers/ajax.php) Да и вообще у вас, по-моему, в корне все не правильно. Вряд ли у вас подключен extendedPackage, а значит первым делом надо подключить пакет. $modx->addPackage('managers', MODX_CORE_PATH . 'components/modxsite/model/'); И только после этого подключать сервис (без указания пути). $managers = $modx->getService('managers','Managers','',$scriptProperties); А вообще правильно — делать через коннекторы, и выполнять в процессоре. Например, как это сделано в корзине.

  1. Получить данные текучего TV-параметра {$tv = $modx->resource->getTVTvalue($tv_id)} 2. Далее полученные данные преобразовываете и получаете массив id-шников связанных товаров. И вызываете процессор получения данных этих товаров. Я вам здесь в двух строчках этого не покажу. Это программировать надо, хоть и не много.

Я делаю так: создаю статичный шаблон (напр., 'AJAX'), файл шаблона указываю ajax.php. Далее создаю пустой НЕКЕШИРУЕМЫЙ документ и его шаблоном задаю 'AJAX'. При обращении к этому документу происходит инициализация и MODX, и modxsmarty, и всего остального. И в самом ajax.php остается только прописать нужный код, без инициализации самого MODX в этом файле. Все работает.