В поисках решения одной проблемы, появилась другая. В панели администратора исчезли надписи у ссылок. Сами ссылки активные, при нажатии на пустые ссылки (где раньше были нормальные надписи) портует куда надо. Однако это неудобно и хочется их вернуть. Хелп!
Вложение | Размер |
---|---|
![]() | 5.26 КБ |
Комментарии
Эммм.., есть кто?
Переводы побились похоже.
А где их физически найти? У меня есть и БД прежняя и файлы прежние. Перевод в БД вроде не нашёл, наверное в файлах?
Но ведь если есть копии БД и файлов, то ведь всё можно восстановить?
В HTML у вас что? Скриншот в данном случае малоинформативен
Я накосячил с файлом menu.inc , когда он выдавал title я вроде как заменил их на пустые. Вернул файл назад, но значения назад не вернулись. Все пустые ссылки кликабельны. Структура не поменялась. Только ни в файлах, ни в БД не могу найти, где она держит эти поля с названиями, чтобы подзагрузить их туда с сохранёнок.
Верните menu.inc в порядок сбросьте кеш на странице /admin/config/development/performance.
Нормальный menu.inc можете взять из дистрибутива друпала.
Редактировать файлы ядра нельзя, особенно, без понимания.
Это я делал. Не помогло.
Тогда я могу ещё раз предложить более точно описать проблему.
HTML вы не даёте, что меняли - не признаётесь
Прежде чем исправлять menu.inc я сделал его копию. И сразу же заменил на другой. Это не тоже самое? Надо переустановить его возможно?
Признаюсь, сейчас во всём признаюсь. Выделил жирным:
/**
* Builds a link from a router item.
*/
function _menu_link_build($item) {
// Suggested items are disabled by default.
if ($item['type'] == MENU_SUGGESTED_ITEM) {
$item['hidden'] = 1;
}
// Hide all items that are not visible in the tree.
elseif (!($item['type'] & MENU_VISIBLE_IN_TREE)) {
$item['hidden'] = -1;
}
// Note, we set this as 'system', so that we can be sure to distinguish all
// the menu links generated automatically from entries in {menu_router}.
$item['module'] = 'system';
$item += array(
'menu_name' => 'navigation',
'link_title' => $item['title'],
'link_path' => $item['path'],
'hidden' => 0,
'options' => empty($item['description']) ? array() : array('attributes' => array('title' => $item['description'])),
);
return $item;
}
Заменил на это:
/**
* Builds a link from a router item.
*/
function _menu_link_build($item) {
// Suggested items are disabled by default.
if ($item['type'] == MENU_SUGGESTED_ITEM) {
$item['hidden'] = 1;
}
// Hide all items that are not visible in the tree.
elseif (!($item['type'] & MENU_VISIBLE_IN_TREE)) {
$item['hidden'] = -1;
}
// Note, we set this as 'system', so that we can be sure to distinguish all
// the menu links generated automatically from entries in {menu_router}.
$item['module'] = 'system';
$item += array(
'menu_name' => 'navigation',
'link_title' => (empty($item['link_title']) ? '' : $item['link_title']),
'link_path' => $item['path'],
'hidden' => 0,
'options' => empty($item['description']) ? array() : array('attributes' => array('title' => $item['description'])),
);
return $item;
}
Ну, если сброс кеша не помогает, придётся более хардкорно поступить.
Создайте в корне друпала файлик menu_rebuild.php с таким содержимым:
define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
db_query("DELETE FROM {menu_links}");
db_query("DELETE FROM {menu_router}");
menu_rebuild();
print 'Done';
И откройте его из браузера.
Я не тестировал, бекап базы обязателен.
Ок, сейчас попробую в песочнице сначала.
Тут ещё такой вопрос: если произвести обновления, проблема может решиться сама собой? А если я просто через phpmyadmin удалю таблицы menu_links и menu_router и перезалью с бэкапа, то будет работать? Мне что-то стало страшно за структуру пунктов меню.
Semantics, Phantom63rus, спасибо, что вы есть здесь. Очень вам благодарен! За эти сутки я так сильно перенервничал. Ваши ответы давали мне надежду, что решение мы всё-таки найдём.
Ситуация решилась обновлением всех модулей (на это требовалось разрешение руководства). Я уже думал, что моя следующая работа будет в Чернобыле. Но обошлось)
Фигня, всегда рады помочь!
Донесите до руководства что апдейты должны накатываться своевременно, это не та задача, где требуется отмашка вышестоящих. Пожалуй ближе всего работа уборщицы - можно конечно убирать только по приказу руководства когда стало плохо пахнуть, но лучше это делать на постоянной основе.
Тогда это помог ребилд меню при запуске update.php