Magento 2: CMS страницы (CMS pages)
Задать CMS странице сторвью
Проблема:
Отсутствует ссылка "Shipping & Return". Выяснили причину.
Есть cms page с идентификатором shipping-returns, в которой и помещён контент страницы, на которую должна вести ссылка, однако у этой страницы не заданы сторы. После ассайна (привязки) этой странице стора mytest, ссылка и доступ к странице появились. Что делать в такой ситуации - удалять ссылку или ассайнить стор странице shipping-returns?
declare(strict_types=1);
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\DB\Adapter\AdapterInterface;
use Magento\Framework\Setup\Patch\DataPatchInterface;
class AssignMyTestStoreToShippingReturnsCMSPage implements DataPatchInterface
{
private const SHIPPING_RETURNS_CMS_PAGE_IDENTIFIER = 'shipping-returns';
private const MY_TEST_STORE_VIEW_CODE = 'default';
private const CMS_PAGE_STORE_TABLE = 'cms_page_store';
private const CMS_PAGE_TABLE = 'cms_page';
private const STORE_VIEW_TABLE = 'store';
/**
* @var AdapterInterface
*/
private $connection;
/**
* @param ResourceConnection $resourceConnection
*/
public function __construct(ResourceConnection $resourceConnection)
{
$this->connection = $resourceConnection->getConnection();
}
/**
* Assign to cms page with identifier 'shipping-returns' the MyTest's store with code 'default'
*
* @inheritDoc
*/
public function apply(): void
{
$this->connection->fetchAll("INSERT INTO " . self::CMS_PAGE_STORE_TABLE . " (page_id, store_id)"
. " SELECT " . self::CMS_PAGE_TABLE . ".page_id, " . self::STORE_VIEW_TABLE . ".store_id"
. " FROM " . self::CMS_PAGE_TABLE . ", " . self::STORE_VIEW_TABLE
. " WHERE " . self::CMS_PAGE_TABLE . ".identifier = '" . self::SHIPPING_RETURNS_CMS_PAGE_IDENTIFIER . "'"
. " AND " . self::STORE_VIEW_TABLE . ".code = '" . self::MY_TEST_STORE_VIEW_CODE . "';");
}
/**
* @inheritDoc
*/
public static function getDependencies(): array
{
return [];
}
/**
* @inheritDoc
*/
public function getAliases(): array
{
return [];
}
}