Небольшое дополнение к предыдущей статье.
Если Вам необходимо получить в фильтре либо выше (до вызова компонента сотбит) информацию о новом URL, можно выполнить подобный код и получить требуемую информацию:
$url = $_SERVER['REQUEST_URI'];
// ищем по URL. Если совпадает, то значит существует страница с таким значением
$connection = Bitrix\Main\Application::getConnection();
$sqlHelper = $connection->getSqlHelper();
$sql = "SELECT NEW_URL,REAL_URL FROM b_sotbit_seometa_chpu WHERE REAL_URL='".$url."'";
$recordset = $connection->query($sql);
while ($record = $recordset->fetch()) { $new_url=$record['NEW_URL']; }
Пишем класс для работы:
class dataFromSotbit {
public static function getConditionById($id) {
$arCondition = \Sotbit\Seometa\ConditionTable::getById($id)->fetch();
if($arCondition['FILTER_TYPE'] == 'default')
{
$arCondition['FILTER_TYPE'] = \Bitrix\Main\Config\Option::get("sotbit.seometa", "FILTER_TYPE", "bitrix_chpu");
}
return $arCondition;
}
public static function getMetaId($str){
$metaData = Sotbit\Seometa\SeometaUrlTable::getByRealUrl($str);
return $metaData;
}
public static function getListFromUrl($url){
$result = \Sotbit\Seometa\SeometaUrlTable::getList(array(
'select' => array('*'),
'filter' => array('ACTIVE' => 'Y', '=REAL_URL' => $url),
'order' => array('ID')
))->fetch();
return $result;
}
public static function getNewUrl($url){
$result = \Sotbit\Seometa\SeometaUrlTable::getList(array(
'select' => array('NEW_URL'),
'filter' => array('ACTIVE' => 'Y', '=REAL_URL' => $url),
'order' => array('ID'),
'limit' => 1
))->fetch();
return $result['NEW_URL'];
}
}
Добавляем его в файл и подключаем в init
Теперь можно обратится getNewUrl для получения нового URL.
Либо для получения всего массива данных getMetaId($url).