Leaderboard
Popular Content
Showing content with the highest reputation on 02/12/2026 in all areas
-
Hi everyone! I've built AiWire — a module that connects ProcessWire to AI providers (Anthropic, OpenAI, Google, xAI, OpenRouter). GitHub: https://github.com/mxmsmnv/AiWire What it does $ai = $modules->get('AiWire'); // Simple call echo $ai->chat('What is ProcessWire?'); // Generate multiple fields at once $ai->generate($page, [ ['field' => 'ai_overview', 'prompt' => "Write overview..."], ['field' => 'ai_seo_meta', 'prompt' => "Generate meta..."], ], ['cache' => 'W']); // Auto-fallback if provider fails $result = $ai->askWithFallback('Translate this...', [ 'provider' => 'anthropic', 'fallbackProviders' => ['openai', 'google'], ]); Main features Multiple API keys per provider with auto-failover Connection testing from admin Interactive Test Chat with parameter controls File cache with TTL (day/week/month/year) Save AI responses to page fields Multi-turn conversations Full docs with 25 real-world examples Requirements PHP 8.1+, ProcessWire 3.0.210+, cURL, and at least one API key. If you try it out, I'd love to hear your feedback — whether the API makes sense, if the docs are clear, or if you run into any issues. Thanks! 🙏7 points
-
I have never been loyal to tools for the sake of it. If something stops earning its keep, I move on. The reason I have stayed with ProcessWire for close to ten years is simple: it continues to make sense for how I work. I still look after sites I built many years ago, and most of them just run. No rewrites, no upgrade stress, no feeling that past work is a liability. The API has stayed stable, and when it has changed, it has been deliberate and predictable. That matters when you are responsible for client sites long-term. What really locked me in early on was the front-end freedom. PW never told me how a site should look or behave. It gave me solid building blocks and allowed me to choose. I can build very different sites without switching platforms or fighting opinionated defaults, and that freedom is something I value. The forum is another reason I am still here. You, the people in this community, take the time to understand a problem before jumping to solutions. That is very rare. The discussions are thoughtful, practical, and grounded in real experience, and I have learned a lot simply by reading how others approach things. And finally, trust. I trust ProcessWire not to chase trends simply for attention, and not to trade clarity or performance for fashion. Ten years on, it still feels like a system built by people who actually build websites. For me, that combination has been hard to beat.3 points
-
I second this wholeheartedly. The community is among the very best out there, and the lack of opinion, the clear structure and the ease of extending make PW a wonderful tool. It's a sad fact that my days of working with ProcessWire are mostly over. My job responsibilities have changed over time, and the demand for wholly integrated cloud systems led my employer to migrate our intranet site with tens of thousands of pages and a lot of advanced functionality to another platform (let's not talk about the manpower needed to do that and the gaps left). There are of course advantages, but I can say that we had a tailored-to-fit solution on a level you don't find often, from ordering breakfast or lunch from local suppliers, over advanced forms connected to HR systems and Active Directory data, providing specialized integrated databases and automated workflows to our departments, to driving technical sales with dynamically generated interlinked views on bills of material, stocks and data sheets pulled directly from SAP. A piece of software more than 60% of 1300 worldwide employees used daily and that ran with 100.0% availability on a single IIS server with only a bit of memcache magic to keep things speedy. Over more than ten years, periodic updates went through with nary a hitch. My heart bleeds a bit. Not working with PW every week also means that I'm not actively using the modules I built anymore. I'll have to go over my little babies one by one, retire those that have been surpassed by better approaches by now and find new pet owners for the others.3 points
-
Another learning: while it might seem to take long to wait for results of an agent... you can spin up multiple agents and let them work on two different tasks (like two new unrelated features)2 points
-
I just published https://github.com/gebeer/conversation-search-mcp Its a very minimal and fast MCP server that can search over jsonl session transcripts. It can be pointed to a folder with those sessions and then do BM25 searches for relevant context. Claude Code sessions all get stored in ~/.claude/projects/* folders. One folder per project. I have pointed mine to a folder in there that contains all my ProcessWire projects. So it has all past conversations that I had with claude code in these projects. There's a lot of valuable data in there. Like how the assistant applied fixes, what context I gave it, what it did wrong, what corrections I had to make etc. When the MCP server is active, the assistant can use it to search for relevant context. Currently I'm working on a hook system that auto-injects relevant context from a search based on the current prompt. It's an experiment currently. But might be a good way to enhance the assistants understanding with relevant context.2 points
-
Hey @gebeer @interrobang @Peter Knight love your input but I think we are getting a little off-topic? I have created a new AI+PW thread here: Hope that makes sense!2 points
-
Generates a .phpstorm.meta.php file for ProcessWire autocompletion in PhpStorm. Features Autocomplete wire container keys for wire('...') and Wire::wire('...') Autocomplete module names for Modules::get() and Modules::install() Autocomplete field names for Fields::get() Autocomplete template names for Templates::get() Autocomplete unique page names for Pages::get() Autocomplete hookable methods for Wire::addHook*() Autocomplete page status constants/strings for Page::status(), addStatus(), removeStatus(), hasStatus() Autocomplete field flags for Field::addFlag(), removeFlag(), hasFlag() Autocomplete template cache-expire constants for Template::cacheExpire() Autocomplete Inputfield collapsed constants for Inputfield::collapsed() Autocomplete sort flags for WireArray::sort()/sortFlags()/unique() and PageArray::sort()/sortFlags()/unique() Optional: Field type autocompletion per Page class (when enabled in module config) Usage Default path: site/assets/.phpstorm.meta.php (configurable in module settings). The file regenerates automatically when fields, templates, or modules change (debounced). You can manually regenerate from the module settings screen. Optional: enable "Generate page-class field metadata" in module settings for field type hints per Page class. This is intentionally basic. For richer field stubs, use AutoTemplateStubs. Examples Modules $tracy = $modules->get('TracyDebugger'); // Autocomplete + correct class type for navigation and code insight Wire Container $page = wire('page'); $pages = $this->wire('pages'); $cache = wire('cache'); // Autocomplete for keys like page/pages/cache/etc. Fields $body = $fields->get('body'); // Autocomplete field names, fewer typos Templates $tpl = $templates->get('basic-page'); // Autocomplete template names Pages $home = $pages->get('/'); // Maps to the page class when page classes are enabled Page Status $page->status(Page::statusHidden); $page->addStatus('draft'); $page->removeStatus(Page::statusUnpublished); $page->hasStatus('locked'); Field Flags $field->addFlag(Field::flagAutojoin); $field->removeFlag(Field::flagAccess); $field->hasFlag(Field::flagGlobal); Template Cache Expire $template->cacheExpire(Template::cacheExpireParents); Inputfield Collapsed $inputfield->collapsed(Inputfield::collapsedYesAjax); Sort Flags $items->sort('title', SORT_NATURAL | SORT_FLAG_CASE); $items->sortFlags(SORT_NATURAL); $items->unique(SORT_STRING); Page-Class Field Metadata (Optional) $home = $pages->get('/'); // $home is HomePage (page class) // Field types are inferred from the template fieldgroup // e.g. $home->hero_image -> Pageimage or Pageimages depending on field settings Hooks $wire->addHookAfter('Pages::save', function($event) { // Autocomplete hookable methods while typing the hook string }); Notes Hook scanning reads ProcessWire core, modules, and admin templates to build the hook list. If page classes are enabled, page names map to their page class; otherwise they map to Page. Improvement suggestions and PRs are welcome. https://github.com/phlppschrr/ProcessWirePhpStormMeta2 points
-
Hey everyone, I've noticed that AI-related discussions are popping up more and more across the forum, but they're scattered across different threads and often go off-topic (guilty as charged). So I thought it's time we create a dedicated place to collect our experiences, tools, and workflows around using AI with ProcessWire. Why this thread? There are several existing discussions that touch on the topic: My recent post about Cursor turned into a broader AI conversation that drifted off-topic (link) There's a thread about MCP (Model Context Protocol) and ProcessWire (link) @gebeer started a thread about creating better Markdown documentation for ProcessWire - IMHO it was more of a request rather than a howto (link) All of these are related, but none of them serve as a central hub for the bigger question: How do we best leverage AI in our day-to-day ProcessWire development? What I'd love to collect here: What's your current setup? Which AI tools are you using (Cursor, GitHub Copilot, Claude, ChatGPT, something else)? How did you integrate them into your workflow? What works well? Where does AI genuinely save you time with ProcessWire? Module development, migrations, frontend templating, debugging, writing selectors, documentation...? What doesn't work (yet)? Where do the current AI tools fall short when it comes to PW specifically? Is it the lack of training data, the API structure, something else? Context & documentation: How do you feed ProcessWire knowledge to your AI? Custom rules, project documentation, Markdown exports of the PW docs, MCP servers? Tips & tricks: Any prompts, configurations, or workflows that made a real difference for you? Looking forward to your input!1 point
-
Hello, Peter. Thanks for the updates — it's clear that you're moving fast and in the right direction. Lots of screenshots, lots of details, it already looks solid. Good luck with the improvements. Take your time, but also don't delay — the potential of the thing is good.1 point
-
Yeah, yours feels more like an admin-focused tool for one-shot operations, while mine went in a slightly different direction. Same tree trunk, just one has deeper roots and the other has wilder branches 😄 Honestly, it all started because they gave me $50 in credits for Claude Opus 4.6 and I wanted to test what it could actually build. My very first prompt to it was roughly: “Create a plugin that connects AI to a ProcessWire website, something like the TeleWire you made for Telegram. Use the standard approach, add support for Anthropic, xAI, OpenAI, OpenRouter — so you can add multiple API keys and it clearly shows whether each one is working or not.” …and then, well — «And then Ostap was off» 😂 (That famous line from Ilf & Petrov’s The Twelve Chairs when Ostap Bender gets carried away and can’t stop spinning taller and taller tales.) From that one simple request it just snowballed into the full AiWire module you see now.1 point
-
Used Cursor for a few months! Now using Claude inside Cursor lol Why? To be honest sometimes it's difficult to actually grasp and put into words, but I'd just say I go with "feel" and right now Opus just feel really nice. Also in general in any AI tool what's invaluable now is using MCPs: Figma, Notion, Gitlab, Chrome. Testing using ddev-claude-code as of today to just let it run wild in docker. Question for ddev users, anyone found a projects that lets you manage multiple worktrees of the same project? But at the same time, copies anything related to the php project? For example in case of processwire, the site/files. And override the ddev name, do to; site-dev1.ddev.site, site-dev2.ddev.site. Every undocumented AI agent doesn't catch FieldtypeOptions field evaluates "truthy" you gotta check $field->id 🤣. Maybe I should definitely find a way to include something like context7 but I do fear prompt injection (aha, but let claude run wild on its own? haha). To be honest, it now always feels what "doesn't work" are always my own boundaries of time and multitask lol I am making a ProcessWire MCP inspired by the threads around and I think it could be very valuable but for now having AI executing script through the CLI in ddev is also amazing and just gets me there, of course using the one and only RockMigrations. An maybe an effort that is not about my docs, but my customer docs, is a skill that makes a documentation site for the specific processwire installs in Notion pages. What an insane amount of module development is being done now right?!1 point
-
Slight understanding on a high level. The greatest challenge is training data collection and formatting, not so much the LoRA training itself. I spent some time about 1 year ago on how to approach the data side of things and couldn't find any good sources back then. Then gave up on it. imo it's better to work with ICL (In Context Learning) and a SoTA model than having a spezialized but weaker one. That might not true anymore, though.1 point
-
What a coincidence! I’d just released a big update to my PromptAI module when I saw your post 🤯 As far as I can tell from your examples, our use cases differ slightly. Looks really good!1 point
-
1 point
-
Done. https://context7.com/phlppschrr/processwire-api-docs This is a quote from the other thread but I think it fits better here. @interrobang this looks impressive. Would you mind sharing more info about how that was built, how it can be used and how we can make sure we don't get prompt-injected something in chinese ^^1 point
-
1 point
-
Hello y'll, I so happy introduce technical template for ai generate templates on Tailwind from ProcessWire fields. How to work: Select templates you want to design interfaces for Copy the generated JSON structure Ask AI to "Create a Tailwind CSS design for displaying this ProcessWire data" Specify any preferences like: mobile-first, card layout, table layout, etc. Push button "Copy Prompt" Insert prompt to Claude AI, ChatGPT or another ai services. How to Setup: Use ftp for transfer lego.php to template folder On ProcessWire create template with same name. Create new page with select template. Enjoy. Note: It is not always possible to generate a template from the first time, but by debugging you can make even more or less excellent variants. On example screenshot finish page with adjusting elements, blocks on Tailwind. If you have questions or wishes ask me below. Thank you. UPDs: 04/14 Update prompt lego.php1 point
-
I've done a simple cart functionality with sessions. Works great. However, if you want to keep the infos longer than the browser session, you should use cookies instead. One thing to consider, however (mainly from a usability POV): Users tend to switch devices constantly. They browsed the product catalogue yesterday on their laptop, and want to continue browsing your site today on their tablet or phone. If you don't want to use registration / login, you could implement a simple bookmarking feature: Let the user create an individual bookmark (URL) for his selection, so he can continue on another device and even with another browser. This could also be used as a feature for wishlists, or product comparison tables which have become standard features in today's e-commerce world.1 point