Как подключить в MODX свой компонент к SeoFilter?
Александр Здравствуйте! Проблема в следующем, был расширен класс mFilter2, и создана отдельная таблица для фильтрации тв параметров, сделано всё было по руководству описанному Вами: https://itchief.ru/questions/591 огромное спасибо, за это подробное и отличное решение. Но возникла второстепенная проблема так как значения находятся в новой таблице, SeoFilter не может с ними нормально работать, и без помощи, решить эту проблему не получается.
Написал автору компонента, он предложил такое решение, расширить класс подсчётов и при добавлении поля в сеофильтре указывать его: extendResource
Создать новый класс подсчётов по адресу core/components/seofilter/custom/count/customcount.class.php с содержимым:
Далее было предложено:
<?php
class customCount extends sfCountHandler {
public function getExtendResourceConditions($value = '', $field = array(),$includeWhere = 1) {
$conditions = array();
$conditions['join'] = array(
'extendResource'=> array('class' => 'extendResource', 'on' => 'extendResource.resource = modResource.id')
);
if($includeWhere) {
$conditions = array_merge($conditions, $this->getModResourceConditions($value, $field));
}
return $conditions;
}
}
И прописать в системную настройку seofilter_count_handler_class значение customCount
Но не заработало:

<?php
class customCount extends sfCountHandler {
public function __construct(modX &$modx, array $config = array()) {
parent::contsruct($modx,$config)
$this->modx->addPackage('extendResource' ,$this->modx->getOption('core_path').'components/extendresource/model/');
}
public function getExtendResourceConditions($value = '', $field = array(),$includeWhere = 1) {
$conditions = array();
$conditions['join'] = array(
'extendResource'=> array('class' => 'extendResource', 'on' => 'extendResource.resource = modResource.id')
);
if($includeWhere) {
$conditions = array_merge($conditions, $this->getModResourceConditions($value, $field));
}
return $conditions;
}
}
При таком вызове сайт не грузиться выходит ошибка:
Parse error: syntax error, unexpected '$this' (T_VARIABLE) in C:\core\components\seofilter\custom\count\customcount.class.php on line 7
Если убераю: $this->
получаю: Parse error: syntax error, unexpected '$modx' (T_VARIABLE) in C:\core\components\seofilter\custom\count\customcount.class.php on line 7
Александр возможно Вы увидите в чём проблема? Может нужно делать аналогично тому как был расширен класс mFilter2, тогда как правильно расписать схему и остальное?Изображения:
Нет точки с запятой в конце:
Убирать это не нужно:
Наверно должно быть так:
Получил ответ от автора:
Можете вообще убрать весь блок конструктора.
Я говорил проверить без подключения компонента — он возможно уже будет подключен, если нет,
можно через системную настройку, принудительно грузить его в память, как минишоп2 грузится.
Настройка в ключе содержит что то вроде packages или extensions.
Блок с конструктором, если я его правильно понял то я убирал:
Честно говоря моло что понятно из этого, подскажите пожалуйста, каким образом реализовать то что он предложил?
Нужно его найти и добавить в него расширение extendresource:
Находится настройка extension_packages в разделе core -> «Система и сервер».