Recently Updated Topics
Showing topics posted in for the last 7 days.
- Past hour
-
PrompWire MCP (new name) is now public on Guthub. Use at own risk https://github.com/PeterKnightDigital/PromptWire-MCP PromptWire MCP for ProcessWire (blog introduction) Documentation can be found here. https://www.peterknight.digital/docs/promptwire/v1/ Enjoy 😊
-
@Juergen OK I'll try with the custom validation rules. Need to check how it works more deeply. Actually I have a specific case, but I often use this for several scenarios. A very simple example would be a form where user must enter the username he is using in a game (I developed a site to manage competitions in sim-racing games), and we need to verify that it's not already used by another user. If already used, invalidate the form and display an error on the username field.
-
This is briliant, @maximus. I was just considering such a thing, so looking forward to contributing if it becomes a repo.
- Today
-
If you enable WebP, it creates variants for all images. However, Ryan's .htaccess code is from here: https://processwire.com/blog/posts/webp-images-and-more/#webp-image-strategies-in-processwire Doesn't rewrite GIFs, I presume this is because they can be animated. RewriteRule ^(.*?)(site/assets/files/)([0-9]+)/(.*)\.(jpe?g|png)(.*)$ /$1$2$3/$4.webp [L] Given this, it seems inefficient to create a webp variants for GIFs. Does the core have an inbuilt way to disable this, or is it by design that this isn't offered/done automatically?
-
PlausibleAnalytics — Full-featured Plausible Analytics dashboard
maximus replied to maximus's topic in Modules/Plugins
Quick update — pushed v1.3.0 today. Added dark mode support (all colors follow AdminThemeUikit CSS variables automatically) and interactive filtering: click any row in Pages, Sources, Geography, Devices, or Browsers to filter all widgets at once. Active filters show as removable tags at the top of the dashboard and are stored in the URL. Thanks @bernhard GitHub: https://github.com/mxmsmnv/PlausibleAnalytics -
Ran into this issue here in another project using the latest version from the module directory. The file AgentToolsSitemap.php in the module directory is actually named AgentToolsSiteMap.php (capital M) and also renamed the class. I renamed the file and it seems to work for now. Also ran (not me, the agent) into some other issue.
-
It'd be brilliant if there was a way to copy a image path list to the clipboard from this module to use with your Add Image URLs module. I frequently copy images from site to site.
- Yesterday
-
Hi everyone, I needed a solid subscription module for a client project — something that handles multiple lists, double opt-in, and plugs cleanly into order and contact forms via a PHP API. Nothing in the directory quite fit, so I built Subscribe. It's been running in production on a few sites since March, so the edge cases are ironed out. GitHub: https://github.com/mxmsmnv/Subscribe What it does: Multiple subscription lists with many-to-many subscriber relationships Double opt-in with configurable HTML email ({confirm_url}, {unsub_url} placeholders) Honeypot spam protection — no CAPTCHA needed IP-based rate limiting (configurable threshold and time window) One-click unsubscribe with unique token per subscription WireMail provider selector — works with default, SMTP, Brevo, or any WireMail module Admin UI (Setup → Subscribers): Sidebar list switcher with subscriber counts Add/toggle/remove subscribers, create/rename/delete lists Search, status filter, pagination CSV import, JSON/CSV export per list Resend confirmation for pending subscribers PHP API — drop it into any template, order form, or contact form: $sub = $modules->get('Subscribe'); $sub->subscribe('user@example.com', $listId); Hookable event for integrations (Telegram notifications, CRM sync, etc.): $wire->addHookAfter('Subscribe::subscribed', function(HookEvent $event) { // $email, $listId, $subscriptionId }); Ships with an Alpine.js form block ready to drop into any template. Requirements: ProcessWire 3.x, PHP 8.0+ MIT License.
-
- 9
-
-
-
Thanks! Yeah I had deleted my first account after I got 100k followers... don't ask why. Then on my second account @somartist2 I tried to leave 2-3 times but then reactivated the account. And finally I did it. I'm on bluesky now, and still on Instagram and other platforms. No I didn't realize, but yeah I was very active for many years answering and helping many. It's great to hear tho. 🙂 Oh @ryan, thanks for the warm welcome back. Yeah I went on a long journey, glad you been following me. Great to see you're still running this thing haha. And now even using llm's! Yeah OMG so many names that I almost forgot about. I'm an old man now hehe.
-
PHP code isn't rendered, but referenced images are being pulled
markus-th replied to Joachim's topic in General Support
@Joachim Exactly, when you use wireRenderFile() (or include), the variable $page remains the current page being viewed in the browser—in this case, the Home page. Since your Repeater fields live on the child pages (the modules), $page->introimg_field is looking at the Home page, finding nothing, and returning an empty object. When you loop through your child pages to render them as components, pass the specific child page into the options array of wireRenderFile. foreach($page->children() as $component) { // We pass the $component page object into the file echo wireRenderFile("components/{$component->template->name}.php", [ "item" => $component ]); } Inside the child (module) template: <section id="<?php echo $item->name; ?>" class="module"> <div class="landing_images"> <?php foreach($item->introimg_field as $intro_image): ?> <a href="<?php echo $intro_image->page_picker->url; ?>"> <h3><?php echo $intro_image->title; ?></h3> <img src="<?php echo $intro_image->image->url; ?>" alt="<?php echo $intro_image->description; ?>"> </a> <?php endforeach; ?> </div> </section> This should give you the correct array. -
Hi all, sorry haven’t been around Processwire in a while as I’ve been doing games and AI ethics work mostly these days. If you want some more things to read and hear then check out my podcast on the subject or my article about the end of programming…. Yep 🫠 Machine ethics podcast Programming is dead, we’re all code engineers now
-
GitSync – Keep your (private) modules in sync with GitHub
Mikel replied to Mikel's topic in Modules/Plugins
Update: Improved "Link Module" UX We had an internal discussion about the "Link Module" interface and optimized how the different states are handled: Match found – The repo is resolved and ready to link. The green link opens the repository on GitHub so you can verify it's the right one before linking. This appears instantly when the module declares its GitHub URL in getModuleInfo() or has been resolved before (cached), otherwise after a quick GitHub search. No repo found – ProModules like RepeaterMatrix have no public GitHub repo. GitSync shows a clear "No repositories found." instead of false matches. Multiple repos – When a module exists in several repos (forks, different maintainers), you get a list to pick from. Selected, with "change" – After picking one, a "change" link lets you switch. It only appears when there are actually alternatives. Other improvements: single results are now auto-selected (no unnecessary click), the GitHub search uses Code Search API for exact .module.php filename matching (works even when repo name ≠ class name), and results are cached client-side so re-selecting a module is instant. Cheers, Mike - Last week
-
module HTMX for ProcessWire: Build reactive, state-aware components effortlessly
elabx replied to ukyo's topic in Modules/Plugins
Fantastic, thank you so much ukyo! -
RobotsTxt — Manage robots.txt from the admin UI
bernhard replied to maximus's topic in Modules/Plugins
I think there is only one thing missing: a screenshot 😉- 1 reply
-
- 1
-
-
Good morning @Stefanowitsch! Right now, this is possible for all images on a page using the page mode for prompts. I did a short screencast which shows what I mean. This way, you have to open each page, click 'Save + Alt-Text' (or whatever you want to call it), and move on to the next page. You could definitely create a script to process multiple pages at once, but this would require some refactoring of the module – I actually like this idea 😄 prompt-ai-pagemode.mp4
-
Context Module - AI-Optimized Site Documentation with TOON Format
maximus replied to maximus's topic in Modules/Plugins
Yes, it's documented in the README under "Best Practices → Session Continuity" section! I've also just improved the AGENTS.md file to make it more prominent with a clear example prompt. The docs now show: At end of each coding session, use this prompt: Update prompts/project-summary.md with current project state. Follow the existing format in the file: - Be concise and factual - Use bullet points - Update in place (don't overwrite history) - Remove any duplication Save the file. The template file itself also has the rules embedded, so AI sees them every time it updates. This is in v1.3.0 which I'm releasing shortly with CLI support for AI agents. -
I could swear that was playing at the gym today.
-
I have trouble following the instructions here. I have several virtual domains successfully installed on Apache Ubuntu, with index.php placeholder files. I want to install Processwire sites in each of them, each with their own config and database, and have all of them use the same /wire codebase in /domainone. /www/html/domainone/site (+ /wire) /www/html/domaintwo/site /www/html/domainthree/site etc. The 'how to install' instructions on the link talk about creating subdirectories off the web root, tmp directories, moving and renaming folders, having to come up with different names for the site folders, etc. It does not sound like what I am looking for. Is there a simpler way to get the structure described above? ChatGPT claimed I could just bootstrap the /wire folder into the other with one line and install normally, but that did not work of course.
-
AFAIK Incus is a community fork of LXD developed (partly) by same people. So not so new actually)
-
@gerritvanaaken @pideluxe Yes, it automatically takes over all mail sending. I've updated the module and added OAuth2 support, but I haven't tested Azure specifically. You can follow the instructions here: https://github.com/trk/WireMailPHPMailer#xoauth2-google-microsoft-yahoo-azure-support Please test it and let me know the results, or feel free to submit a PR if any fixes are needed!
-
Sorry about that @PWaddict - both versions should be fixed now.