В 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-возможности вашего веб-сайта и обеспечить более удобный просмотр.
Не забудьте тщательно протестировать свой код перед его внедрением на действующий веб-сайт, чтобы избежать потенциальных проблем.