• Content count

  • Joined

  • Last visited

  • Days Won


Tom. last won the day on August 17 2016

Tom. had the most liked content!

Community Reputation

291 Excellent

About Tom.

  • Rank
    Sr. Member
  • Birthday 11/01/1992

Profile Information

  • Gender
  • Location
  • Interests

Recent Profile Visitors

1,920 profile views
  1. Hello Bramwolf, As Processwire is a CMF it can do all of these. However it will require quite a lot of custom coding. If you aren't looking to do that, then you will have to use multiple platforms. Getting them to all work together, could prove a nightmare and blow your house down. For the CMS part, you could use ProcessWire and for the membership part you could also use ProcessWire and Stripe/PayPal quite easily. Personally I would suggest Stripe. Advertising platform you can use something like and plug that into ProcessWire, and for Marketing Automation you can now use something like The thing that I'll have no idea about is segmenting you users based on personal interest, pages they have visited etc. To me that will be your biggest bulk of work as to track all of this is big data and will require crazy optimisation or a huge database.
  2. Also worth noting @cosmicsafari that you can limit page view permission without the need of a module Edit the template you want permissions for, go to Access and untick View for your user role.
  3. 404 on /processwire doesn't say to me that this is a permission error. Also I don't believe you can remove the administration role from the initial admin account without taking from the database. Have you changed the url to the login page? Can you echo out <?=$page->editUrl?> this will give you the url with the admin panel.
  4. I feel like 580px for the sidebar is far too big, and that's the minimum. I feel like 380px would be far more comfortable. The view without the sidebars doesn't have the page breadcrumbs anymore.
  5. Haha, I actually knew this! Sorry, complete Sheldon Cooper moment there!
  6. Surely it would look better with no styling? I'm sure when it comes to creating the actual theme, we will not aim to make it look worse. Great work Ryan, this is shaping up really well! Can't wait to get stuck in!
  7. Hello, I can see it's using <canvas>, it's very likely that all the urls are set in Javascript. I can't find any documentation on how to change the URL, am I getting your question right? If you like to any documentation I'm sure I can help you further.
  8. I personally haven't had any issues, just make sure you do the standard checks that are built into ProcessWire's API also make sure you do permission checks such as updating a user: $u = $users->get($id); if($user == $u) { // Do stuff here } else { // You don't have permission to edit this user } If for example you have profile pages which are a page, you will have a Page Reference field that will store the user then you can do: $p = $pages->find("template=profile, user=$user"); $p->of(false); if($location) { $p->location = $sanitizer->text($location); } $p->save(); And the update will be url will be: In the ajax.php file you don't want to pass $user as this is built in however you do want to pass location: if($input->urlSegment1 == "users") { if($input->urlSegment2 == "get") { wireIncludeFile("ajax/users/get", ["id" => $input->get->id]); } if($input->urlSegement2 == "update") { wireIncludeFile("ajax/users/update", ["location" => $input->get->location]); } } EDIT: Sorry, I didn't consider if you was using AJAX externally (websites on a different server), you will probably want some external authentication checks you can create fields for Users I would create a field called auth, salt the username and password then you can do a check on username and password salt and if it matches select that user as active $ajaxUser = $users->find("auth=$salt);
  9. Hello, I suppose there loads of ways of doing this, and it mostly comes down to person preference. I usually create a template called Ajax then give the template the ability to use segments, I use segment 1 for the group and segment 2 for the action, the rest I use GET. Then each action can live in an Ajax folder. The ajax.php will look like: if($input->urlSegment1 == "users") { if($input->urlSegment2 == "get") { wireIncludeFile("ajax/users/get", ["id" => $input->get->id]); } if($input->urlSegement2 == "update") { wireIncludeFile("ajax/users/update", ["id" => $input->get->id, "email" => $input->get->email]); } } Then in ajax/users/get.php for example I do: return $users->get($id); Ajax request will be to the url for example Not sure if I'm answering your question here.
  10. This is amazing and so easy to skin, I noticed a few CSS errors, I will put them on GitHub Great work Ryan!
  11. I always wondered the best way of setting up fields in terms of Performance, do you have one field for example called "slider" which you can use across multiple templates, or is it better for performance to break down the field into templates: "home_slider" "journal_slider" For example, will it take longer to query the single entry for home slider among the potentially hundreds of entries for journal slider, if you use one field "slider".
  12. @Robin S I understand your concern, however this is default but will not remain default. What I get from this blog post is Ryan wants to work with the designers on this forum to customise UIKit using it's built in classes to create a front-end which will be ProcessWire's new default. I personally love the new simplistic approach and it's pretty much an empty canvas for us to inject some personality. For our website - we use our own customised version of the backend.
  13. Any news on this?
  14. @BitPoet sadly this has broken the website. All date format fields when using the time field also get the following error - All the data has reset to 1970. It also breaks the ability to do $pages->find("timeon<=". time() ."); Error saving field "timeon" - SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'data' at row 1
  15. HI fbg13, I have already namespaced it, thank you for your reply. I was making BitPoet aware. I opted to namespace the entire php file.