Jump to content
adrian

Migrator

Recommended Posts

I posted about this on kongondo's blog module thread, but wanted to note it here too :)

I just tested Nico's new version, tweaked the field and template names to match those used by K's Blog module, imported my WP blog xml and it worked brilliantly.

Great work Nico!

  • Like 1

Share this post


Link to post
Share on other sites

Thanks Adrian and Nico for these two powerful tools. I can confirm that I was able to import a WP site and was blown away by the results.

This opens up a lot of professional opportunities to offer much quicker redesigns to those clients who come to me frustrated with their Wordpress sites, complaining that they have not fulfilled their expectations and were unable to grow and adapt to their business needs.

  • Like 7

Share this post


Link to post
Share on other sites

This module saved me a ton of time overall. The site I was using as a test case has one custom post type. After a couple of attempts to import the entire Wordpress export file, I figured out that it is easier to make exports of the regular posts and custom posts individually. I then had to go through the custom post type xml file and find/replace two things. First, I had to change these urls 

<guid isPermaLink="false">http://localhost/clients/yoursitehere/v03/?post_type=events&p=183</guid>

to look like this

<guid isPermaLink="false">http://localhost/clients/yoursitehere/v03/?p=183</guid>

Then I had to change the post type from

<wp:post_type>events</wp:post_type>

to

<wp:post_type>post</wp:post_type>

I wasn't able to figure out how to pull in my custom meta information, but even with having to do that manually, these modules saved me a ton of time. I'm sure that I probably did this inefficiently, but in the end I was able to Forrest Gump my way through it and get the results I needed.

I appreciate the work that has been put into these modules. Thanks guys!

  • Like 3

Share this post


Link to post
Share on other sites

Hey, thank you for posting this workaround. Custom post types are currently not supported. (I don't even have test data for custom posts). Comments aren't supported as well at moment. But both will follow in the next time. 

  • Like 1

Share this post


Link to post
Share on other sites

Yeah, that's totally understandable. Since they're custom post types, it seems like all the variations would be difficult to plan for. I'm glad you guys came up with a way to get most of the information into ProcessWire. I was dreading all the copying/pasting I was going to have to do.

  • Like 1

Share this post


Link to post
Share on other sites

hi there!
 
i just discovered this great module an wanted to test it with a site of mine.
export worked well (140mb zip  :o), but the import failed with the following error:
 

Can't save page 0: /: It has an empty 'name' field

 
it seems like there is an issue with the import/export and the use of the »Languages Support - Page Names« module. using this module, the homepage also has a name field for each language, where the field for the default language is empty by default. this seems to bug the import. if i add a name manually, the import succeeds, but i get another (undeleteable) homepage under the original.
 
a second error occurs, when i try to import user details:
 

Can't save page 0: /cms/access/roles/: It has an empty 'name' field

 
i couldn't find the reason for this.
 
 
and last but not least the third error:
 
When i select the "Edit Imported Content" option, i can choose the fields and pages, i want to import. after submitting may selection i get an error, that zip or json are missing.
 
 
otherwise, great module!  :wub:

  • Like 1

Share this post


Link to post
Share on other sites

tobaco - thanks for the comprehensive report. I have tested the module with standard language support, but never with "Languages Support - Page Names". Sorry, multi language stuff is not something I ever use, so I am a bit ignorant of it I'm afraid. Is it common practice for the field for the default language to be empty by default?

Not sure about the roles issue - creating new users and roles this is a relatively new feature for Migrator - I'll need to see if I can replicate the error you got. Would it be possible to send me the json file from your export so I can see how the role was defined during export?

I'll look into the Edit Imported Content issue - again that is a relatively new feature and I think some more recent changes might have broken that - hopefully should be an easy fix - just a session variable issue.

Share this post


Link to post
Share on other sites

Ok, just to follow up. I have fixed the issue with the error when using the "Edit Imported Content" option - stupid oversight on my part when I added a cleanup routine in a recent update. Should be fine now :)

I can't replicate the error around roles so it would be great to have your exported json if possible.

I also tried to look at the language page names issue, but when I tried to leave the default name blank I get an error saying that it can't be blank, but I think I must not be understanding this. Could you please outline the steps to set up a site with multi-language page names with a blank default name so I can test this.

Thanks again for your feedback with this.

  • Like 1

Share this post


Link to post
Share on other sites

Hi I am getting the error 'Missing required ZIP or JSON Souce' as well, both with a custom page tree import. and the blog profile zip import.

Edit: Sorry, the blog.zip import works ok.

In my exported files.zip there is not a .json file.

This is the structure of the exported files.zip:

pages

      >site-management

                            >projects

                                        >page1

                                                 image1.jpg

                                                 image1.0x100.jpg

                                        >page2

                                                  image2.jpg

                                                  image2.0x100.jpg

                                        >page3

                                                  image3.jpg

                                                  image3.0x100.jpg

                                        etc

I get the error whether Edit Imported Content is checked or not.

I hope that helps. If you need any more info please let me know.

Edited by NooseLadder

Share this post


Link to post
Share on other sites

@tobaco,

Thanks for the json file. I will take a look at the language/role issues when I have a little more time - sometime early next week.

@NooseLadder 

Can you please make sure you are running the latest version of Migrator - I think the fix I made yesterday should take care of the issues you are having. Although it is surprising to hear that you don't have a data.json file in your exported files.zip - I have never seen that before. Does it make a difference if you choose a different parent page when exporting?

Edited by adrian

Share this post


Link to post
Share on other sites

Hi I downloaded the module today at approx 15:30 GMT. The version from the modules window in admin says Migrator 0.1.1. Is that the latest?

Share this post


Link to post
Share on other sites

Yep, that is the latest. Does exporting a different parent make any difference to having a data.json file in your zip?

Share this post


Link to post
Share on other sites

Hi. I have created a test page under Home and exported using Home as the parent. Unfortunately the JSON file is not in the zip file.  :(

Share this post


Link to post
Share on other sites

Can you please try exporting a page tree that does not include Home as the parent? I think maybe there might be an issue with selecting Home as the parent. It works for me, but just trying to narrow it down. 

Also, are you running multilanguage page names?

Share this post


Link to post
Share on other sites

Hi,

I have run some more tests. Exporting from a live server is ok (the JSON file is created) but exporting from localhost (Xampp) it is not created. Maybe its the php server configuration but I am not sure where to look for this particular problem.  :(

I hope we can get this running on localhost as this is where I make all the site changes prior to uploading to live server.

Edit: I've just chechek XAMPP phpinfo and json support is enabled, json version 1.2.1. This is the same on my live server.

Edited by NooseLadder

Share this post


Link to post
Share on other sites

Can you please clear your browser session data and then run an export on your xamp server and after the file has downloaded, reload the page and open up:

Debug Mode Tools > Session and look for an entry like this:

jsonFilename | /Users/xxxxxx/site/assets/files/1006/data.json

Keep in mind the 1006 will be different.

Share this post


Link to post
Share on other sites

I got this line in debug tools: 


C:/xampp/htdocs/mysite/site/assets/files/1022/data.json

The folder /1022/ is empty.

Edit: And the zip file does not contain the data.json file.

Edited by NooseLadder

Share this post


Link to post
Share on other sites

Have you checked your file permissions? Maybe /assets/files/ is not writable..


For testing on your local XAMP Server just give assets and its subfolders 777 permission (never do this on live server if possible!)

Share this post


Link to post
Share on other sites

I've just terminated (exit;) the module ( line 316) after data.json and files.zip creation and both files are in the /1022/ folder.

Edit: But after zip download the json file is missing in the zip file.

Edited by NooseLadder

Share this post


Link to post
Share on other sites
I've just terminated (exit;) the module ( line 316) after data.json and files.zip creation and both files are in the /1022/ folder.

What do you see in your 1022 folder if you move the exit down to after line 317 and then again after 318?

I am assuming there is something in the create_zip function that isn't working on your local install. Maybe it's the ZIPARCHIVE::OVERWRITE?

Share this post


Link to post
Share on other sites

@tobaco,

I haven't looked into the language issue fully yet, but had a quick look at the role error you are getting. For some reason your cms user doesn't have a role defined in the json file. From what I can tell, it is not possible to save a user in PW without at least having the guest role assigned, but could you please look at that user and let me know the role setup for it?

Another role issue I noticed has shown up because you are migrating your entire page tree, which includes the default 404 page. The created_user_id for this page is 3 which is not actually a user. I am going to check with Ryan if there is a reason for this. Regardless, I should be able to implement a workaround for this easily.

One nice thing from playing around with your JSON file is that the FieldtypeTextareas field appears to have been imported correctly - I hadn't tested any of the new Profields with Migrator yet, so this is an encouraging start :)

Share this post


Link to post
Share on other sites

@adrian

thanks for your help!

do you mean with cms user an user named "cms"? there is no user with this name. all other users have at least one role assigned.

"cms" is the path to the backend (changed it from "processwire" to "cms")

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By bernhard
      --- Please use RockFinder3 ---
    • By MoritzLost
      Cacheable Placeholders
      This module allows you to have pieces of dynamic content inside cached output. This aims to solve the common problem of having a mostly cacheable site, but with pieces of dynamic output here and there.  Consider this simple example, where you want to output a custom greeting to the current user:
      <h1>Good morning, <?= ucfirst($user->name) ?></h1> This snippet means you can't use the template cache (at least for logged-in users), because each user has a different name. Even if 99% of your output is static, you can only cache the pieces that you know won't include this personal greeting. A more common example would be CSRF tokens for HTML forms - those need to be unique by definition, so you can't cache the form wholesale.
      This module solves this problem by introducing cacheable placeholders - small placeholder tokens that get replaced during every request. The replacement is done inside a Page::render hook so it runs during every request, even if the response is served from the template cache. So you can use something like this:
      <h1>Good morning, {{{greeting}}}</h1> Replacement tokens are defined with a callback function that produces the appropriate output and added to the module through a simple hook:
      // site/ready.php wire()->addHookAfter('CachePlaceholders::getTokens', function (HookEvent $e) { $tokens = $e->return; $tokens['greeting'] = [ 'callback' => function (array $tokenData) { return ucfirst(wire('user')->name); } ]; $e->return = $tokens; }); Tokens can also include parameters that are parsed and passed to the callback function. There are more fully annotated examples and step-by-step instructions in the README on Github!
      Features
      A simple and fast token parser that calls the appropriate callback and runs automatically. Tokens may include multiple named or positional parameters, as well as multi-value parameters. A manual mode that allows you to replace tokens in custom pieces of cached content (useful if you're using the $cache API). Some built-in tokens for common use-cases: CSRF-Tokens, replacing values from superglobals and producing random hexadecimal strings. The token format is completely customizable, all delimiters can be changed to avoid collisions with existing tag parsers or template languages. Links
      Github Repository & documentation Module directory (pending approval) If you are interested in learning more, the README is very extensive, with more usage examples, code samples and usage instructions!
    • By Craig
      I've been using Fathom Analytics for a while now and on a growing number of sites, so thought it was about time there was a PW module for it.
      WayFathomAnalytics
      WayFathomAnalytics is a group of modules which will allow you to view your Fathom Analytics dashboard in the PW admin panel and (optionally) automatically add and configure the tracking code on front-end pages.
      Links
      GitHub Readme & documentation Download Zip Modules directory Module settings screenshot What is Fathom Analytics?
      Fathom Analytics is a simple, privacy-focused website analytics tool for bloggers and businesses.

      Stop scrolling through pages of reports and collecting gobs of personal data about your visitors, both of which you probably don't need. Fathom is a simple and private website analytics platform that lets you focus on what's important: your business.
      Privacy focused Fast-loading dashboards, all data is on a single screen Easy to get what you need, no training required Unlimited email reports Private or public dashboard sharing Cookie notices not required (it doesn't use cookies or collect personal data) Displays: top content, top referrers, top goals and more
    • By daniels
      This is a lightweight alternative to other newsletter & newsletter-subscription modules.
      You can find the Module in the Modules directory and on Github
      It can subscribe, update, unsubscribe & delete a user in a list in Mailchimp with MailChimp API 3.0. It does not provide any forms or validation, so you can feel free to use your own. To protect your users, it does not save any user data in logs or sends them to an admin.
      This module fits your needs if you...
      ...use Mailchimp as your newsletter / email-automation tool ...want to let users subscribe to your newsletter on your website ...want to use your own form, validation and messages (with or without the wire forms) ...don't want any personal user data saved in any way in your ProcessWire environment (cf. EU data regulation terms) ...like to subscribe, update, unsubscribe or delete users to/from different lists ...like the Mailchimp UI for creating / sending / reviewing email campaigns *I have only tested it with PHP 7.x so far, so use on owners risk
      EDIT:
      Since 0.0.4, instructions and changelog can be found in the README only. You can find it here  🙂
      If you have questions or like to contribute, just post a reply or create an issue or pr on github, thanks!
    • By MoritzLost
      Sorry for the convoluted title. I have a problem with Process modules that define a custom page using the page key through getModuleInfo (as demonstrated in this excellent tutorial by @bernhard). Those pages are created automatically when the module is installed. The problem is that the title of the page only gets set in the current language. That's not a problem if the current language (language of the superuser who is installing the module) is the default language; if it isn't, the Process page is missing a title in the default language. This has the very awkward effect that a user using the backend in the default language (or any other language) will see an empty entry in the setup menu:

      This screenshot comes from my Cache Control module which includes a Process page. Now I realize the description sounds obscure, but for us it's a common setup: We a multiple bilingual sites where the default language is German and the second language is English. While the clients use the CMS in German, as a developer I prefer the English interface, so whenever I install a Process module I get this problem.
      As a module author, is there a way to handle this situation? I guess it would be possible to use post-installation hooks or create the pages manually, but I very much prefer the declarative approach. The page title is already translatable (through the __ function), but of course at the time of installation there is no translation, and as far as I'm aware it's not possible to ship translations with a module so they are used automatically. Could this situation be handled better in the core? I would prefer if the module installation process would always set the title of the Process page in the default language, instead of the language of the current user.
×
×
  • Create New...