IT-Storm

Лучший код тот, который не написан

Menu

Magento 2: CMS страницы (CMS pages)

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 [];
    }
}

Magento 2