Jump to content

Hello! Looking to choose a CMS to replace an old Drupal install.


Roadwolf
 Share

Recommended Posts

Greetings all!

I am Roadwolf, a casual blogger.  I have had my blog running for about 18 years now.  It started on simple HTML and then wordpress for a while, but much of it's life has been on Drupal.  I have now grown tired of Drupal's push to update from 7 to 10 and have had nothing but issues and wasted time in attempting to accomplish that.

I am looking to replace my Drupal install with a new self hosted CMS, which ideally will allow me to run several domains off of the same backend if possible.  But at minimum I want an easy to maintain site, with access levels / private post options.  I mostly write, but also enjoy posting the odd photo album/story.  I wonder if there is any sort of integration to turn photos uploaded into NFT's automatically with this CMS?  It is something I was pondering as a way to ensure copyright? but never really dived into yet.

Tracking visitors and hits is also important to me.  I love knowing where people are visiting my site from.  So built in analytics or the ability to use matomo or something would be ideal.  I like to avoid using cloud or non-self hosted services.

I do tend to enjoy doing things the 'hard way' or old school way when it comes to scripting and customizing things.  But I also enjoy and appreciate a helpful and friendly community, to help me learn and guide me when I am tackling a new project such as a new CMS.  And I hope to find that here?

I look forward to a reply, and thank you for your time.

Nice to meet you all :)

  • Like 4
Link to comment
Share on other sites

Hello @Roadwolf welcome here !

I will let other members giving you a better written introduction and greeting and I will most try to give some answers and thread links to confirm you ended on the right place. Your 18 years old website/blog deserve a good software to run on.

Recently, a member posted about his website thats was not working (spoiler: we are talking about the backend side) where it turns out to be more of a "problem" with the hosting provider configuration. Just speaking about it, first because ProcessWire get updated every friday (this can be tracked on github and in the announcement section here in the forum), it let you being confident on how robust and secure the software is, secondly, we almost never seen an upgrade being problematic, even going from major version 2 to 3, assuming you have a small technical habits to follow basics steps.

About multisite, I think yes, but I have never personally tried, so others will answer to it. 

1 hour ago, Roadwolf said:

I do tend to enjoy doing things the 'hard way' or old school way when it comes to scripting and customizing things.

Then you will love it 💯

1 hour ago, Roadwolf said:

But I also enjoy and appreciate a helpful and friendly community, to help me learn and guide me when I am tackling a new project such as a new CMS.  And I hope to find that here?

Even GPT tends to throw a lot of confettis on this community, if you ask her, you will love it 💯x 2 😁

1 hour ago, Roadwolf said:

I wonder if there is any sort of integration to turn photos uploaded into NFT's automatically with this CMS?

Interesting. The answer is no, at least there is no built-in solution, and from what I know, there is no module available for that. But it can be achieved really easily, thanks to ProcessWire freedom. The day you start to put your hands on it, do not hesitate to ping me, I have personally some experiences with NFTs, smart-contract and all this mess so I could give some help in this regard.

Yo will find a lot of resources here on the forum,  well explained, and do not be afraid if you see some tens years old junks of code, they will almost all still work 😄 , give a read to the nice blog posts, register to weekly.pw to receive the best of it each weekend for nice read while taking coffee.

Enjoy your PW journey 🙂

 

  • Like 7
Link to comment
Share on other sites

4 hours ago, flydev said:

About multisite, I think yes, but I have never personally tried, so others will answer to it. 

I have tried multi site and there are pros and cons, chiefly:

Pros - only one core codebase to maintain ( & smaller footprint, but at less than 30mb, that's not such an issue)

Con - All your sites need to run on the same PW (and PHP) version. Sometimes, you may be ready to upgrade one site, but not another.

On balance, I now tend to go for a different PW install for each site.

  • Like 4
Link to comment
Share on other sites

Would also go with one PW install and one DB per website. PW is easy to update by just replacing the core files located in /wire (and .htaccess, index.php in the root), while keeping untouched all the stuff in your /site folder. DB migration is easy too compared to older WordPress sites, as no hard coded page links with fixed domains are stored in the DB. Really like how easy you can deploy a site developed locally to a live server.

  • Like 2
Link to comment
Share on other sites

Hey @Roadwolf welcome to ProcessWire and thx for the nice introduction

You can read this ancient interview which tells a lot about the philosophy of ProcessWire: https://codingpad.maryspad.com/2013/07/19/interview-with-ryan-cramer-processwire-cms-founder-and-lead-developer/

Quote

In terms of skills necessary, one doesn’t need any more skills than they would need with WordPress. It has that same entry level. But unlike WordPress, ProcessWire is a tool that grows with you. The more you know, the more it can scale, and the more you’ll find the system supporting you in what you want to do. It’s a tool you won’t outgrow.

While I think that this statement is not 100% correct for someone that has no coding skills at all and really does not want to learn at least the very basics the last part of the quote could not be more true 🙂 I'm using it since 2013 and I'm still learning a lot and it has helped me a lot to grow 🙂 So if you prefer to get things done yourself over just installing plugins you don't know and understand, then PW is a great system to choose and the community is a great place to get help once you are stuck.

20 hours ago, Roadwolf said:

I wonder if there is any sort of integration to turn photos uploaded into NFT's automatically with this CMS?  It is something I was pondering as a way to ensure copyright? but never really dived into yet.

I don't know of any module that does that already, but creating a module on your own is easier than in any other system that I know.

All you need is this:

<?php

namespace ProcessWire;

class Nft extends WireData implements Module
{

  public static function getModuleInfo()
  {
    return [
      'title' => 'Nft',
      'version' => '0.0.1',
      'summary' => 'Create NFTs from all images on page save',
      'autoload' => true,
      'singular' => true,
      'icon' => 'code',
      'requires' => [],
      'installs' => [],
    ];
  }
}

That's a fully working module that you can upload to your site and install! It does not do anything yet, so we add a hook to the init() method and then add some custom methods that we need for our use case:

<?php

namespace ProcessWire;

class Nft extends WireData implements Module
{

  public static function getModuleInfo()
  {
    return [
      'title' => 'Nft',
      'version' => '0.0.1',
      'summary' => 'Create NFTs from all images on page save',
      'autoload' => true,
      'singular' => true,
      'icon' => 'code',
      'requires' => [],
      'installs' => [],
    ];
  }

  public function init()
  {
    // hook into Pages::saved and execute the callback after a page is saved
    $this->wire->addHookAfter("Pages::saved", $this, "createNFTs");
  }

  public function createNFTs(HookEvent $event): void
  {
    // get the page that has been saved
    $page = $event->arguments(0);

    // early exit if page template does not match
    if ($page->template != "my-nft-upload-template") return;

    // get images uploaded to that page
    // we assume they have been uploaded to the "images" field
    // we force the images field to return images as array
    // see https://shorturl.at/lorTY
    $images = $page->get("images[]");
    foreach ($images as $image) {
      // $image is a PageImage object
      $this->createNFT($image);
    }
  }

  public function createNFT(Pageimage $image): void
  {
    // your code to create an NFT from an uploaded image
  }
}

Just save that file as /site/modules/Nft/Nft.module.php and click "install" in the backend, that's it. Now every time you save a page with your nft template ProcessWire will do what you want for you 🙂 

20 hours ago, Roadwolf said:

Tracking visitors and hits is also important to me.  I love knowing where people are visiting my site from.  So built in analytics or the ability to use matomo or something would be ideal.  I like to avoid using cloud or non-self hosted services.

There is a module called MatomoWire https://processwire.com/modules/matomo-wire/ but I have not used it myself. But to use matomo you just need to copy the tracking snippet to your site. GDPR makes things a little more complicated though, so I guess you'd have to add some sort of opt-out as well. My module RockFrontend will have some helpers for that soon.

20 hours ago, Roadwolf said:

which ideally will allow me to run several domains off of the same backend if possible.

As others have mentioned it's possible. But I'd also not recommend it, especially not for beginners. The problem is that many 3rd party plugins will not take that scenario into account and the risk is high that something doesn't work as expected. If you need to share code across your projects just create a module for that feature and install that module on all instances. That way you don't duplicate the workload and you can still manage the important stuff in one single location, but you have the freedom to make small changes for every instance easily.

But it depends... If all your sites should be an exact 1:1 copy then some kind of multisite setup could still make sense. But I'd start a single site project first to get a quick first impression of ProcessWire 😉 

Have fun.

  • Like 7
Link to comment
Share on other sites

Thank you all!

I have been able to write a script to begin the transfer of my site from drupal to processwire.  So far so good.  I have to mess around with the mapping and categories and such but that seems pretty simple.  Just a matter of tweaking things around.   I am a little confused why posts I am adding seem to be finding their way into the correct categories with the correct settings, but aren't showing up in the live main page of the blog unless you specifically seek out an article.   Does the main page need articles specifically added to the feed?

I haven't messed with NFT's at all honestly, but from what I understood it might be a good way to preserve copyrights on images - tho displaying the images i imagine would be tricky...  not really something i am diving into yet, but I do think the concept is worthy of investigation.  Or maybe it is all a little silly.  I am not sure.   But I will look into that script bernhard!   Looks like it is super easy to create content for ProcessWire which I do like.

My next task once data is transferred will be to begin to change the look of the site a little bit...

But so far this is the most welcoming and helpful community I have found since reaching out.   I like what I see :)



 

  • Like 3
Link to comment
Share on other sites

47 minutes ago, Roadwolf said:

 I am a little confused why posts I am adding seem to be finding their way into the correct categories with the correct settings, but aren't showing up in the live main page of the blog unless you specifically seek out an article.   Does the main page need articles specifically added to the feed?

Could you give us a bit more of details of how your structure / pages tree look like ? Also, which "output strategy" did you choose ?

Basically, the main page - which by default is called `home` with a template also called `home` - doesn't require something special. You have full control of what and how things are displayed.

If for example, your tree look like the following: 

Page Title [template name]
--------------------------
|- Home [home]
|--- Blog Parent [blog]
|------ Post1 [blogpost]
|------ Post2 [blogpost]

To show blog posts in the frontend page Home [home] (home.php) you want to write something like:

<?php namespace ProcessWire;

$blogposts = $pages->find("template=blogpost, limit=10"); // this is a selector, $blogposts will contain the two page objetcs Post1 and Post2 

// loop through all blogposts contained in variable $blogposts
foreach($blogposts as $post) {
  echo "<h2>$post->title</h2";            // echo title field
  $excerpt = substr($post->body, 0, 150); // simple excerpt to illustrate, 150 chars from body field
  echo "<p>$excerpt</p>"; 
}

Hope you get the idea.

  • Like 1
Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...