Is there any way we could get Domain Taxonomy Module support? I have taxonomies limited by Domain Taxonomy Module, but Domain Sitemap lists every taxonomy on every domain sitemap.
I tried altering the query from the 'domain_taxonomy_access' to the 'taxonomy_term_data' table but no luck.

Comments

jwilson3’s picture

Subscribe.

vasrush’s picture

I would love that feature too.

AgaPe’s picture

Yes, very needed.

emfabric’s picture

I don't use the domain taxonomy module. In my case, I have distinct vocabularies for each domain. If you add a custom module to your site, it's relatively easy to prevent an entire vocabulary's worth of terms from being included in a given domain's sitemap.

The code from my site's module:

// there are two domains, domain id 1 and domain id 2
// domain id 1 is associated with taxonomy tags_primary and with menu main-menu
// domain id 2 is associated with taxonomy tags_subsite and with menu menu-subsite
function mymodule_query_xmlsitemap_generate_alter(QueryAlterableInterface $query) {

	$sitemap = $query->getMetaData('sitemap');
	
	
	if ($sitemap->context['domain'] && ($sitemap->context['domain'] == 2)) {
		// exclude terms in tags_primary for the subsite
		$query->condition('subtype','tags_primary','<>');
		// exclude links in main-menu for subsite
		$query->condition('subtype','main-menu','<>');
	} else {
		// exclude terms in tags_subsite for the main site
		$query->condition('subtype','tags_subsite','<>');
		// exclude links in main-subsite for main site
		$query->condition('subtype','menu-subsite','<>');
	}

}

I don't know if this is what anyone is looking for, but perhaps it will be helpful.

Anonymous’s picture

Hi,

I have borrowed some code from the domain access module and from the above and have come up with the below, I am using two domains at the moment.

<?php
function filtersitemap_query_xmlsitemap_generate_alter(QueryAlterableInterface $query) {

    $sitemap = $query->getMetaData('sitemap');    
    
    if ($sitemap->context['domain'] && ($sitemap->context['domain'] == 2)) {
        // exclude terms in tags_primary for the subsite
        //$query->condition('subtype','country','<>');
        // exclude links in main-menu for subsite
        $query->condition('subtype','main-menu','<>');
        $query->condition('subtype','experience','<>');
    } else {
        // exclude terms in tags_subsite for the main site
        //$query->condition('subtype','tags_subsite','<>');
        // exclude links in main-subsite for main site
        $query->condition('subtype','menu-dive-in-style---main-menu','<>');
        $query->condition('subtype','types-of-diving','<>');
        $query->condition('subtype','what-to-see','<>');
    }
    
  // @todo Join here may cause duplicate records. Investigate using a subquery.
  $domain_alias = $query->leftJoin('domain_taxonomy_access', 'dta', "x.type = 'taxonomy_term' AND x.id = dta.tid");
  $domain_condition = db_or();
  $domain_condition->isNull('dta.gid');
  $domain_condition->condition(db_and()
    ->condition('dta.gid', 0)
    ->condition('dta.realm', 'domain_site')
  );
  $domain_condition->condition(db_and()
    ->condition('dta.gid', $sitemap->context['domain'])
    ->condition('dta.realm', 'domain_id')
  );
  $query->condition($domain_condition);
}
?>
jinhcc’s picture

Version: 6.x-1.0-beta2 » 7.x-1.0-beta2

Is it possible to make this module support domain taxonomy in D7?

panthar’s picture

Here is an easier solution, and could easily be applied to the module, instead of a custom module in #5:

Change

function domain_xmlsitemap_query_xmlsitemap_generate_alter(QueryAlterableInterface $query) {
  $sitemap = $query->getMetaData('sitemap');
  if (!isset($sitemap->context['domain'])) {
    return;
  }

  // @todo Join here may cause duplicate records. Investigate using a subquery.
  $domain_alias = $query->leftJoin('domain_access', 'da', "x.type = 'node' AND x.id = da.nid");
  $domain_condition = db_or();
  $domain_condition->isNull('da.gid');
  $domain_condition->condition(db_and()
    ->condition('da.gid', 0)
    ->condition('da.realm', 'domain_site')
  );
  $domain_condition->condition(db_and()
    ->condition('da.gid', $sitemap->context['domain'])
    ->condition('da.realm', 'domain_id')
  );
  $query->condition($domain_condition);
  // If the domain source module is enabled, we need to add a check against
  // the {domain_source} table as well.
  if (module_exists('domain_source')) {
    $domain_source = $query->leftJoin('domain_source', 'ds', "x.type = 'node' AND x.id = ds.nid");
    $source_condition = db_or();
    $source_condition->isNull('ds.domain_id');
    $source_condition->condition('ds.domain_id', array(DOMAIN_SOURCE_USE_ACTIVE, $sitemap->context['domain']));
    $query->condition($source_condition);
  }
}

TO:

function domain_xmlsitemap_query_xmlsitemap_generate_alter(QueryAlterableInterface $query) {
  $sitemap = $query->getMetaData('sitemap');
  if (!isset($sitemap->context['domain'])) {
    return;
  }

  // @todo Join here may cause duplicate records. Investigate using a subquery.
  $domain_alias = $query->leftJoin('domain_access', 'da', "x.type = 'node' AND x.id = da.nid");
  $domain_condition = db_or();
  $domain_condition->isNull('da.gid');
  $domain_condition->condition(db_and()
    ->condition('da.gid', 0)
    ->condition('da.realm', 'domain_site')
  );
  $domain_condition->condition(db_and()
    ->condition('da.gid', $sitemap->context['domain'])
    ->condition('da.realm', 'domain_id')
  );
  $query->condition($domain_condition);
	if (module_exists('domain_taxonomy')) {
	  $domain_taxonomy_source = $query->leftJoin('domain_taxonomy_access', 'dta', "x.type = 'taxonomy_term' AND x.id = dta.tid");
	  $domain_taxonomy_condition = db_or();
	  $domain_taxonomy_condition->isNull('dta.gid');
	  $domain_taxonomy_condition->condition(db_and()
		->condition('dta.gid', 0)
		->condition('dta.realm', 'domain_site')
	  );
	  $domain_taxonomy_condition->condition(db_and()
		->condition('dta.gid', $sitemap->context['domain'])
		->condition('dta.realm', 'domain_id')
	  );
	  $query->condition($domain_taxonomy_condition);
	}
  // If the domain source module is enabled, we need to add a check against
  // the {domain_source} table as well.
  if (module_exists('domain_source')) {
    $domain_source = $query->leftJoin('domain_source', 'ds', "x.type = 'node' AND x.id = ds.nid");
    $source_condition = db_or();
    $source_condition->isNull('ds.domain_id');
    $source_condition->condition('ds.domain_id', array(DOMAIN_SOURCE_USE_ACTIVE, $sitemap->context['domain']));
    $query->condition($source_condition);
  }
}
rsvelko’s picture

code from #7 in a patch attached

rsvelko’s picture

Status: Active » Needs review
Greg Varga’s picture

I appriciate this is super old but wanted to confirm that the patch in #8 works perfectly. Thank you.

farse’s picture

Issue summary: View changes

I am having the opposite problem of no taxonomies showing up. I can see they are indexed but I don't have taxonomy domain enabled so would just like them all to show up by default!

Have tried replacing 'domain_taxonomy_access' table with 'taxonomy_term_data' with no conditions but that doesn't seem to change anything.

Update: I found out what was wrong and fixed it. I am also using 'domain_locale' module and altered the query and that was the one that excluded the taxonomy. I am posting my working queries here (sorry if not completely related to domain taxonomy)

  $sitemap = $query->getMetaData('sitemap');
  if (!isset($sitemap->context['domain'])) {
    return;
  }

  // If the domain locale module is enabled, we need to add a check against
  // the {domain_locale} table as well.
  if (module_exists('domain_locale')) {
    // Added condition for languages per domain.
    $domain_locale = $query->leftJoin('domain_locale', 'dl', "x.language = dl.language");
    $locale_condition = db_or();
    $locale_condition->isNull('dl.domain_id');
    $locale_condition->condition('dl.domain_id', $sitemap->context['domain']);
    $query->condition($locale_condition);
  }

  // Added taxonomy support for translated taxonomy.
  $taxonomy_source = $query->leftJoin('entity_translation', 'tt', "tt.entity_type = 'taxonomy_term' AND x.id = tt.entity_id AND dl.language = tt.language");
  $taxonomy_condition = db_or();
  $taxonomy_condition->isNull('tt.entity_id');
  $taxonomy_condition->isNotNull('tt.entity_id');
  $query->condition($taxonomy_condition);