Я написал небольшое расширение в extbase / Fluid, и теперь я столкнулся с небольшой проблемой в хранилище.
С моим расширением вы можете создавать элементы, которые используют system_categories для категоризации (аналогично каждому расширению новостей).
Я хочу показать все элементы с категорией x на странице X и все категории y на странице Y.
Я знаю, что мне нужно написать запрос в моем itemRepository.php, но я не могу заставить его работать, так что вот мой код хранилища:
public function findSearchForm($limit)
{
$query = $this->createQuery();
$query->getQuerySettings()->setLanguageUid($GLOBALS["TSFE"]->tmpl->setup['config.']['sys_language_uid']);
$query->matching(
$query->like('title','%'.$search.'%')
);
# $query->setOrderings(array('title' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING));return $query->execute();
}
Я попытался расширить запрос после «query-> like» даже с помощью такого утверждения
$query->statement("SELECT * FROM sys_category_record_mm WHERE uid_local = '11'")
Прежде всего: как вы включили категоризацию в своих записях? Правильно ли он работает в бэкэнде?
Когда ваш TCA правильно настроен для использования категории, вы можете использовать общие методы хранилища для фильтрации результатов. Но вы должны объединить условие с вашим условием title, используя AND.
Попробуйте что-то вроде этого:
public function findSearchForm($limit)
{
$query = $this->createQuery();
$constraints = array();
$yourCategory = 11;
// Your $search-variable seems to be undefined?
//$constraints[] = $query->like('title','%'.$search.'%');
$constraints[] = $query->contains('categories', $yourCategory);
$query->matching(
$query->logicalAnd($constraints)
);
// I think you dont need this...
$query->getQuerySettings()->setLanguageUid($GLOBALS["TSFE"]->tmpl->setup['config.']['sys_language_uid']);
return $query->execute();
}
Других решений пока нет …