Исправление ошибки makeUrl() в MODX Revo
Рассмотрим, как можно исправить следующую ошибку, которая может возникнуть в консоли ошибок админки сайта.
`0` is not a valid integer and may not be passed to makeUrl()
Данная ошибка появляется из-за вызова пустой ссылки на сайте. К примеру, у вас где то есть запись
<a href="[[~[[+id]]]]">ссылка</a>
Где, [[+id]] оказывается равна 0 — об этом и ошибка, что ссылку на нулевой ресурс сгенерировать нельзя.
Либо у вас каким-то образом есть на сайте запись:
<a href="[[+0]]">ссылка</a>
Если самому найти не получается, то предлагаю следующее решение. Мы немного исправим вывод информации об этой ошибки, в модели ядра. Не переживайте, потом вы вернёте всё как было.
Открываем файл modx.class.php, который располагается по адресу core/model/modx
Ищем следующую запись
} else { $this->log(modX::LOG_LEVEL_ERROR, '`' . $id . '` is not a valid integer and may not be passed to makeUrl()'); } return $url; }
И заменяем её на (сделайте на всякий случай бекап файла)
} else { $this->log(modX::LOG_LEVEL_ERROR, '`' . $id . '` is not a valid integer and may not be passed to makeUrl()'); try { throw new Exception('catch this...'); } catch (Exception $e) { $this->log(modX::LOG_LEVEL_ERROR, $e->getTraceAsString()); } } return $url; }
Далее просматриваем страницы сайта, чтобы спровоцировать ошибку. Затем заходим в админку и в логах видим следующее
[2015-10-11 12:23:43] (ERROR @ /index.php) `[[+id]]` is not a valid integer and may not be passed to makeUrl() [2015-10-11 12:23:43] (ERROR @ /index.php) #0htdocs\core\model\modx\modparser.class.php(765): modX->makeUrl('[[+id]]', '', '', -1) #1 htdocs\core\model\modx\modparser.class.php(385): modLinkTag->process(NULL) #2 htdocs\core\model\modx\modparser.class.php(164): modParser->processTag(Array, false) #3 htdocs\core\model\modx\modchunk.class.php(92): modParser->processElementTags('[[$tpl.news_site...', '<div class="mai...', false, false, '[[', ']]', Array, 10) #4 htdocs\core\model\modx\modx.class.php(1558): modChunk->process(Array) #5 htdocs\core\components\login\model\login\login.class.php(125): modX->getChunk('tpl.news_site...', Array)
В #3, а также #5 будет показано место, где эта ошибка, либо чанк с ней.
Проверьте вызов ссылок, в них и ошибка.
После этого откатите файл до исходного состояния
Оставить комментарий