Так ведь текущий объект я получаю $modx -> resource = $modx -> getObject('modResource', $id); Это в коде выше есть. Значит как то можно прикрутить и modRequest? Или я ошибаюсь? И как же про выдержку о global $modx;? Может получится малой кровью обойтись?
Здравствуйте. Fatal error: Call to a member function getParameters() on a non-object in M:\OpenServer\domains\localhost\API\core\cache\includes\elements\modsnippet\1.include.cache.php on line 75 Вам в ошибке четко указано где и почему она лезет. Смотреть надо сам getPage, а не ваш код. github.com/opengeek/getPage/blob/master/core/components/getpage/snippet.getpage.php#L70 У вас нет объекта $modx->request, то есть modRequest. Сделайте лучше чистый документ с пустым шаблоном, и в него уже вставьте вызов своего сниппета, так как getPage-у еще и объект текущего ресурса нужен, без него он тоже будет разваливаться. Вообще этот вопрос скорее всего будет довольно сложным, и скорее всего зря вы на него замахнулись. Здесь довольно много подводных камней. Я вас не научу программировать, а за решением этой задачки возможно вы потратите не один час.
Все, вопрос решенный. Правильный код: Процессор. <?php /* Получаем новинки */
require_once dirname(dirname(FILE)).'/getdata.class.php';
class modWebCatalogProductsModelGetdataProcessor extends modWebCatalogProductsGetdataProcessor{
public function initialize(){
if(!(int)$this->getProperty('model')){
return 'Не была указана марка';
}
return parent::initialize();
}
public function prepareCountQuery(xPDOQuery & $query){
$query = parent::prepareCountQuery($query);
if($model = (int)$this->getProperty('model')){
$query->innerJoin('modTemplateVarResource',
'model', "model.contentid = {$this->classKey}.id AND
model.tmplvarid = 10 AND model.value='{$model}'");
}
return $query;
}
} return 'modWebCatalogProductsModelGetdataProcessor'; Шаблон: {assign var=params value=[ "model" => $modx->resource->id, "limit" => 9, "getPage" => true, 'cache' => true ]} {processor action="web/catalog/products/model/getdata" ns="modxsite" params=$params assign=result}
<div style="overflow:hidden;"> {if $result.success && count($result.object)} {foreach $result.object as $object} {assign var=image value=$object.image|default:$object.imageDefault} <div class="goodItem left"> <img src='{snippet name="phpthumbon" params="input=`{$image}`&options=`w=238&h=170&zc=1`"}' width="238" height="170"> <h2>{$object.pagetitle}</h2> <p>{$object.introtext}</p> <span class="block">{$object.sm_price|number_format:0:",":" "} грн.</span> <a class="block" href="{$object.uri}">Подробнее</a> </div> {/foreach} {else} <h2 class="notGoods">Категория пуста</h2> {/if} </div> [[+page.nav]] Передавать следовало именно ID. И не забывайте в таких случаях проверку на наличие передаваемого значения и обязательно с конвертацией типа данных, а то будет передано строковое значение (то есть переменная есть), а поиск будет не корректный.Что-то у тебя там жуткое :-) 1. У тебя в TV содержится текстовый заголовок цели? Не лучше ли id документа содержать? Да и скорее всего он и содержится, и надо именно id передавать. (шли доступы в личку, старый пароль не проходит). 2. Два рада $this->getProperty('model') использовать — не комильфо. Лучше так: if($model = $this->getProperty('model')){ $c->innerJoin('modTemplateVarResource', 'model', "model.contentid = {$this->classKey}.id AND model.tmplvarid = 10 AND model.value='{model}'"); }
В продолжение темы… Переопределил modWebCatalogProductsGetdataProcessor <?php require_once dirname(dirname(FILE)).'/getdata.class.php'; class modWebCatalogProductsModelGetdataProcessor extends modWebCatalogProductsGetdataProcessor{
public function initialize(){
$this->setDefaultProperties(array(
'model' => false,
));
return parent::initialize();
}
public function prepareQueryBeforeCount(xPDOQuery $c) {
$c = parent::prepareQueryBeforeCount($c);
$c->innerJoin('ShopmodxProduct', 'Product');
if($this->getProperty('model')){
$c->innerJoin('modTemplateVarResource', 'model',
"model.contentid = {$this->classKey}.id AND model.tmplvarid = 10
AND model.value='$this->getProperty('model')'");
}
return $c;
}
} return 'modWebCatalogProductsModelGetdataProcessor'; и вывод {assign var=params value=[ "model" => $modx->resource->pagetitle ]} {processor action="web/catalog/products/model/getdata" ns="modxsite" params=$params assign=result}
<div style="overflow:hidden;"> {if $result.success && count($result.object)} {foreach $result.object as $object} {assign var=image value=$object.image|default:$object.imageDefault} <div class="goodItem left"> <img src='{snippet name="phpthumbon" params="input=`{$image}`&options=`w=238&h=170&zc=1`"}' width="238" height="170"> <h2>{$object.pagetitle}</h2> <p>{$object.introtext}</p> <span class="block">{$object.sm_price|number_format:0:" ,":" "} грн.</span> <a class="block" href="{$object.uri}">Подробнее</a> </div> {/foreach} {else} <h2 class="notGoods">Категория пуста</h2> {/if} </div> [[+page.nav]] но не тут то было 333806.tehotdel.web.hosting-test.net/models/audi.htmlИгорь, это вопрос, касающийся в принципе основ серверного администрирования сайтов. На это полно информации в интернете. Приложите побольше усилий на то, чтобы найти готовую информацию в сети, а не делайте из нас помощников поисковых систем, пожалуйста. У вас по умолчанию подмена на корень сайта. github.com/modxcms/revolution/blob/develop/ht.access#L12 А сайт вы положили не в корень. Вот и догадайтесь, что с этим сделать.
К сожалению, двери и слинги — это не стандартные проекты. В дверях боле менее по уму все сделано, но там и кодинг более сложный был и бОльшая часть необходимого не была включена в сборку. А на слингах в принципе в наследство досталась не правильная структура, в результате чего пришлось хардкодить, что не есть хорошо. Пока что придется все делать по простой модели: один товар — один размер — одна цена. То есть даже если три галстука, которые отличаются только цветом, то надо заводить отдельно три товара-галстука, у каждого свой цвет, своя цена. А цвет, размер и прочее — это заводится в TV-параметрах. В общем, пока эта сборка больше ориентирована на простые магазины. Более сложный функционал будет только позже.
а как правильно RewriteBase делать, плиз выложите строчку примера
Что вы на денверах все MODX в папку суете?..
localhost/modx/ адрес главной C:\HOST\home\localhost\www\modx — папка