ryan Posted June 15, 2013 Share Posted June 15, 2013 The line number for MarkupSitemapXML is cut-off in the error message you pasted, but that line number would reveal the call that is triggering it. Another alternative is to use a template file. I posted an example here: http://processwire.com/talk/topic/3846-how-do-i-create-a-sitemapxml/ 1 Link to comment Share on other sites More sharing options...
chrizz Posted October 23, 2013 Share Posted October 23, 2013 hey guys, I just found this plugin. Great work. It saved some time to code some sitemaps on my own! I'm currently developing my site on a windows platform. After installing the plugin I got a weird error message: Error: Exception: Unknown Selector operator: '' -- was your selector value properly escaped? After some debugging I found out that this seems to be an issue with directory seperators on windows machines. I just added 3 lines of code to fix this problem for me. I don't know if anyone else suffers from this windows... ehh... bug, so here's what I added (in Line 42, after setting $startpage): if(DIRECTORY_SEPARATOR == '\\' && $startpage == '\\') { $startpage = '/'; } Perhaps this will help someone else with same problems Cheerio & thanks! 1 Link to comment Share on other sites More sharing options...
jacknails Posted November 16, 2013 Share Posted November 16, 2013 I can't seem to get this to work with a multilingual site on 2.3. The site is setup with 2 languages like so: example.com/en/page/ example.com/fr/page/ But when viewing the sitemap I only get example.com/page/ And ideas? Link to comment Share on other sites More sharing options...
kixe Posted November 18, 2013 Share Posted November 18, 2013 [...] Another alternative is to use a template file. I posted an example here: http://processwire.com/talk/topic/3846-how-do-i-create-a-sitemapxml/ As Ryan mentioned above check this and the following posts: http://processwire.com/talk/topic/3846-how-do-i-create-a-sitemapxml/#entry39061 Link to comment Share on other sites More sharing options...
David Karich Posted January 9, 2014 Share Posted January 9, 2014 Hi guys, I think i found a bug in this module. There is no Sitemap generated when ProcessWire is installed in a subfolder relative to the root directory. For example: If PW is installed in direct root: www.flipzoom.de - works If PW is installed in the subdirectory: www.flipzoom.de/pw203/ - does not work; trigger a 404 The problem is on line 42 in the MarkupSitemapXML.module. $startpage = $this->sanitizer->path(dirname($_SERVER['REQUEST_URI'])); The variable $startpage returns "/pw203/" instead of "/". The following should fix the problem. Replace line 42 $startpage = $this->sanitizer->path(dirname($_SERVER['REQUEST_URI'])); with $startpage = str_ireplace(trim(wire('config')->urls->root, '/'), '', $this->sanitizer->path(dirname($_SERVER['REQUEST_URI']))); Best regards, Dave 1 Link to comment Share on other sites More sharing options...
Soma Posted January 9, 2014 Share Posted January 9, 2014 This is not a bug? Because if you have pw in a subdirectory the directory is in the url. That's the intended behavior. Link to comment Share on other sites More sharing options...
David Karich Posted January 9, 2014 Share Posted January 9, 2014 This is not a bug? Because if you have pw in a subdirectory the directory is in the url. That's the intended behavior. If I have PW in a subdirectory, the 404-Page will be displayed, not the sitemap. And if I remove the directory name from the start variable, it works. For understanding: It is a real directory, not a segment in the URL as language localization. So PW installed in the root: www.example.com/sitemap.xml (work). PW installed in a real subdir: www.example.com/a-real-subdir-on-server/sitemap.xml (404 page) Link to comment Share on other sites More sharing options...
Soma Posted January 10, 2014 Share Posted January 10, 2014 Sorry I was too quick reading wrong on my small mobile narrow view. I think you could also file an issue on github. Link to comment Share on other sites More sharing options...
David Karich Posted January 10, 2014 Share Posted January 10, 2014 Sorry I was too quick reading wrong on my small mobile narrow view. I think you could also file an issue on github. No problem. Issue has been reported on Github. https://github.com/Notanotherdotcom/MarkupSitemapXML/issues/11 Link to comment Share on other sites More sharing options...
Pete Posted February 9, 2014 Author Share Posted February 9, 2014 I've merged the pull request - thanks Link to comment Share on other sites More sharing options...
Guest Posted March 17, 2014 Share Posted March 17, 2014 Sorry to start begging right after joining the community Are there any plans to make the module work with LanguageSupportPageNames instead of LanguageLocalizedURL? I like how transparent the module is, but I would like to have other languages listed in the sitemap too. Anyway, good work! Link to comment Share on other sites More sharing options...
kixe Posted March 19, 2014 Share Posted March 19, 2014 Hi taqtaq, you could use Ryans sitemap-template. it works pretty good in different languages. No need to install LanguageLocalizedURL.For your different languages you should just add something like: <url> <loc>http://yoursite.fi/</loc> <xhtml:link rel="alternate" hreflang="en" href="http://yoursite.fi/en" /> <xhtml:link rel="alternate" hreflang="it" href="http://yoursite.fi/it" /> </url> http://processwire.com/talk/topic/3846-how-do-i-create-a-sitemapxml/I will check if I could write a small function to implement this for every language in the system.EDIT:Here comes Ryans template with added language alternate-links like recommended by google for multilanguage support.more information here: https://support.google.com/webmasters/answer/2620865?hl=enimportant: name of language should be same like international language-code (name your pages en for english, de for german, es for spain etc.Just Follow Ryans instructions to use the template, everything else is done by the template.Update 29.02.16This update is made for PW 3.0. To prevent endless redirects in 2.7 and lower please read instructions (comments). You need to comment out the line with the redirect.multilang-sitemap-xml.php.zip 3 Link to comment Share on other sites More sharing options...
Guest Posted March 19, 2014 Share Posted March 19, 2014 Thanks for your effort kixe, it's working. Didn't even know you are supposed to do the linking like that. Well, every day is a school day.. I still think it would be great if the module was updated sooner or later. I don't want to see our module directory look like the WordPress'. There are so many plugins doing the same stuff a bit differently.. Link to comment Share on other sites More sharing options...
Mike Rockett Posted May 13, 2014 Share Posted May 13, 2014 This looks like a great plugin, but it doesn't seem to work for me... A request to /sitemap.xml just throws a 404. I have enabled Cache, but I don't see any XML cache file. Link to comment Share on other sites More sharing options...
kixe Posted May 14, 2014 Share Posted May 14, 2014 Hi mike-anthony, welcome to the forum.Did you follow Ryans instructions? Do you use it with multi language site?1. Copy this file to /site/templates/sitemap-xml.php2. Add the new template from the admin.Under the "URLs" section, set it to NOT use trailing slashes.3. Create a new page at the root level, use your sitemap-xml templateand name the page "sitemap.xml".more:http://processwire.c...e-a-sitemapxml/Just to be clear. This (download link from my post 19 March 2014) is a modified Version of Ryans Template with multi language support recommended by google.I don't use it by myself. I have a hard-coded sitemap-index and use Ryans Template for language specific sitemaps, which works perfectly. <?xml version="1.0" encoding="UTF-8"?> <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <sitemap> <loc>http://example.com/de/sitemap.xml</loc> </sitemap> <sitemap> <loc>http://example.com/en/sitemap.xml</loc> </sitemap> </sitemapindex> <!-- call this file sitemap.xml put it in the root directory --> Link to comment Share on other sites More sharing options...
Mike Rockett Posted May 14, 2014 Share Posted May 14, 2014 Hi kixe, and thank you It's not a multi-language site. So, I'm a tad confused: His post says that I must either use the module, OR his template and page; but you're suggesting that I do both? I simply assumed that the module would be plug-and-play (I don't see any specific instructions for the module itself). EDIT: Just so you know, I am using Twig for my templates, and I don't think PW can be set to check if a given template is running PHP or Twig, as it's hard-coded into the config file. Woild be nice if I could set it like so: $config->templateExtension = 'twig|php'; As such, I don't think I can use the page/template-based approach as Twig is designed for that. EDIT: Although, I could use Hanna Code... Yes? Link to comment Share on other sites More sharing options...
kixe Posted May 14, 2014 Share Posted May 14, 2014 Hi,you didn't understand me right. In generally you have 2 options: Module or Template.Module: There exists a sitemap-module made by Pete. Module-Download and Instructions on the modules page: http://modules.processwire.com/modules/markup-sitemap-xml/Template: Template made by Ryan: https://processwire.com/talk/topic/3846-how-do-i-create-a-sitemapxml/Both can be used on single and multi-language sites. Use Module OR Template.The template, which you can download from my post above is a modification of Ryans Template and works only on multilanguage sites, don't use it together with the hard coded sitemap-index I have posted.I don't use twig and I don't know how to implement it in PW. But I think it is easier and faster just to use php-Templates with PW-Api. Read PW Instructions and you will see how easy the use is. If you want to talk about twig, Hanna Code or whatever find the right thread or start a new one. Link to comment Share on other sites More sharing options...
Mike Rockett Posted May 14, 2014 Share Posted May 14, 2014 Right, so I don't use multi-language, and I have followed the instructions for the module by Pete - but, the module is not working for me, and I need to figure out why. As I use Twig, I cannot use the template, and must use the module. I have to assume that something's broken with the module, because it just doesn't initiate. Link to comment Share on other sites More sharing options...
Mike Rockett Posted May 14, 2014 Share Posted May 14, 2014 The client pushed me to put the site live, which I have now done. Funny thing: it works on production, but not on staging... Weird. Have you seen this happening before? My staging server is a simple XAMPP setup with PHP 5.5. The production server is running 5.4. Link to comment Share on other sites More sharing options...
justb3a Posted November 13, 2014 Share Posted November 13, 2014 First I want to thank you for this module, it's so easy to use. I added sitemap_ignore als global page setting.Therefore I changed ___install and ___uninstall. And I added two hooks to handle this: $this->addHookAfter('ProcessPageEdit::buildFormSettings', $this, 'addIgnoreXML'); $this->addHookAfter('Pages::save', $this, 'saveIgnoreXML'); The main functionality stayed unchanged. And I added some content to the ReadMe file Feedback welcome 1 Link to comment Share on other sites More sharing options...
chriswthomson Posted January 8, 2015 Share Posted January 8, 2015 Hello, First off - thanks for the module! I'm trying to uninstall the module (version 1.1.0) on a site that doesn't require a sitemap, but I keep getting the following error: Recoverable Fatal Error: Argument 1 passed to Fields::___delete() must implement interface Saveable, null given (line 265 of ...wire/core/Fields.php) Any ideas? Will manually uninstall it if needbe. Cheers, Chris Link to comment Share on other sites More sharing options...
guy Posted February 8, 2015 Share Posted February 8, 2015 @chriswthomson - you've likely deleted the checkbox field this module sets up on install. To get past this error add a new field with a name of: sitemap_ignore then try running the uninstall again. Link to comment Share on other sites More sharing options...
tpr Posted May 18, 2015 Share Posted May 18, 2015 I forked this module to add an ignore list feature, see here: https://github.com/rolandtoth/ProcessWire-MarkupSitemapXML/blob/master/MarkupSitemapXML.module This adds a textarea where you can enter ProcessWire selectors. Matching pages will be excluded from the sitemap. For example: artist.date_birth!="" name=my-page parent.path=/my-page/ Screenshot: This is how the exlusion works, using $page->is(): public function processExcludeList($page) { // get module settings $configData = wire('modules')->getModuleConfigData($this); // process exclude list if ($configData['sitemap_exclude_list'] != '') { $excludeList = trim($configData['sitemap_exclude_list']); $excludeList = explode("\n", $excludeList); $excludeList = array_filter($excludeList, 'trim'); // remove any extra \r characters left behind // loop through lines and return false if current page matches foreach ($excludeList as $item) { if ($page->is($item)) { return false; } } } return true; } Submitting the module settings doesn't clear the cache - this has to be done manually (just like in the current 1.1.0 release). I made some attempts to fix this but no success. It would be nice if a ProcessWire expert could have a look on it as this is my first module contribution and I'm relatively new to PW. 1 Link to comment Share on other sites More sharing options...
tpr Posted May 20, 2015 Share Posted May 20, 2015 Here is a quick screencap of "Generate sitemap" feature I'm experimenting with. It is button added by JavaScript that ajax-calls " /sitemap.xml?nocache=1". In the module, if "nocache=" GET parameter is 1, then cache time is set to 0 instead of 3600. Because of this, the sitemap is re-generated. If module settings (currently only the exclude list) is modified, then the user have to save settings first, only then is possible to regenerate sitemap. View in action (in the upper part there's WinSCP window): Link to comment Share on other sites More sharing options...
tpr Posted May 22, 2015 Share Posted May 22, 2015 Updated my fork to 1.2.6: https://github.com/rolandtoth/ProcessWire-MarkupSitemapXML/tree/master The readme file is updated with info on the new features: auto generate sitemap on module submit ajax button to generate sitemap comments feature in exclude list 4 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now