Получить все URL-адреса Magento по просмотру магазина
Я ищу, чтобы получить все URL-адреса веб-сайта Magento (страницы CMS, категории, товары...), разделенные по виду магазина. Что-то вроде карты сайта Magento по умолчанию, но в другом формате: в частности, я пытаюсь получить обычный текстовый файл "один URL на строку", по одному для каждого представления магазина.
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();
Добавьте код из класса в свой собственный скрипт для создания текстового файла
Благодаря @sander-mangel я разработал решение для моего конкретного случая: https://gist.github.com/RiccardoB/2117046a97719b413c8a
Если у вас есть какие-либо предложения по оптимизации/исправлению, не стесняйтесь комментировать.