Программная перезапись URL-адресов в Magento 2: подробное руководство

В Magento 2 переопределение URL-адресов является важнейшим аспектом управления URL-адресами веб-сайта. Он позволяет создавать собственные URL-адреса для продуктов, категорий, страниц CMS и многого другого. Хотя Magento 2 предоставляет интерфейс администратора для управления перезаписью URL-адресов, могут возникнуть ситуации, когда вам потребуется добавить перезапись URL-адресов программным способом. В этой статье мы рассмотрим несколько способов достижения этой цели, а также приведем примеры кода.

Метод 1: использование API управления перезаписью URL-адресов
Magento 2 предоставляет API, который позволяет выполнять операции перезаписи URL-адресов программным способом. Вы можете использовать классы \Magento\UrlRewrite\Api\UrlRewriteRepositoryInterfaceи \Magento\UrlRewrite\Model\UrlRewriteFactoryдля создания новых перезаписей URL-адресов.

use Magento\UrlRewrite\Api\UrlRewriteManagementInterface;
use Magento\UrlRewrite\Model\UrlRewriteFactory;
class CustomUrlRewrite
{
    protected $urlRewriteManagement;
    protected $urlRewriteFactory;
    public function __construct(
        UrlRewriteManagementInterface $urlRewriteManagement,
        UrlRewriteFactory $urlRewriteFactory
    ) {
        $this->urlRewriteManagement = $urlRewriteManagement;
        $this->urlRewriteFactory = $urlRewriteFactory;
    }
    public function addUrlRewrite($requestPath, $targetPath, $storeId)
    {
        $urlRewrite = $this->urlRewriteFactory->create();

        $urlRewrite->setEntityType('custom_entity_type')
            ->setEntityId(1)
            ->setRequestPath($requestPath)
            ->setTargetPath($targetPath)
            ->setStoreId($storeId)
            ->setIsAutogenerated(0);

        $this->urlRewriteManagement->save($urlRewrite);
    }
}

Метод 2: использование фабрики перезаписи URL-адресов.
Другой подход — использовать фабричный класс \Magento\UrlRewrite\Model\UrlRewriteдля программного перезаписи URL-адресов.

use Magento\UrlRewrite\Model\UrlRewriteFactory;
class CustomUrlRewrite
{
    protected $urlRewriteFactory;
    public function __construct(UrlRewriteFactory $urlRewriteFactory)
    {
        $this->urlRewriteFactory = $urlRewriteFactory;
    }
    public function addUrlRewrite($requestPath, $targetPath, $storeId)
    {
        $urlRewrite = $this->urlRewriteFactory->create();

        $urlRewrite->setEntityType('custom_entity_type')
            ->setEntityId(1)
            ->setRequestPath($requestPath)
            ->setTargetPath($targetPath)
            ->setStoreId($storeId)
            ->setIsAutogenerated(0)
            ->save();
    }
}

Метод 3: использование моделей ресурсов
Magento 2 предоставляет модели ресурсов, которые позволяют выполнять прямые операции с базой данных. Вы можете использовать класс \Magento\UrlRewrite\Model\ResourceModel\UrlRewriteдля программного перезаписи URL-адресов.

use Magento\UrlRewrite\Model\UrlRewriteFactory;
use Magento\UrlRewrite\Model\ResourceModel\UrlRewrite;
class CustomUrlRewrite
{
    protected $urlRewriteFactory;
    protected $urlRewriteResource;
    public function __construct(
        UrlRewriteFactory $urlRewriteFactory,
        UrlRewrite $urlRewriteResource
    ) {
        $this->urlRewriteFactory = $urlRewriteFactory;
        $this->urlRewriteResource = $urlRewriteResource;
    }
    public function addUrlRewrite($requestPath, $targetPath, $storeId)
    {
        $urlRewrite = $this->urlRewriteFactory->create();

        $urlRewrite->setEntityType('custom_entity_type')
            ->setEntityId(1)
            ->setRequestPath($requestPath)
            ->setTargetPath($targetPath)
            ->setStoreId($storeId)
            ->setIsAutogenerated(0);

        $this->urlRewriteResource->save($urlRewrite);
    }
}

В этой статье мы рассмотрели три различных метода программного перезаписи URL-адресов в Magento 2. Вы можете выбрать метод, который лучше всего соответствует вашим требованиям, и реализовать его соответствующим образом. Программное управление перезаписью URL-адресов дает вам больше гибкости и контроля над URL-адресами вашего веб-сайта, позволяя оптимизировать их для SEO и улучшить взаимодействие с пользователем.

Используя эти методы, вы можете легко переписать собственные URL-адреса для своего магазина Magento 2, что позволит вам улучшить SEO-возможности вашего веб-сайта и обеспечить более удобный просмотр.

Не забудьте тщательно протестировать свой код перед его внедрением на действующий веб-сайт, чтобы избежать потенциальных проблем.