Благодаря модулю xmlsitemap, XML карту не сложно добавить на любой Drupal-сайт. Модуль позволяет управлять тем, какие типы публикаций добавлять в карту, а какие нет. Если вам этого достаточно, то дальше можете не читать.
Но если вам требуется более гибкое управление, читайте дальше.
Итак, вы установили xmlsitemap, и настроили его типовое поведение. Что делать, если требуется выборочно включать в карту публикации определенного типа?
Одна из возможностей заключается в «ручном» управлении, когда вы в каждой node устанавливаете требуемое значение. Но при выполнении операции rebuild
| 
					 1  | 
						/admin/config/search/xmlsitemap/rebuild  | 
					
ваши установки могут быть переопределены вновь.

Если возможно сформулировать четкое правило, то лучше всего запрограммировать его. К счастью, API модуля предлагает специальную зацепку hook_xmlsitemap_link_alter. Он вызывается каждый раз при обновлении объекта, который может быть отображен в карте сайте.
Вот пример реализации:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
						/**  * Implement xmlsitemap_link_alter hook.  */ function mymodule_xmlsitemap_link_alter(array &$link, array $context) {   // нужно отменить включение публикации ingredient в карту сайта   // по умолчанию все публикации данного типа включены в карту   if (!empty($context['node'])) {     if ($context['node']->type == 'ingredient') {       // тут мы вычисляем необходимое условие       $offCondition = ...;       if ($offCondition) {         $link['status'] = 0;       }     }   } }  | 
					
В hook передаётся структура описывающая ссылку для xml карты — $link и переменная $context, которая хранит данные, связанные со ссылкой. В нашем случае это объект node.
На основании контекста нужно решить какой статус установить для ссылки: 0 — нет ссылки в xlm карте или 1, если ссылку нужно добавить.

