Как быстро восстановить все узлы моего сайта (чтобы вызвать правило, которое активируется при обновлении контента)?

Я допустил некоторые ошибки при настройке определенного типа контента на моем сайте. Чтобы исправить эти ошибки, я сделал правило, которое выполняет некоторые действия «при обновлении существующего контента». Тем не менее, я не хочу проходить через свой сайт и вручную сохранять все узлы по очереди один за другим. Существует ли способ использования правил или видов массовых операций для быстрого восстановления всех узлов?

24 голоса | спросил Patrick Kenny 3 +04002012-10-03T18:03:04+04:00312012bEurope/MoscowWed, 03 Oct 2012 18:03:04 +0400 2012, 18:03:04

5 ответов


22

У VBO есть действие «Выполнять PHP-код». Запустите его и введите «node_save ($ entity)»; (без кавычек) в текстовом поле. Это сделает трюк при обработке тайм-аутов для вас.

ответил Bojan Zivanovic 3 +04002012-10-03T18:44:44+04:00312012bEurope/MoscowWed, 03 Oct 2012 18:44:44 +0400 2012, 18:44:44
14

Я не знаю правил или VBO, но вы можете использовать короткий фрагмент кода, чтобы получить тот же результат:

$nids = db_query('SELECT nid FROM {node}')->fetchCol();
foreach (node_load_multiple($nids) as $node) {
  node_save($node);
}

Если у вас много узлов, которые могут занять немного времени, поэтому, если ваш сервер это допустит, было бы неплохо продлить срок в начале этого кода, возможно, неограниченно, если это один раз:

set_time_limit(0);
ответил Clive 3 +04002012-10-03T18:13:18+04:00312012bEurope/MoscowWed, 03 Oct 2012 18:13:18 +0400 2012, 18:13:18
12

Вы можете использовать node_mass_update () функция:

module_load_include('inc', 'node', 'node.admin');
$nids = db_query('SELECT nid FROM {node}')->fetchCol();
node_mass_update($nids, array());

Это очень хорошо, так как вам не нужно заботиться о сроках. Пакетный процесс для обновления узлов запускается автоматически, если имеется более 10 узлов.

ответил milkovsky 30 J000000Wednesday14 2014, 00:51:43
5

Еще быстрее он может перейти с Resave Nodes . Там вы можете выбрать, какие узлы типа контента должны быть сохранены на cron или вручную.

Прежде чем вы сможете запустить резервное копирование вручную, нажав «Resave Nodes Now», вам нужно «Сохранить конфигурацию» (выберите тип cron и тип контента).

ответил leymannx 15 J000000Tuesday14 2014, 20:00:08
1

Перейдите к администратору /содержимому и фильтруйте по типу вашего контента - опубликовано только. Выберите все, а затем выберите «изменить значение» в раскрывающемся списке операций. Нажмите «выполнить». На следующей странице выберите «статус» из свойств и опубликуйте публикацию. Нажмите "Далее' Все опубликованные узлы будут сохраняться без изменений.

Повторите попытку для неопубликованных узлов (но выберите неопубликованный как свойство).

ответил Robb Davis 1 MaramWed, 01 Mar 2017 01:39:43 +03002017-03-01T01:39:43+03:0001 2017, 01:39:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132