Подмена УРЛов у вас не работает. Переименуйте в корне сайта ht.access в .htaccess (с точкой). Если у вас веб-сервер Apache, то должно заработать.
Материал для экспертов.
Рассмотрим краткий пример:
$user = $modx->getObject('modUser', $id); print_r($user->Profile->toArray());
В результате выполнения кода, если был получен объект пользователя, мы видим данные профиля modUserProfile (или фатальную ошибку за попытку выполнения метода на non-object переменной :)).
Итак, давайте еще раз попытаемся проследить: мы получаем объект $user, и тут же пытаемся вывести данные профиля пользователя $user->Profile->toArray(), то есть переменная $user->Profile это как будто $user->Profile = $user->getOne('Profile'). Но ведь мы этого здесь не делали. Или может это делает xPDO автоматически в методе xPDO::getObject()? Нет, он там этого не делает...
За эту магию отвечают ООП методы xPDOObject::__set() и xPDOObject::__get() (смотрите исходники на гитхабе). Дело в том, что в методах __get() и __set() сразу прописана работа со связями getOne()/addOne() и т.д. и т.п. В нашем случае, когда мы обратились к необъявленной переменной $user->Profile, xPDOObject проверил свои aggregates/composites-связи, и найдя в них связь modUserProfile/Profile, выполнил $this->Profile = $this->getOne('Profile'). Таким образом у нас и появилась переменная-объект $user->Profile.
Этот механизм работает и в другую сторону, то есть в добавление объекта. Рассмотрим код:
$user = $modx->newObject('modUser', $user_data); $profile = $modx->newObject('modUserProfile', $profile_data); $user->Profile = $profile; $user->save();
Здесь, при сохранении, мы в базе данных будем иметь как запись пользователя, так и запись его профиля, так как в момент $user->Profile = $profile по сути выполнилось $user->addOne($profile), и при сохранении основного объекта сохранился и связанный с ним объект профиля (за это отвечает метод xPDOObject::_saveRelatedObjects(), выполняемый в методе xPDOObject::save() (дважды :))).
Вообще все это очень удобно при работе с xPDO-объектами, особенно в Smarty-шаблонах. К примеру вот такой небольшой код:
Пользователь: {$modx->user->Profile->fullname|default:$modx->user->username}
Здесь будет подставлено ФИО (если оно прописано в профиле) или username. При этом не надо париться был ранее получен из БД объект профиля пользователя или нет. Если не был получен, то будет получен. Если уже был получен (и является свойством объекта пользователя $modx->user), то повторного запроса к БД не будет, будет сразу возвращен текущий объект, так что и за нагрузку не приходится беспокоиться. Кстати, тут помарка: если при выполнении запроса к БД не был получен объект, то при повторном обращении к этой переменной будет опять выполнен запрос к БД, ибо значения переменной нет, и нет объекта.

Добрый день установил ваш магазин, но к сожалению кроме главной страницы не одна не отображается выводит ошибку

Например новости: Not Found The requested URL /news/ was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
или каталог к примеру catalog/noutbuki/toshiba-satellite-c50-a-k7k-15,6.html Not Found The requested URL /catalog/noutbuki/toshiba-satellite-c50-a-k7k-15,6.html was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Заранее спасибо !
Привет. MODX3 еще не выпустили :) Но если речь о 2.3, то да, будет, когда у меня руки доберутся. А доберутся скоро.
Привет Николай, а в modx revo 3 будет работать modxSDK? У меня выдаёт такую ошибку "Fatal error: require_once(): Failed opening required '/home/virtwww/w_ciffry-ru_b0b8bbb7/http/core/components/modxsdk/controllers/index.class.php' (include_path='.:') in /home/virtwww/w_ciffry-ru_b0b8bbb7/http/core/model/modx/modmanagercontroller.class.php on line 935 "
Смотрите в сторону плагинов.
В ExtJs выглядит всё достаточно просто, но когда хочешь сделать админку как часть большого целого, то начинаешь падать всё глубже, при этом ударяясь о камни =) Столкнулся даже с тем, что не все примеры корректно работали(пользовался докой 3.4, вроде такой сейчас extjs в модх) В итоге пользовался примерами Василия Наумкина, у него кстати много полезных вещей, без которых я бы не сделал задуманное. В итоге получилось как то так:
brual.combo.Snippet = function(config) { config = config || {}; Ext.applyIf(config,{ name: 'snippet' ,hiddenName: 'snippet' ,displayField: 'name' ,valueField: 'id' ,fields: ['id','name'] ,pageSize: 10 ,hideMode: 'offsets' ,url: MODx.config.connectors_url + 'element/snippet.php' ,baseParams: { action: 'getlist' } }); brual.combo.Snippet.superclass.constructor.call(this,config); }; Ext.extend(brual.combo.Snippet,MODx.combo.ComboBox); Ext.reg('brual-combo-snippet',brual.combo.Snippet); brual.window.CreateNewUser = function(config) { config = config || {}; this.ident = config.ident || 'mecnewsletter'+Ext.id(); Ext.applyIf(config,{ title: 'Добавить нового подписчика' ,id: this.ident ,url: brual.config.connector_url ,action: 'mgr/users.create' ,fields: [ {xtype: 'textfield', fieldLabel: 'E-mail',name: 'login',anchor: '99%'}, {xtype: 'checkbox', boxLabel: 'Доступ к разделу1', name: 'name1'}, {xtype: 'checkbox', boxLabel: 'Доступ к разделу2', name: 'name2'}, {xtype: 'checkbox', boxLabel: 'Доступ к разделу3', name: 'name3'}, ], items: [ { html: 'Логин и пароль будут отправлены сразу после добавления нового пользователя.', border: false, cls: 'modx-page-header' }] ,keys: [{key: Ext.EventObject.ENTER,shift: true,fn: function() {this.submit() },scope: this}] }); brual.window.CreateNewUser.superclass.constructor.call(this,config); }; Ext.extend(brual.window.CreateNewUser,MODx.Window); Ext.reg('brual-window-newsletter-create',brual.window.CreateNewUser);
Вот оно "вообще не проблема" :) Не хочется создавать новую тему, теперь встал вопрос как решить вот такую задачу: Добавляем новый ресурс, и в этот момент надо решить, отправить Анонсы для подписавшихся пользователей или нет. Что почитать\куда копать на эту тему? Спасибо.
А вот об этом я говорил - не достаточно скилов в программировании, не беритесь за ShopModxBox. Во-первых, наши технологии не подразумевают использование чанков и сниппетов, только самый минимум, логику которых модифицировать не надо. Большая часть необходимого пишется на конкретном сайте. В общем, в таких объемных задачах я не помогаю. Не понятно простое - сорри, но мы не пишем вам ваши сайты вашими руками, тем более бесплатно. Или справляйтесь сами, или кидайте клич кто поможет за денежку.
Простите, но я ничего не понял... В форме я вызываю
{snippet name="getImageList" params="tvname=`options`&tpl=`optionsTpl`&docid=`{$object.id}`"}
например с чанком но как послать add-процессору "name"-"price"?
* - это только текущие поля документа и его TV-поля. Товар не является источником его прямых значений. Но можно получить их так:
$product = $modx->resource->Product; $price = $product->sm_price;