Массовое обновление для снятого флажка "Автоматически генерировать псевдоним URL"
У меня есть много программных узлов с отключенной опцией " Генерировать автоматический псевдоним URL", поэтому я не могу использовать Массовое обновление модуля pathauto.
Как я могу массово генерировать псевдоним pathauto для этих узлов?
Изменить: я использую Drupal 7
7 answers
Пробовали ли вы использовать Массовую операцию просмотра . Все, что вам нужно будет сделать, это создать представление, в котором будут перечислены все узлы, соответствующие вашим критериям, а затем назначить действие "Создать псевдоним URL" (я еще не пробовал)
.У VBO нет возможности изменить статус "Автоматически генерировать псевдоним URL"
Вы можете выполнить следующий запрос mysql:
UPDATE `pathauto_state` SET `pathauto`=1 WHERE `entity_type` = 'node'
Или, если вы хотите обновить только точный тип контента:
UPDATE `pathauto_state` p, `node` n SET `pathauto` = 1 WHERE
p.entity_id = n.nid and n.type = 'mycustontype'
Где "mycustomtype" - это имя компьютера типа контента.
Или если у вас установлен drush:
drush sqlq "UPDATE pathauto_state SET pathauto=1 WHERE entity_type = 'node'"
После этого вы можете массово генерировать новые пути, как обычно, в: admin/config/search/path/update_bulk
В дополнение к ответу Рика Б вам также потребуется создать записи для узлов, которые никогда не проверялись. Это можно сделать, выполнив этот запрос:
INSERT INTO pathauto_state
SELECT 'node',n.nid ,1
FROM node n
WHERE n.type = 'api'
AND n.nid NOT IN (SELECT entity_id FROM pathauto_state)
, который можно запустить либо с помощью drush, либо непосредственно в базе данных, как описал Рик.
Для терминов таксономии определите идентификатор словаря вашего термина (3
в примере ниже) и выполните аналогичную вставку:
INSERT INTO pathauto_state
SELECT 'taxonomy_term', t.tid, 1
FROM taxonomy_term_data t
WHERE t.vid = 3
AND t.tid NOT IN (SELECT entity_id FROM pathauto_state)
Я могу проверить, что это работает с Массовыми операциями просмотра (VBO).
Только что попробовал то, что упомянул Гокул Н К, потому что я столкнулся с той же проблемой и могу убедиться, что она все еще работает с реальными версиями модулей.
У меня были существующие термины таксономии с непроверенным "Генерировать автоматический псевдоним URL", и я хотел обновить их массово.
Моя настройка ниже: Drupal 7 (7.34) с представлениями (7.x-3.8), Pathauto (7.x-1.2) и VBO (7.x-3.2). Я предполагаю, что модули присутствуют / установленный настроенный.
- удалены все псевдонимы терминов таксономии/администратор/конфигурация/поиск/путь/delete_bulk
- создал новое представление в разделе /администратор/структура/представления и выбрал (Показать) термины таксономии (в моем случае я выбрал все для всех словарей, вы могли выбрать только определенный словарь)
- выберите "поля" в разделе "Формат отображения", при необходимости внесите дополнительные изменения, затем "Продолжить и отредактировать"
- В разделе поля нажмите "добавить" и найдите "Массовые операции: термин таксономии"., проверьте и примените
- затем установите флажок "Обновить псевдоним термина таксономии" и примените
- Сохраните свое представление и перейдите в расположение представлений и массово обновите все псевдонимы путей терминов таксономии
Вам необходимо удалить псевдонимы для ранее созданных узлов, прежде чем назначать им новые псевдонимы. В этом посте объясняется, как это сделать.
Для тех из вас, кому это нужно в форме php для быстрого использования в модуле/теме/и т. Д.:
<?php
$update_auto_aliases = db_update('pathauto_state')
->fields(array(
'pathauto' => 1,
))
->condition('entity_type', 'node', '=')
->execute();
?>
Я думаю, что это можно сделать с помощью Drupal 8 и VBO (по крайней мере, это сработало для меня) - с помощью действия "Изменить значения полей", потому что " Автоматически генерировать псевдоним URL" - это просто поле , автоматически предоставляемое для каждого элемента контента. Предостережение заключается в том, что вам придется сделать это для каждого типа контента , но все это можно сделать в одной и той же форме следующим образом: -
- Выберите необходимые элементы в списке VBO (или Выберите все)
- Выберите действие "Изменить значения полей"
- Нажмите кнопку "Применить к выбранным элементам"
- Разверните каждый тип контента, к которому вы хотите применить это, и установите флажок "Псевдоним URL". Затем в развернутой форме должен появиться флажок "Автоматически генерировать псевдоним URL". Это значение по умолчанию помечено галочкой, поэтому вам не нужно ничего делать/менять. Не нажимайте кнопку Отправить еще...
- После выполнения шага № 4 для каждого типа контента нажмите кнопку "Отправить".
Впоследствии я не получил подтверждающего сообщения (что приводит в замешательство - вероятно, ошибка в отличном модуле VBO), но это сработало для меня (предположительно, в фоновом пакетном задании).