Magento Tag Url переписать и создать - PullRequest
3 голосов
/ 30 ноября 2011

Я добавил много правил переписывания для тегов в Magento. Например,

Request Path: tag/abc
Target Path: tag/product/list/tagId/7/
Type: Custom

Все идет хорошо в запросе и ответе. Но мне интересно, как изменить URL тега спереди? Хотя правила перезаписи работают отлично, это не изменит переписанный URL.

Я нашел метод getTaggedProductsUrl() в модуле тегов и в конце концов, как и другие, он вызывает метод getUrl() в модели core / url. Я попытался добавить '_use_rewrite' => true к параметрам маршрута. Но он не генерирует правильный URL.

Мне бы очень хотелось узнать, что в этом плохого!

1 Ответ

2 голосов
/ 13 февраля 2012

Если переписать модель tag/tag и переопределить getTaggedProductsUrl() следующим, это будет работать:

public function getTaggedProductsUrl()
{
    $fullTargetPath = Mage::getUrl('tag/product/list', array(
        'tagId' => $this->getTagId(),
        '_nosid' => true
    ));
    $targetPath = substr($fullTargetPath, strlen(Mage::getBaseUrl()));
    $rewriteUrl = Mage::getModel('core/url_rewrite')->loadByIdPath($targetPath);
    if ($rewriteUrl->getId()) {
        return $rewriteUrl->getRequestPath();
    }
    return $fullTargetPath;
}

Предполагается, что вы используете целевой путь без базового URL-адреса в качестве «идентификатора пути» и свойства «Целевой путь», например, tag/product/list/tagId/30/.
Если вы не хотите дублировать этот параметр, вам нужно будет использовать модель ресурса тега и вручную настроить SQL для соответствия столбцу target_path вместо id_path, потому что модель ресурса не поставляется с предопределенным методом для вас.
Тем не менее, вы можете использовать метод Mage_Tag_Model_Resource_Tag::loadByRequestPath() в качестве ссылки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...