We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 11526
    • 93 Posts
    Thanks for the reply...

    Tried the solution of ncrossland. When I call the page with the snippet, I get the following XML-document:

      <?xml version="1.0" encoding="UTF-8" ?> 
      <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" /> 


    This is better then the error I got before, but not the result I was hoping for, since there are no pages in this XML.
      • 23336
      • 1 Posts
      Hello,
      I have installed the the google site map that is explained in the wiki.
      http://wiki.modxcms.com/index.php/SiteMap:_Google_sitemaps_in_MODx#What_is_the_purpose_of_sitemaps.3F
      I am having this error when pointing to the sitemap.xml page

      Erreur d’analyse XML : mal formé
      Emplacement : http://www.relaispc.net/site/sitemap.xml
      Numéro de ligne 142, Colonne 21 : if (!o && d.getElementById) o=d.getElementById(id);

      Could someone indicate me in the right direction.
      Thanks
      NP
        • 36592
        • 970 Posts
        Use blank document template (an empty one).
          • 21056
          • 327 Posts
          Quote from: Gust at Mar 22, 2008, 01:47 AM

          Thanks for the reply...

          Tried the solution of ncrossland. When I call the page with the snippet, I get the following XML-document:

            <?xml version="1.0" encoding="UTF-8" ?> 
            <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" /> 


          This is better then the error I got before, but not the result I was hoping for, since there are no pages in this XML.

          It isn’t picking up any pages - what is the Sitemap call you are using? Have you set any templates or pages (via template variable) to be excluded? Are all your pages published?
            Author: ManagerManager plugin - customise your ModX manager interface

            Rckt - web development, Sheffield, UK
            • 11526
            • 93 Posts
            The SiteMap-call I am using: [!SiteMap!]
            Just the basic snippet-call, so no TV’s, templates,... should be excluded.

            All the pages on my site are published, so the sitemap shouldn’t be empty...

            Thanks in advance!
              • 27305
              • 173 Posts
              I`ve been using sitemap for a while now and for some reason its adding this

              - <url>
              <loc>http://www.eshop600.co.uk//.html</loc>
              <lastmod>1969-12-31</lastmod>
              </url>

              Google keeps throwing up an error becuase of the date, but I cant find the offending document anywhere?

              Anyone got this or knows how to fix?
                I made my first site with modx
                ------------------------
                Shopping blog
                Sky+ HD
                • 27305
                • 173 Posts
                Also the weird thing is if I change it to output at txt the weird page dissapears, very odd
                  I made my first site with modx
                  ------------------------
                  Shopping blog
                  Sky+ HD
                  • 36582
                  • 463 Posts
                  But: With xsl the sitemap seems to be empty... (although the source contains the data, it is not rendered, and: "Number of sitemaps in this Google sitemap index: 0")

                  Anybody find a solution to this?
                    Web site design in Nottingham UK by Chris Fickling http://www.chrisficklingdesign.co.uk
                    • 6726
                    • 7,075 Posts
                    I don’t seem to find any reference to this issue but I have followed the tuto to the letter and SiteMap 1.0.6 gives me an error :

                    [tt]Fatal error: Cannot redeclare gettv() (previously declared in /home/**********/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code:232) in /home/**********/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code on line 255[/tt]

                    I found a reference to a similar issue with GetField, but I lack the skills to transpose this to SiteMap.

                    Anyone has an idea ?
                      .: COO - Commerce Guys - Community Driven Innovation :.


                      MODx est l&#39;outil id
                      • 21056
                      • 327 Posts
                      Quote from: davidm at Apr 25, 2008, 07:33 AM

                      I don’t seem to find any reference to this issue but I have followed the tuto to the letter and SiteMap 1.0.6 gives me an error :

                      [tt]Fatal error: Cannot redeclare gettv() (previously declared in /home/**********/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code:232) in /home/**********/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code on line 255[/tt]

                      I found a reference to a similar issue with GetField, but I lack the skills to transpose this to SiteMap.

                      Anyone has an idea ?

                      Can you try this amended version:

                      <?php
                      /*
                      ==================================================
                      	sitemap
                      ==================================================
                      
                      Outputs a machine readable site map for search
                      engines and robots. Supports the following
                      formats:
                      
                      - Sitemap Protocol used by Google Sitemaps
                        (http://www.google.com/webmasters/sitemaps/)
                      
                      - URL list in text format
                        (e.g. Yahoo! submission)
                      
                      Author: Grzegorz Adamiak [grad]
                      Version: 1.0.6 @ 29-feb-2008
                      License: LGPL
                      MODx: 0.9.2.1, 0.9.6.1
                      
                      History:
                      # 1.0.6
                      - Add optional parameter (excludeWeblinks) to exclude weblinks from the sitemap, since they often point to external
                        sites (which don't belong on your sitemap), or redirecting to other internal pages (which are already
                        in the sitemap). Google Webmaster Tools generates warnings for excessive redirects.	
                        Default is false - e.g. default behaviour remains unchanged.
                      # 1.0.5
                      - Modification about non searchable documents, as suggested by forum user JayBee
                        (http://modxcms.com/forums/index.php/topic,5754.msg99895.html#msg99895)
                      # 1.0.4 (By Bert Catsburg, [email protected])
                      - Added display option 'ulli'. 
                        An <ul><li> list of all published documents.
                      # 1.0.3
                      - NC added ability to specify the XSL URL - you don't always need one and it 
                        seems to create a lot of support confusion!
                        It is now a parameter (&xsl=``) which can take either an alias or a doc ID
                      - Modifications suggested by forum users Grad and Picachu incorporated
                        (http://modxcms.com/forums/index.php/topic,5754.60.html)
                      # 1.0.2
                      - Reworked fetching of template variable value to
                        get INHERITED value.
                      # 1.0.1
                      - Reworked fetching of template variable value,
                        now it gets computed value instead of nominal;
                        however, still not the inherited value.
                      # 1.0
                      - First public release.
                      
                      TODO:
                      - provide output for ROR
                      --------------------------------------------------
                      */
                      
                      /* Parameters
                      ----------------------------------------------- */
                      
                      # $startid [ int ]
                      # Id of the 'root' document from which the sitemap
                      # starts.
                      # Default: 0
                      
                      $startid = (isset($startid)) ? $startid : 0;
                      
                      # $format [ sp | txt | ror ]
                      # Which format of sitemap to use:
                      # - sp <- Sitemap Protocol used by Google
                      # - txt <- text file with list of URLs
                      # TODO - ror <- Resource Of Resources
                      # Default: sp
                      
                      $format = (isset($format) && ($format != 'ror')) ? $format : 'sp';
                      
                      # $priority [ str ]
                      # Name of TV which sets the relative priority of
                      # the document. If there is no such TV, this
                      # parameter will not be used.
                      # Default: sitemap_priority
                      
                      $priority = (isset($priority)) ? $priority : 'sitemap_priority';
                      
                      # $changefreq [ str ]
                      # Name of TV which sets the change frequency. If
                      # there is no such TV this parameter will not be
                      # used.
                      # Default: sitemap_changefreq
                      
                      $changefreq = (isset($changefreq)) ? $changefreq : 'sitemap_changefreq';
                      
                      # $excludeTemplates [ str ]
                      # Documents based on which templates should not be
                      # included in the sitemap. Comma separated list
                      # with names of templates.
                      # Default: empty
                      
                      $excludeTemplates = (isset($excludeTemplates)) ? $excludeTemplates : array();
                      
                      # $excludeTV [ str ]
                      # Name of TV (boolean type) which sets document
                      # exclusion form sitemap. If there is no such TV
                      # this parameter will not be used.
                      # Default: 'sitemap_exclude'
                      
                      $excludeTV = (isset($excludeTV)) ? $excludeTV : 'sitemap_exclude';
                      
                      # $xsl [ str ] 
                      # URL to the XSL style sheet
                      # or
                      # $xsl [ int ]
                      # doc ID of the XSL style sheet
                      
                      $xsl = (isset($xsl)) ? $xsl : '';
                      if (is_numeric($xsl)) { $xsl = $modx->makeUrl($xsl); }
                      
                      
                      # $excludeWeblinks [ bool ]
                      # Should weblinks be excluded?
                      # You may not want to include links to external sites in your sitemap,
                      # and Google gives warnings about multiple redirects to pages 
                      # within your site.
                      # Default: false
                      $excludeWeblinks = (isset($excludeWeblinks)) ? $excludeWeblinks : false;
                      
                      
                      /* End parameters
                      ----------------------------------------------- */
                      
                      # get list of documents
                      # ---------------------------------------------
                      $docs = getDocs($modx,$startid,$priority,$changefreq,$excludeTV);
                      
                      # filter out documents by template or TV
                      # ---------------------------------------------
                      // get all templates
                      $select = $modx->db->select("id, templatename", $modx->getFullTableName('site_templates'));
                      while ($query = $modx->db->getRow($select))
                      {
                      	$allTemplates[$query['id']] = $query['templatename'];
                      }
                      
                      // get templates to exclude
                      if (!empty ($excludeTemplates))
                      {
                      	$excludeTemplates = explode(",", $excludeTemplates);
                      	// trim template names and remove empty ones (just in case)
                      	foreach ($excludeTemplates as $template)
                      	{
                      		if (trim($template))
                      			$excludeTemplates[] = trim($template);
                      	} // end foreach
                      }
                      
                      // filter out documents
                      foreach ($docs as $doc)
                      {
                      	if (!in_array($doc['template'], array_flip(array_intersect($allTemplates, $excludeTemplates)))) {
                      		if (!$doc[$excludeTV] && $doc['published'] && $doc['template']!=0 && $doc['searchable']) {
                      			if (!$excludeWeblinks || ($excludeWeblinks && $doc['type'] != 'reference')) {
                      				$output[] = $doc;		
                      			}
                      		}
                      	}
                      }
                      $docs = $output;
                      unset ($output, $allTemplates, $excludeTemplates);
                      
                      # build sitemap in specified format
                      # ---------------------------------------------
                      
                      switch ($format)
                      {
                      	// Next case added in version 1.0.4
                      	case 'ulli': // UL List
                      		$output .= "<ul class=\"sitemap\">\n";
                      		// TODO: Sort the array on Menu Index
                      		// TODO: Make a nested ul-li based on the levels in the document tree.
                      		foreach ($docs as $doc)
                      		{
                      			$s  = "  <li class=\"sitemap\">";
                      			$s .= "<a href=\"[(site_url)][~" . $doc['id'] . "~]\" class=\"sitemap\">" . $doc['pagetitle'] . "</a>";
                      			$s .= "</li>\n";
                      			$output .= $s;
                      		} // end foreach
                      		$output .= "</ul>\n";
                      		break;
                      		
                      	case 'txt': // plain text list of URLs
                      
                      		foreach ($docs as $doc)
                      		{
                      			$url = '[(site_url)][~'.$doc['id'].'~]';
                      
                      			$output .= $url."\n";
                      		} // end foreach
                      		break;
                      
                      	case 'ror': // TODO
                      	default: // Sitemap Protocol
                      
                      	
                      	$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
                      	if ($xsl != '') {
                      		$output .='<?xml-stylesheet type="text/xsl" href="'.$xsl.'"?>'."\n";
                      	}
                      	$output .='<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'."\n";
                      	
                      	
                      	foreach ($docs as $doc)	{
                      		$url = '[(site_url)][~'.$doc['id'].'~]';
                      		$date = $doc['editedon'];
                      		$date = date("Y-m-d", $date);
                      		$docPriority = ($doc[$priority]) ? $doc[$priority] : 0; // false if TV doesn't exist
                      		$docChangefreq = ($doc[$changefreq]) ? $doc[$changefreq] : 0; // false if TV doesn't exist
                      
                      		$output .= "\t".'<url>'."\n";
                      		$output .= "\t\t".'<loc>'.$url.'</loc>'."\n";
                      		$output .= "\t\t".'<lastmod>'.$date.'</lastmod>'."\n";
                      		$output .= ($docPriority) ? ("\t\t".'<priority>'.$docPriority.'</priority>'."\n") : ''; // don't output anything if TV doesn't exist
                      		$output .= ($docChangefreq) ? ("\t\t".'<changefreq>'.$docChangefreq.'</changefreq>'."\n") : ''; // don't output anything if TV doesn't exist
                      		$output .= "\t".'</url>'."\n";
                      	} // end foreach
                      	$output .= '</urlset>';
                      
                      } // end switch
                      
                      return $output;
                      
                      # functions
                      # ---------------------------------------------
                      
                      # gets (inherited) value of template variable
                      if (!function_exists('getTv')) {
                      	function getTV($modx,$docid,$doctv)
                      	{
                      	/* apparently in 0.9.2.1 the getTemplateVarOutput function doesn't work as expected and doesn't return INHERITED value; this is probably to be fixed for next release; see http://modxcms.com/bugs/task/464
                      		$output = $modx->getTemplateVarOutput($tv,$docid);
                      		return $output[$tv];
                      	*/
                      		
                      		while ($pid = $modx->getDocument($docid,'parent'))
                      		{
                      			$tv = $modx->getTemplateVar($doctv,'*',$docid);
                      			if (($tv['value'] && substr($tv['value'],0,8) != '@INHERIT') or !$tv['value']) // tv default value is overriden (including empty)
                      			{
                      				$output = $tv['value'];
                      				break;
                      			}
                      			else // there is no parent with default value overriden 
                      			{
                      				$output = trim(substr($tv['value'],8));
                      			}
                      			$docid = $pid['parent']; // move up one document in document tree
                      		} // end while
                      		
                      		return $output;
                      	}
                      }
                      
                      # gets list of published documents with properties
                      if (!function_exists('getTv')) {
                      	function getDocs($modx,$startid,$priority,$changefreq,$excludeTV)
                      	{
                      		// get children documents
                      		$docs = $modx->getAllChildren($startid,'menuindex','asc','id,editedon,template,published,searchable,pagetitle,type'); 
                      		// add sub-children to the list
                      		foreach ($docs as $key => $doc)
                      		{
                      			$id = $doc['id'];
                      			$docs[$key][$priority] = getTV($modx,$id,$priority); // add priority property
                      			$docs[$key][$changefreq] = getTV($modx,$id,$changefreq); // add changefreq property
                      			$docs[$key][$excludeTV] = getTV($modx,$id,$excludeTV); // add excludeTV property
                      			
                      			if ($modx->getActiveChildren($id))
                      				$docs = array_merge($docs, getDocs($modx,$id,$priority,$changefreq,$excludeTV));
                      		} // end foreach
                      		return $docs;
                      	}
                      }
                      ?>
                      
                        Author: ManagerManager plugin - customise your ModX manager interface

                        Rckt - web development, Sheffield, UK