206 lines
9.3 KiB
PHP
206 lines
9.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Lts\HomePage\Setup\Patch\Data;
|
|
|
|
use Magento\Cms\Model\BlockFactory;
|
|
use Magento\Cms\Model\PageFactory;
|
|
use Magento\Framework\Setup\ModuleDataSetupInterface;
|
|
use Magento\Framework\Setup\Patch\DataPatchInterface;
|
|
|
|
class InstallHomePageContent implements DataPatchInterface
|
|
{
|
|
public function __construct(
|
|
private readonly ModuleDataSetupInterface $moduleDataSetup,
|
|
private readonly BlockFactory $blockFactory,
|
|
private readonly PageFactory $pageFactory
|
|
) {
|
|
}
|
|
|
|
public function apply(): self
|
|
{
|
|
$this->moduleDataSetup->getConnection()->startSetup();
|
|
|
|
$this->saveBlock(
|
|
'lts-home-announcement',
|
|
'LTS Home - Top Announcement',
|
|
$this->announcementContent()
|
|
);
|
|
$this->saveBlock(
|
|
'lts-home-dealer-pricing',
|
|
'LTS Home - Dealer Pricing',
|
|
$this->dealerPricingContent()
|
|
);
|
|
$this->saveBlock(
|
|
'lts-home-product-lines',
|
|
'LTS Home - Shop By Product Line',
|
|
$this->productLinesContent()
|
|
);
|
|
$this->saveBlock(
|
|
'lts-home-shop-by-category',
|
|
'LTS Home - Shop By Category',
|
|
$this->shopByCategoryContent()
|
|
);
|
|
|
|
$page = $this->pageFactory->create()->getCollection()
|
|
->addFieldToFilter('identifier', 'athlete2-home-greece')
|
|
->addStoreFilter(0, false)
|
|
->setPageSize(1)
|
|
->getFirstItem();
|
|
|
|
if ($page->getId()) {
|
|
$page->setContent($this->homePageContent());
|
|
$page->setPageLayout('1column');
|
|
$page->setIsActive(true);
|
|
$page->save();
|
|
}
|
|
|
|
$this->moduleDataSetup->getConnection()->endSetup();
|
|
|
|
return $this;
|
|
}
|
|
|
|
private function saveBlock(string $identifier, string $title, string $content): void
|
|
{
|
|
$block = $this->blockFactory->create()->getCollection()
|
|
->addFieldToFilter('identifier', $identifier)
|
|
->setPageSize(1)
|
|
->getFirstItem();
|
|
|
|
if (!$block->getId()) {
|
|
$block = $this->blockFactory->create();
|
|
}
|
|
|
|
$block->setTitle($title)
|
|
->setIdentifier($identifier)
|
|
->setContent($content)
|
|
->setIsActive(true)
|
|
->setStores([0])
|
|
->save();
|
|
}
|
|
|
|
private function announcementContent(): string
|
|
{
|
|
return <<<'HTML'
|
|
<div class="lts-announcement" role="region" aria-label="Store announcements" data-mage-init='{"Magento_Theme/js/lts-announcement":{"delay":3000,"duration":1200}}'>
|
|
<div class="lts-announcement__inner">
|
|
<div class="lts-announcement__viewport" aria-live="off">
|
|
<div class="lts-announcement__track">
|
|
<a class="lts-announcement__item is-active" href="{{store url='promotions'}}">LTS Summer Savings Event – Save up to 40%</a>
|
|
<a class="lts-announcement__item" href="{{store url='products/4k'}}">Explore LTS 4K Security Solutions</a>
|
|
<a class="lts-announcement__item" href="{{store url='customer/account/login'}}">Sign In For Dealer Pricing, Availability & Checkout</a>
|
|
</div>
|
|
</div>
|
|
<span class="lts-announcement__links">
|
|
<a href="{{store url='request-a-quote'}}">Request a Quote</a>
|
|
<a href="{{store url='contacts'}}">Help</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
HTML;
|
|
}
|
|
|
|
private function dealerPricingContent(): string
|
|
{
|
|
return <<<'HTML'
|
|
<section class="lts-dealer" aria-labelledby="lts-dealer-title">
|
|
<div class="lts-dealer__icon" aria-hidden="true">
|
|
<img src="{{view url='Magento_Theme::images/lts-home-v2/dealer-sign-in.png'}}" alt="">
|
|
</div>
|
|
<div class="lts-dealer__content">
|
|
<h2 id="lts-dealer-title">Sign In For Dealer Pricing</h2>
|
|
<p>Unlock Dealer Pricing, Availability, And Checkout.</p>
|
|
<div class="lts-dealer__actions">
|
|
<a class="lts-dealer__button" href="{{store url='customer/account/login'}}">Sign In</a>
|
|
<span class="lts-dealer__divider" aria-hidden="true"></span>
|
|
<div class="lts-dealer__new">
|
|
<span>New To LTS?</span>
|
|
<a href="{{store url='customer/account/create'}}">Become A Customer Today <span aria-hidden="true">⟶</span></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
HTML;
|
|
}
|
|
|
|
private function productLinesContent(): string
|
|
{
|
|
return <<<'HTML'
|
|
<section class="lts-product-lines" aria-labelledby="lts-product-lines-title">
|
|
<h2 id="lts-product-lines-title" class="lts-home-heading">Shop By Product Line</h2>
|
|
<div class="lts-product-lines__grid">
|
|
<a class="lts-line-card lts-line-card--platinum" href="{{store url='products/product-lines/platinum.html'}}">
|
|
<img src="{{view url='Magento_Theme::images/lts-home-v2/platinum.png'}}" alt="Platinum Plus cameras and recorder">
|
|
<span class="lts-line-card__copy">
|
|
<strong>Platinum</strong>
|
|
<i></i>
|
|
<span>Our flagship line delivering maximum performance, reliability, and innovation.</span>
|
|
<b>Explore ⟶</b>
|
|
</span>
|
|
</a>
|
|
<a class="lts-line-card lts-line-card--prox" href="{{store url='products/product-lines/pro-x.html'}}">
|
|
<img src="{{view url='Magento_Theme::images/lts-home-v2/pro-x.png'}}" alt="Pro-X cameras and recorder">
|
|
<span class="lts-line-card__copy">
|
|
<strong>PRO-<em>X</em></strong>
|
|
<i></i>
|
|
<span>Advanced solutions for professionals who demand more.</span>
|
|
<b>Explore ⟶</b>
|
|
</span>
|
|
</a>
|
|
<a class="lts-line-card lts-line-card--defendas" href="{{store url='products/product-lines/defendas.html'}}">
|
|
<img src="{{view url='Magento_Theme::images/lts-home-v2/defendas.png'}}" alt="Defendas integrated access control system">
|
|
<span class="lts-line-card__copy">
|
|
<strong>DEFENDAS</strong>
|
|
<i></i>
|
|
<span>Integrated security systems for access control and device management.</span>
|
|
<b>Explore ⟶</b>
|
|
</span>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
HTML;
|
|
}
|
|
|
|
private function homePageContent(): string
|
|
{
|
|
return <<<'HTML'
|
|
<div class="lts-home-content">
|
|
{{block class="Magento\Cms\Block\Block" block_id="lts-home-dealer-pricing"}}
|
|
{{block class="Magento\Cms\Block\Block" block_id="lts-home-product-lines"}}
|
|
{{block class="Magento\Cms\Block\Block" block_id="lts-home-shop-by-category"}}
|
|
{{block class="Magento\Cms\Block\Block" block_id="lts-home-resources"}}
|
|
<a class="lts-feedback" href="{{store url='contacts'}}">Feedback</a>
|
|
</div>
|
|
HTML;
|
|
}
|
|
|
|
private function shopByCategoryContent(): string
|
|
{
|
|
return <<<'HTML'
|
|
<section class="lts-categories" aria-labelledby="lts-categories-title">
|
|
<h2 id="lts-categories-title" class="lts-home-heading">Shop By Category</h2>
|
|
<div class="lts-categories__grid">
|
|
<a class="lts-category" href="{{store url='products/product-categories/ip-solutions/ip-network-cameras'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/ip-camera.png'}}" alt=""></span><strong>IP Cameras</strong></a>
|
|
<a class="lts-category" href="{{store url='products/product-categories/ip-solutions/network-video-recorders'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/nvr.png'}}" alt=""></span><strong>NVR</strong></a>
|
|
<a class="lts-category lts-category--featured" href="{{store url='products/product-categories/hd-tvi-solutions/hd-tvi-camera'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/tvi-camera.png'}}" alt=""></span><strong>TVI Cameras</strong></a>
|
|
<a class="lts-category" href="{{store url='products/product-categories/hd-tvi-solutions/hd-tvi-dvr'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/dvr.png'}}" alt=""></span><strong>DVR</strong></a>
|
|
<a class="lts-category" href="{{store url='products/news/access-control'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/access-control.png'}}" alt=""></span><strong>Access Control</strong></a>
|
|
<a class="lts-category" href="{{store url='products/product-categories/ip-video-system-accessories/cable'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/cable.png'}}" alt=""></span><strong>Cable</strong></a>
|
|
<a class="lts-category" href="{{store url='products/product-categories/ip-video-system-accessories/storage-devices'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/hdd.png'}}" alt=""></span><strong>HDD</strong></a>
|
|
<a class="lts-category" href="{{store url='products/product-categories/ip-video-system-accessories/poe-switches'}}"><span class="lts-category__image"><img src="{{view url='Magento_Theme::images/lts-home-v2/accessories.png'}}" alt=""></span><strong>Accessories</strong></a>
|
|
</div>
|
|
</section>
|
|
HTML;
|
|
}
|
|
|
|
public static function getDependencies(): array
|
|
{
|
|
return [];
|
|
}
|
|
|
|
public function getAliases(): array
|
|
{
|
|
return [];
|
|
}
|
|
}
|