Получить все URL-адреса Magento по просмотру магазина


Я ищу, чтобы получить все URL-адреса веб-сайта Magento (страницы CMS, категории, товары...), разделенные по виду магазина. Что-то вроде карты сайта Magento по умолчанию, но в другом формате: в частности, я пытаюсь получить обычный текстовый файл "один URL на строку", по одному для каждого представления магазина.

Author: brentwpeterson, 2015-11-10

2 answers

Посмотрите, как Magento генерирует файл sitemap.xml.

В частности, метод класса Mage_Sitemap_Model_Sitemap generateXml. Например, следующий фрагмент кода генерирует их для категорий, я немного переписал его, чтобы экспортировать в плоский текстовый файл.

$ioWrite = new Varien_Io_File();
$path = ''; 
$ioWrite->open(array('path' => $path));
$ioWrite->streamOpen($path.'urls.txt');

$storeId =  Mage::app()->getStore()->getId();
$date    = Mage::getSingleton('core/date')->gmtDate('Y-m-d');
$baseUrl = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);

/**
 * Generate categories sitemap
 */
$changefreq = (string)Mage::getStoreConfig('sitemap/category/changefreq', $storeId);
$priority   = (string)Mage::getStoreConfig('sitemap/category/priority', $storeId);
$collection = Mage::getResourceModel('sitemap/catalog_category')->getCollection($storeId);
$categories = new Varien_Object();
$categories->setItems($collection);
Mage::dispatchEvent('sitemap_categories_generating_before', array(
    'collection' => $categories
));
foreach ($categories->getItems() as $item) {
    $ioWrite->streamWrite(htmlspecialchars($baseUrl . $item->getUrl()));
}
unset($collection);
$ioWrite->close();

Добавьте код из класса в свой собственный скрипт для создания текстового файла

 4
Author: Sander Mangel, 2015-11-10 13:14:46

Благодаря @sander-mangel я разработал решение для моего конкретного случая: https://gist.github.com/RiccardoB/2117046a97719b413c8a

Если у вас есть какие-либо предложения по оптимизации/исправлению, не стесняйтесь комментировать.

 0
Author: Riccardo, 2015-11-11 13:38:54