We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6726
    • 7,075 Posts
    Thanks !

    What I get now is :

    [tt]Fatal error: Call to undefined function getDocs() in /home/pargade/domains/pargade-notaires.fr/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code on line 130[/tt]
      .: COO - Commerce Guys - Community Driven Innovation :.


      MODx est l'outil id
      • 21056
      • 327 Posts
      Quote from: davidm at Apr 28, 2008, 03:31 AM

      Thanks !

      What I get now is :

      [tt]Fatal error: Call to undefined function getDocs() in /home/pargade/domains/pargade-notaires.fr/public_html/manager/includes/document.parser.class.inc.php(769) : eval()’d code on line 130[/tt]

      Sorry my mistake, try:

      <?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('getDocs')) {
      	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
        • 6726
        • 7,075 Posts
        Wow that’s almost like live support grin

        I didn’t check if the second code was different but I get the exact same error (copy/paste mix up ?).

        I checked on my end, pasted the second code alright, checked first lines and last lines, cleared the cache even if the snippet call is uncached huh

        Edit : OK I checked and the difference is that in the second version you have changed

        if (!function_exists(’getTv’))

        into

        if (!function_exists(’getDocs’)) 

        Off to checking if the right code has been pasted the second time around !

        Edit 2 : I pasted the good code alright... huh

          .: COO - Commerce Guys - Community Driven Innovation :.


          MODx est l&#39;outil id
          • 6726
          • 7,075 Posts
          I switched to GoogleSitemap_XML snippet in the meantime, but I’d be curious to understand what’s wrong here and also I am suprised nobody has the same issue...
            .: COO - Commerce Guys - Community Driven Innovation :.


            MODx est l&#39;outil id
            • 26931
            • 2,314 Posts
            Hi there,

            I got ModX 0.9.6.1p2 installed on my localhost and try to get the snippet sitemap_1.0.6 to work...

            i followed all the instructions from the wiki and the posts here in the forum, though i can see
            the xml-output in the manager preview like this:
            <urlset xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 
            http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
            <url>
            <loc>http://localhost/modx/index.php?id=47</loc>
            <lastmod>2008-04-14</lastmod>
            </url>
            ...
            

            i will get this message when i enter the url of the xml-file:
            "Not Found
            The requested URL /modx/sitemap.xml was not found on this server.
            Apache/1.3.33 Server at localhost Port 80"

            how can that be, anybody an idea?

            thank you & cheers, jan
              • 36592
              • 970 Posts
              Is the sitemap document really published ?
                • 32358
                • 2 Posts
                Quote from: davidm at Apr 28, 2008, 08:31 AM

                I switched to GoogleSitemap_XML snippet in the meantime, but I’d be curious to understand what’s wrong here and also I am suprised nobody has the same issue...

                I am having the same issue. Have you been able to find a resoultion? I am looking to print a UL/LI sitemap.

                Regards
                  • 26931
                  • 2,314 Posts
                  Hi!

                  yes, the document is published.

                  cheers, jan
                    • 36592
                    • 970 Posts
                    Quote from: sharkbait at May 16, 2008, 12:52 AM

                    yes, the document is published.
                    Then, is the friendly url set ’On’ in your MODx settings and is .htaccess file properly configured ?
                    Or the url ( /modx/sitemap.xml ) really correct ?
                    (With the default setting of Friendly URL, .html must be attached to all documents.)
                      • 26931
                      • 2,314 Posts
                      Hi there!

                      okayokay smiley you got me, friendly url is not on and if i browse to the right id i see the xml output! two more questions: is it enough to tell google where to find this page (www...index.php?id=54) and can i set the page to not published so it won’t show up in the menu? (btw, i’m not allowed to use .htaccess-files on the server)

                      thank you very much & cheers, jan