Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. Super happy with the energy revival of Processwire and the speed at which everything is moving. I feel like moving from a hobbyist to a PRO! This week did my first Claude Design, which I then passed onto Claude Code, with an amazingly simple and smooth workflow. For people into Claude who haven't tried this workflow, please check it out.
  3. You won't believe how these changes make my day(s) now! Moving away from ProcessWire to NextJS/AstroJS/HonoJs/WhateverJS just to be able to prove a concept and go live within a super short time using AI/LLMs/Agents was hard but I got things done. I was able to test things, to experiment, to explore, to fail, to succeed. Well... now ProcessWire is back. Back in my preferred stack of tools. Back on #1. I've already moved 2 big projects back from HonoJS and NextJS to ProcessWire. The RSS Monitoring Tool and another one. Cloudflare Workers and Vercel were great hosts with pretty awesome free tiers, yet... at some point I scratched limits big time. Now everything is hosted on H*stinger for a few dollars a month with full CI/CD pipeline, no limits on reads/writes to the database, just a 5GB size limit per database and some other weird limits those projects will never reach. It's unbelievable how fast things turned around and back to a language (PHP) I actually can read and understand and a framework I kind of know how to work with.
  4. Today
  5. @wbmnfktr Thanks! This is great to hear, this kind of feedback makes my day. 🙂
  6. Yesterday
  7. Can you define this a bit more detailed? I mean we have a lot of new AEO, GEO, LLMO, AIO, VEO, NEO, AISO acronyms out there. The name would suggest that NEO (Neural Engine Optimization) would be the focus... is this the case?
  8. This will retire my whole set of ProcessWire skills... and I love it! I really enjoy the pace and direction you, @ryan, and ProcessWire are going now. Let alone AgentTools in a fresh installation of ProcessWire does some magic with LLMs (from super cheap Mistral, Deepseek, to great models like Kimi 2.6, MiniMax 2.6, and to Opus 4.6/7 and Codex 5.4/5) which was NOT possible in that way 6 weeks ago. 🥰
  9. This week I've been doing a major overhaul of the /wire/core/ directory structure aimed at improving and adding documentation. Now all core classes that will receive their own API.md documentation also have their own directory. The /wire/core/ directory kind of resembles the /wire/modules/ structure now. In addition, new API.md files have been created for the Pages, Page, PageArray, Modules and Module, all of which also improve the online API reference documentation too, which is what those links are linking to. We'll continue adding more API.md documents every week. Every time a new API.md file is completed, it gets sent over to the WireTests module to verify that everything documented in the API.md works exactly as stated. So new tests have been committed to that module as well, and more will be getting added every week. In addition, ProcessWire now has a CLI (command line interface) installer. Installing ProcessWire is as simple as typing this from the command line: php install.php When you do that, it'll present you with the installation options (see below). For human users, the "Standard usage" option is likely to be best, while AI agents will likely prefer the "Alternate usage" option: Standard usage: php install.php --generate Generate ./install-config.php for you to edit php install.php --config install-config.php Install from settings in ./install-config.php Alternate usage: echo '{"dbName":"mydb",...}' | php install.php Install from settings in JSON string php install.php --json '{"dbName":"mydb",...}' Install using an inline JSON string Other: php install.php --help Display all options That last option "--help" displays a giant screen of options, so I won't repeat it here, but take a look if you are interested. New versions of FieldtypeTable, FieldtypeCustom, FieldtypeCombo and FieldtypeRepeaterMatrix next week. Lots more in progress here too so stay tuned! Thanks for reading and have a great weekend!
  10. Hi. I have set up a 301 redirect in the host webspace to redirect to a pw site on to my other host server. I simply have these 2 lines in .htaccess and nothing else. (There is no pw on this webspace) RewriteEngine On RewriteRule (.*) https://my-otherdomain.com/mysub [R=301,L] On this other server I have pw installed in a folder www/mysub This works in so far the home page is shown as expected but internal links give internal server error. I suspect because url slugs are referencing the wrong server. Do I need to add rules for this and any idea what rules to add ? Thanks for any help-
  11. Mm picture tags could work but then that means creating portrait-oriented edits for every corresponding desktop slide image - and that's not always possible depending on what design will be shown, especially when I begin uploading the rest of my projects. If I'm querying mob vs desktop based on tagged images won't that impact caching regardless? Maybe I misunderstood. In the end I may end up doing extra edits but it's a bit of a pain. Maybe excluding the slideshow from Procache might be another idea...if possible
  12. Hi Is anyone aware of a demo site for testing stuff? Ideally, containing hundreds of pages, pagination, multi-lingual setup, etc? I can set something up with PromptWire in an hour or two, but I was wondering if something like the Skyscrapers site exists? Cheers P
  13. Thanks @psy I must admit, I haven't really used urlSegments myself, but I'll certainly add it to the list. Hoping to spin up a test site soon, exclusively for testing this type of thing. I just have to decide what I want to scrape for content. Breweries of the world or skyscrapers etc. Just like the PW demo site.
  14. You need an M5 Mac with 128GB RAM, I think (see: https://www.youtube.com/watch?v=SmuX-Al7DUs&t=173s) I have a M4 Pro Mac Mini with 24GB RAM. I cannot run anything more demanding than Qwen3-VL-8B, as the model must be kept in memory (you don’t want to wait for a model to load, I load it before starting to work on something and unload it at shutdown). I do not use Qwen3-VL-8B for coding, instead I use GLM, Gemini subsriptions (and recently, for that given project only, the client pays for Claude subscription so that I can use it). I also like the image descriptions Qwen3-VL-8B generates. IMHO, strangely, it is better than any other LLM I’ve ever tried in this use case. My only issue with Qwen3-VL-8B was that in chat mode it spits out emojis by default all the time, which I hate, but the “NEVER use emojis!” system prompt in LM Studio solved that.
  15. They’re exactly the images that will break your heart 😬 So what you need is to tag your images in ProcessWire as wide or mobile (or whatever suits you), then use a <picture> element to let the browser pick the right one based on screen size or orientation. No server-side logic needed, so ProCache stays happy.
  16. Last week
  17. Thanks @Peter Knight 🙂 I learned a lot with this project. I definitely need to learn GIT for the next proj I do though, regressions keep popping up all over the place 😅. Some bits and pieces left to fix before I upload more projs. Well, I would like a separate selection of images for the slider for mobile users and at fullscreen. I had some QR codes printed on business cards so it would be nice to make the mobile image viewing experience nicer to people I meet out and about. I could probably do something with picture tags but it's not about cropping the same image at different ratios as much as having a separate group of images entirely for mobile, which I can update using tags. Just don't know how caching would work for the same page id. For desktop I like the 16:9 format because it works well for Behance, portfolio presentation books and web (desktop). Mobile not so much. This is what I want to avoid.
  18. Very impressive work and nice PW integration too. Im guessing the images have text embedded in them and that’s why you want mobile portrait versions? TBH I normally find centering + object-fit: cover handles a lot of situations gracefully. I saw some nice work recently by @Stefanowitsch where he had specific mobile crops for hero images. He might be a good person to ask.
  19. Ditto. One thing missing in SEOMaestro is support for urlSegments. Fix is via a hook. Be great if SEO NEO supported urlSegments natively. Looking forward to seeing the new module 🙂
  20. I'm back from the future lol. I studied some php in the mean time and I understand what use and & do now haha. https://www.johnfarrell.fr Eventually got round to implementing things. There are still a few things to fix overall. Your suggestions work well, I used slideshow image tags and it pulls in images into my home page slider from a WireArray based on that. Only thing is, it would be nice if I could change the images for mobile portrait layouts, based on the user-agent. Some of my designs don't really suit portrait viewing. I thought about using MobileDetect, and make the slider pull images with another tag, say slidermobile. It looks like that doesn't play nicely with ProCache though... I don't want to change the url for mobile either...as I've printed qr codes for the site already 😅 Any suggestions? A PHP solution would be nice but maybe JS is needed. I may make a seperate post in case others find this useful. The last topics on this are old:
  21. Good to know. Thanks Stefan
  22. @Peter Knight sounds great. I am still using SeoMaestro on every Project but I am interested in every module that covers this topic.
  23. I actually came across the need for this as well. @ryan - could we perhaps have: $page->isUrlHook In my case I have url segments enabled on the homepage and some logic to process them, but that logic can't tell if it's a urlsegment or a path created by a URL hook. I ended up with this for now: $urlHookSegments = []; $pathHooks = $wire->hooks->pathHooks ?? (new \ReflectionProperty($wire->hooks, 'pathHooks'))->getValue($wire->hooks); foreach ((array) $pathHooks as $hook) { $match = $hook['match'] ?? ''; if (preg_match('#^/([^/{(]+)#', $match, $m)) { $urlHookSegments[$m[1]] = true; } } if ($input->urlSegment1 && !isset($urlHookSegments[$input->urlSegment1])) {
  24. PromptWire is now at v1.9 and includes a few new features and fixes. The list below is AI-generated... Diagnostics can run against production The eight read tools (pw_health, the four pw_db_* ones, pw_logs, pw_last_error, pw_clear_cache) now accept site: local | remote | both. Previously site: remote was silently ignored and queried the local database instead. Bulk page push to remote or both pw_pages_push accepts targets: local | remote | both. Pages go in parent-first order so newly-created parents exist before their children try to attach. Pull pages back from production pw_page_pull source: remote fetches a page that was edited directly in the production admin and writes it into your local sync tree, so you can re-edit and push back without touching the live admin. Phantom diffs eliminated from pw_site_compare Page content is now hashed deterministically across environments. Identical content produces identical hashes regardless of timezone, page-array storage order, or whether a date field has an output format set. pw_modules_list Lists installed modules with version, file path, and install state. Pass site: both to compare local vs production install state in one call. pw_users_list Lists users with id, name, email, roles, and any member_* fields. Pass includeAll: true for every non-system field on the user template. pw_resolve Bulk name-to-id lookup for fields, templates, pages, roles, permissions, users, or modules. Translates names into the equivalent IDs on the target site without one round trip per name. pw_inspect_template Like pw_get_template but each field comes back as {name, type, label}. Designed for spotting fieldgroup differences before pushing changes. File inventories include .module files and symlinked module directories Previously the file sync silently skipped any modules developed in symlinked sibling repos. pw_modules_list bugfix (v1.9.1) The default call with no classes filter was returning null class names. Caught during release validation and patched the same day.
  25. Hi everyone I've started a new module called SEO NEO It's a new SEO module built for today's SEO, on today's ProcessWire. I hadn’t planned another module, but I keep returning to the same niggling thought: SEO is too important to our clients' sites (and businesses) to depend on modules that are not being actively developed keeping pace with how SEO works today. So that's pretty much it. SEO NEO will be free. An Ultra/Pro version will follow and include genuinely useful additions for industry professionals. I'll have more soon, but if you have any SEO requests, my DMs are open. Cheers Peter
  26. There is nothing good about imperial 😜
  27. Thanks Adrian! Since you're in Canada — if you ever deal with cross-border shipments to the US or Europe, the unit conversion comes in handy. Canadians get the best of both worlds — metric by default but imperial just across the border. 😄
  28. Awesome - thank you!
  29. Hi @adrian, great question — happy to clarify. Both modules store L×W×H, but the focus is different: FieldtypeObjectDimensions (juergen) — geometry-oriented: auto-calculates and stores area and volume, useful when you need spatial calculations. FieldtypeDimensions (mine) — shipping/e-commerce-oriented. The reason it exists: I've been building a package forwarding platform (think Qwintry-style — customers ship packages to a US warehouse, we consolidate and forward internationally). That platform, AltaPost, never launched at scale, but the logistics logic stuck with me. When I needed a dimensions field for product catalogs in ProcessWire, the obvious missing piece was weight — you can't quote a shipping rate without it. A lot of our shipments went to Europe, so we constantly needed to show the same package in both metric and imperial at once — 120 × 80 × 50 mm / 4.7 × 3.1 × 1.9 in, 1.5 kg / 3.3 lb. That's why the conversion API exists: no manual math in templates. Main differences: Weight field — fourth subfield alongside L×W×H, optional per-field Unit conversion API — $dim->lengthIn('in'), $dim->weightIn('lb') for passing values directly to shipping APIs (GoShippo, EasyPost, FedEx rates) or displaying both metric and imperial simultaneously Normalized storage — always saves in mm/grams internally; changing display unit never requires data migration 28 admin languages — useful when ProcessWire itself is configured with multiple languages and you want field labels to appear natively for each editor If you need area/volume stored and searchable — @Juergen module is the better fit. If you need weight + unit conversion for shipping integrations — this one covers that case.
  1. Load more activity
×
×
  • Create New...