<?php
define('MODX_API_MODE', true);
require dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';
if (($handle = fopen(dirname(__FILE__) . '/import.csv', "r")) !== FALSE) {
$modelPath = $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'model/';
$modx->addPackage('autoredirector', $modelPath);
$processorProps = array('processors_path' => $modx->getOption('autoredirector_core_path',null,$modx->getOption('core_path').'components/autoredirector/').'processors/');
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$uri = str_replace($modx->getOption('site_url'), '', $data[0]);
$id = $data[1];
$arRule = array('uri' => $uri, 'res_id' => $id);
if (!$modx->getObject('arRule', $arRule)) {
$response = $modx->runProcessor('mgr/item/create', $arRule, $processorProps);
if ($response->isError()) {
print '<span style="color: #c00;">AutoRedirector creating error. Message: ' .
$response->getMessage() . '<br></span>';
$modx->error->reset();
} else {
print '<span style="color: #060;">AutoRedirector created rule. URL: ' .
$uri . '<br></span>';
}
} else {
print '<span style="color: #666;">AutoRedirector rule dublicate. URL: ' .
$uri . '<br></span>';
}
}
fclose($handle);
}
Импорт правил для autoRedirector из CSV
10 мая 2016, 14:39
Загружаем CSV в папку assets/components/autoredirector/. В этой же папке создаём файл, в котором указываем имя файла для импорта. Открываем файл в браузере.
Объектная
$arRule = array('uri' => $uri, 'res_id' => $id);А затем используется проверкаif (!$modx->getObject('arRule', $arRule))Но если у нас допустим уже есть ссылка «test/» указывающая на ресурс с id = 2, а мы попытаемся добавить ссылку «test/», указывающую на ресурс 3, она же должна будет создаться? Я правильно понимаю? И как в таком случае поведет себя autoRedirector, если будем обращаться к ссылке «test/»?if (!$modx->getObject('arRule', array('uri' => $arRule['uri'])))И как раз будет выдавать дублирование правила.Или может что-то подскажете по моей проблеме другое?
Вот такой файл csv
prntscr.com/co2kcd
А вот такие правила получились))
prntscr.com/co2kgc
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {надо заменить наwhile (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {(запятую на точку с запятой)