Как изменить URL-адрес категории magento на короткий (удобный для Google)? - PullRequest
0 голосов
/ 11 марта 2011

Я использую magento 1.4.1.1, в конфигурации бэкэнда есть опция: удалить URL категории для продуктов, ну, URL продукта был http://www.yourdomain.com/products.html,, это была отличная функция.но у URL категории все еще есть слой, как я могу удалить родительский URL для URL категории?поэтому, когда я пытаюсь изменить слой категорий, тогда все в порядке.

Спасибо заранее, извините за мой плохой английский.

Ответы [ 2 ]

2 голосов
/ 18 ноября 2011

Отредактируйте файл /app/code/core/Mage/Catalog/Model/Url.php так, чтобы прокомментировать эти строки (см. Ниже). Должны быть строки с 673 по 679 для 1.4, если не выполняется поиск кода в файле.Затем обновите URL переписывает в админ -> система -> Управление индексами

//if (null === $parentPath) {
                   //$parentPath = $this->getResource()->getCategoryParentPath($category);
               //}
               //elseif ($parentPath == '/') {
                   $parentPath = '';
               //}
0 голосов
/ 12 мая 2016

Я немного искал, но не нашел ничего полезного, поэтому я в итоге нашел это решение

1-й, я создаю наблюдатель, прогон после сохранения категории, Приложение / код / ​​местные / пространство имен / модуль / и т.д. / config.xml

<events>
    <catalog_category_save_commit_after>

      <observers>

        <namespace_module_Model_observer>

            <type>singleton</type>
            <class>namespace_module/observer</class>
            <method>setUrlRedirect</method>

        </namespace_module_Model_observer>

      </observers>

    </catalog_category_save_commit_after>
</events>

затем в моем обозревателе я добавляю пользовательское переписывание URL, которое делает URL нашей категории непосредственно доступным (example.com/deeply-layered-catogry.html)

public function setUrlRedirect($observer) {

    $e = $observer->getEvent();
    $c = $e->getCategory();
    // getting updated data, 
    $data = $observer->getDataObject()->getData();

    $c = Mage::getModel("catalog/category")->load($c->getId());
    $url = $c->getUrl();

    $handle = $data['url_key'];
    $p = 'catalog/category/view/id/' . $c->getId(); /*$handle . ".html";*/
    $id = 'seo-frindly/cat-' . $c->getId() .'.html';
    $urlMdoule =  Mage::getModel('core/url_rewrite');
    $storeId =  Mage::app()->getStore()->getStoreId();


    if (  $urlMdoule->loadByIdPath($id)->getId() ) {
        // update
        $o = $urlMdoule->loadByIdPath($id);

        $o->setIsSystem(0)
        ->setStoreId($storeId)   
        ->setOptions('no')
        ->setTargetPath( $p )// Put the actual path
        ->setRequestPath( $handle .'.html')
        ->setRedirect(false)
        ->save();

    } else {

       // new
       $urlMdoule->setIsSystem(0)
        ->setStoreId($storeId)   
        ->setOptions('no')  
        ->setIdPath($id)
        ->setTargetPath( $p )// Put the actual path
        ->setRequestPath( $handle .'.html')
        ->setRedirect(false)
        ->save();
    }


    return;

}

теперь, когда вы сохраняете категорию, она будет доступна по короткому URL,

просто добавьте атрибут rel = "canonical" в голову, чтобы Google проиндексировал короткие SEO-ссылки

...