Jump to content

Adam Kiss

  • Posts

  • Joined

  • Days Won


Everything posted by Adam Kiss

  1. Not a problem — I create (and/or manage) around 20-25 sites a year. These are tiny, 1-5 page promo sites, all with bespoke, one-off design, and are either fully static, or connecting to a single "registration" system (which is atm running aforementioned PW). 90% of these are for an event, or an event series, so they start, last a while, and end anywhere between two months and half a year. I'm the only person editing them, and most of the edits happen straight in code. ATM, they are 99% built on Eleventy - https://11ty.io, and the fully static ones are built and deployed via Netlify, and the ones which are connecting to the registration system (via tiny bits of PHP) are deployed from the Github CI/CD to our own servers. I also (actually started this year) created/manage few long-term sites, which I've build on Kirby — It's basically a spiritual brother to ProcessWire, but fully file based, so it fits my development process better - I can sync the website up and down fully with git, without any need for managing the database. As for the system itself, I'll write up a blog post about it (probably) when I finish it, so I can post it here / send it to you later, but the short of it is I'm moving it to Laravel due to builtin support of PostgreSQL, queues and testing, and the rewrite will allow me to introduce a couple of design changes to overall system, which would actually be possible with PW as well (probably…), but if I'm going for a rewrite, I might as well go full rewrite.
  2. @pwired — there was a time when I'd agree with you, but there are quite a bit of options for I ❤️ PW devs out there - for flat file CMS at least. So in the end I'd say that ProcessWire and its community are better served by focusing at its one thing.
  3. Yo Ryan and everyone, I don't use ProcessWire anymore for new stuff — the size and scope of the projects makes using a database nonsense — but there is one half internal system that happily chugs along, for 7 years now (I think? Maybe 8 years?) Latest page ID created was 38047 ? So, thank you for everything — mostly for keeping my job while "new system" isn't happening ?
  4. Hey everyone searching for this topic — if you're using Let's Encrypt with URL validation, don't forget to replace the part blocking dotfiles location ~ /\. { deny all; } With block denying everything BUT .well-known location ~ /\.(?!well-known).* { deny all; }
  5. Bootstrapping means 'require'-ing ProcessWire website from elsewhere, like this: <?php require_once '/absolute/path/to/your/PW/site/index.php'; foreach( \ProcessWire\wire('pages')->get('/')->children() as $ch ) { echo "{$ch->title}\n"; } I've just tried this so I won't lie to you: I literally just created this in in my home directory, ran it in terminal with PHP and got a list of page titles in the console. So by writing your own importer, people mean something like this: <?php require_once '/path/to/processwire/index.php'; $wire = \ProcessWire::wire(); // get stuff you want to import $articlesToImport = \OldCMS\DB::query($oldSiteDB, 'select * from articles join whatever'); // iterate over it and create pages for it foreach($articlesToImport->next() as $oldArticle){ $newArticle = new \ProcessWire\Page(); $newArticle->template = 'article'; $newArticle->parent = $wire->get('/articles/'); $newArticle->title = $oldArticle->get('title'); $newArticle->body = $oldArticle->get('html'); $newArticle->save(); } And that's it. You've just imported some articles from your old CMS to your brand new ProcessWire installation. Of course, on "real" pages you'll want to think about this for a bit; Maybe create pages for authors first, some categories, some tags, and then maybe add the pages in parts, so you don't timeout mid-import, or turn off timeout.
  6. You know, I've encountered Suhosin three times on various shared hostings so far — and it was always interfering with running websites we put there. "Suhosin, premiere tool for misconfiguration of PHP."
  7. Adrian, sorry, I don't even remember what project this was I've tried to go through some of my past projects, which could have been it, but I haven't found anything. New thread with wha you need might be better way to be lazy
  8. Adam Kiss

    New Logo

    Details please! So, what motor does have it? Model? Color?
  9. No 'real benchmarks' as in repeated tests on X different scenarios. Original usecase (and one measured) is a template listing shop items — ~40 products — where only difference in the rendered HTML is an input value - which is either default '0' or anything else picked up from $post or session. It's a rather slow server, but load time for that page dropped from ~2.5s to ~450ms, which is the same as template caching (roughly), but usable on every page load, not only the first one. I use MarkupCache (which in turn uses the same caching mechanism as the template-level caching), so there is maybe three or four function calls 'overhead' versus the template-level caching — which is nothing (I might be wrong, haven't been digging in that code lately). --- There is a number of improvements I would like to make, but was working on a different projects lately.
  10. Or, you could use my page render cache. https://github.com/adamkiss/PageRenderCache/blob/master/README.md
  11. I don't think there is anything simple to diff database vs the dump; (additionaly, if you do the diff dump only, you'd then have to diff database versus set of dumps… yeah.)
  12. Number 15. Above the symfony author. http://www.cloudways.com/blog/php-influencers-to-follow/
  13. vagrant (+ virtualbox) + git is pretty encapsulated vagrant streamlines the process of generating virtual machines to develop on, by providing 'prepackaged' virtual images + options to include other provisioning software (like puppet, chef, etc.). Some use Vagrant VMs as 'apps', meaning that each project has its own virtual machine, some other people have one VM for multiple sites (a la *AMP software). In your case, you could have your site versioned in git, together with your mysql dump and Vagrantfile (vagrant 'recipe' for your vm), and when you come to new machine, you'd do something like 'git clone project && cd project && vagrant up', go have a coffee, come back and start working. (of course, it's never quite that simple IRL , but in gist vagrant is quite nice. I am in the process of setting up local vagrant from clean ubuntu + serverpilot.io over vpn. fun times)
  14. Yeah, I use ngrok as well. Although, I use it mostly for the frontend sharing, I never tried to login over ngrok (I can't see why it wouldn't work though…)
  15. …omg… that's… damn, that's almost five years.
  16. I'm working on a few big updates atm on multiple PW sites. For me, every day is a ProcessWire day.
  17. Of course, I thought you've been looking for the most performant option, and I just said I don't know Looking at your posts now, I don't see it, so I got confused, probably.
  18. Looks super awesome, but to be honest, I have no idea whether some other method of logging would be better (or would have better performance). But it looks nice
  19. I think it goes all the way back to 2012, to the change of design leader at the EllisLab. Their website went from this: To that patterned hideousness they have now.
  20. I see it with Safari as well. testing 'display:block;' on the h1 > a seems to 'fix it'.
  21. This is like Benjamin is forever destined to answer questions about next() and prev()
  22. This happens when "your selector isn't properly escaped", in this case, it seems that $thisurl might be empty. $redirect = $pages->get("template=post, oldurl=$thisurl"); // if $thisurl is empty, the selector is "template=post, oldurl=", which is wrong // solution: add check for $thisurl if ($thisurl){ $redirect = $pages->get("template=post, oldurl=$thisurl"); if(!$redirect instanceof NullPage){ $session->redirect($redirect->url); } }
  23. Additional fields on root page seem to be the most favourite option. What those fields are in terms of Inputfield types, that's going to be your decision, based on your client (and his technical capabilities). Also, relatively clean solution would be a repeater with two fields: 'type' (FieldtypeOptions) and 'value' (FieldtypeTextarea). Quite simple to parse, just one field in admin, you can sort it/order it, etc.
  • Create New...