Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
SitemapSalesChannelCriteriaEvent example
$criteria
->
addFilter
(
new
NotFilter
(
NotFilter::CONNECTION_AND,
[
new
EqualsFilter
(
'domains.id', null
)
]
)
)
;
$criteria
->
addAssociation
(
'type'
)
;
$criteria
->
addFilter
(
new
EqualsFilter
(
'type.id', Defaults::SALES_CHANNEL_TYPE_STOREFRONT
)
)
;
$context
= Context::
createDefaultContext
(
)
;
$this
->eventDispatcher->
dispatch
(
new
SitemapSalesChannelCriteriaEvent
(
$criteria
,
$context
)
)
;
$salesChannels
=
$this
->salesChannelRepository->
search
(
$criteria
,
$context
)
->
getEntities
(
)
;
/** @var SalesChannelEntity $salesChannel */
foreach
(
$salesChannels
as
$salesChannel
)
{
if
(
$salesChannel
->
getDomains
(
)
=== null
)
{
continue
;
}
$languageIds
=
$salesChannel
->
getDomains
(
)
->
map
(
fn
(
SalesChannelDomainEntity
$salesChannelDomain
)
=>
$salesChannelDomain
->
getLanguageId
(
)
)
;
protected
function
execute
(
InputInterface
$input
, OutputInterface
$output
)
: int
{
$salesChannelId
=
$input
->
getOption
(
'salesChannelId'
)
;
$context
= Context::
createDefaultContext
(
)
;
$criteria
=
$this
->
createCriteria
(
$salesChannelId
)
;
$this
->eventDispatcher->
dispatch
(
new
SitemapSalesChannelCriteriaEvent
(
$criteria
,
$context
)
)
;
$salesChannels
=
$this
->salesChannelRepository->
search
(
$criteria
,
$context
)
;
/** @var SalesChannelEntity $salesChannel */
foreach
(
$salesChannels
as
$salesChannel
)
{
/** @var list<string> $languageIds */
$languageIds
=
$salesChannel
->
getDomains
(
)
->
map
(
fn
(
SalesChannelDomainEntity
$salesChannelDomain
)
=>
$salesChannelDomain
->
getLanguageId
(
)
)
;
$languageIds
=
array_unique
(
$languageIds
)
;