Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/20/2026 in all areas

  1. Hey @gebeer Yes, it's pretty wild and fun to watch sites being built by AI. Frightening too obviously ! I created an entire blog last week without touching the admin. Templates, fields, test content, pages etc created in about 5 mins. And 4 minutes of that were typing my instructions. But you could always save it as a 'recipe' and reuse it. No worries. I don't mind questions. 🙂 Yep, the JSON schema approach is a wrapper around the PW fields and templates API. It can create/update fields (type, label, description, inputfield settings) and templates (fields, family settings like allowChildren, urlSegments, etc.). Re. roles/permissions or module install/uninstall, I didn't need those. My workflow is quite simple, thankfully and doesn't involve clients updating their sites. I haven't used RockMigrations, but knowing Bernard's reputation, I imagine RockMigrations is significantly more comprehensive in that regard. Regarding the question about AppAPI Vs HTTP API, I had to ask the robots about that one and the reply is comprehensive but possibly not what you were asking. See below, but you're probably already familiar with the AppAPI stuff. BTW the Module isn't commercial, and anyone can try it. I want to clean up the repo before opening it up for wider use. Is the above any help to you? Did it answer your questions?
    2 points
  2. Yes, it is a completely new hosting-package. The error-reporting is a good idea!
    1 point
  3. I usually do this and it simplifies things if your local and remote credentials are the same. 1. Turn on errors on your config file to make trouble shooting easier 2. Zip up all your local files and ensure to get your htaccess too 3. Export the local database and import it into the remote plesk server or whatever you’re using 4. Set up remote database credentials 5. unzip remote files From that point onwards, I might have some htaccess issues or I might need to look at site logs etc but most of the time it goes smoothly enough. You’re installing onto a blank site right? If there is an existing site in the webspace which you didn’t create, ensure to rename the index.html page
    1 point
  4. Hey, I've started to create a Media Hub for Processwire. [Edit...newest updates to UI are in later posts] Screenshots attached. Obviously a few UI improvements are needed 🙂 One of my clients requested a centralised media manager. I thought it'd be fun to give it a go and learn some stuff. I know that with a self-built Module, it'll always be maintained, and I have an active interest in evolving it. Shout out to @markus-th who just announced he is doing similar with WireMedia.
    1 point
  5. Thanks. Yep, I'm leaning that way too. Also, making the user load all the images even with pagination, lazy loading and caching etc isn't ideal.
    1 point
  6. I prefer this one, along with the option to configure which source is shown by default (preferably the first tab is always the default, if possible). A cleaner, more organized interface is better. If image sources are merged, even when page-context images are listed first, how can I tell the actual source? In some cases that does matter. Avoiding confusion up front is the better solution, in my opinion.
    1 point
  7. Hey a UI/UX question if anyone wants to chip in. Does this make sense? Rich Text Editors (normal flow) You click the Add Image button in TinyMCE, and the Select image window opens. You see a list of images associated with that page (only). Rich Text Editors (with MediaHub) With MediaHub, I'm no longer restricted to showing only the images attached to a page's fields. But that raises a UX question: clients are used to seeing just a handful of images tied to the page they're editing. Presenting hundreds of Library assets upfront and asking them to sort and filter isn't an improvement...if it's a sorting and filtering burden. The better approach is two tabs? On this page for the assets already attached to the current page, and MediaHub (or Library) for the full collection? Or should I only display the entire library with the users' page images positioned at the top for convenience? Cheers P
    1 point
  8. Hello community, to my surprise and delight, my module “FrontendAutoReload”, which was previously only published on Github and used exclusively by me, was presented in the ProcessWire Weekly Newsletter #545. And because I haven't encountered any problems using it so far, I'm in the process of submitting it to the module repository. It's basically a little helper for ProcessWire template development, which automatically hits the refresh button in your browser each time a change in the template folder is detected. Not groundbreaking but a convienient timesafer. I would therefore be delighted if it could also be of some help to other developers. For information on how to use it, check out FrontentAutoReload on Github. If you have any questions, don't hesitate to ask them.
    1 point
  9. Just finding this module now, and I am loving it! First of, belated congratulations are in order, and thanks a lot for making this module available @digitalbricks !
    1 point
  10. From Cursor below. You'll be please to note it's impressed with your question 🙂 Good question! It's entirely home-baked. The CLI is a custom PHP script (PwMcp/bin/pw-mcp.php) that bootstraps ProcessWire directly, and routes commands through a CommandRouter class (PwMcp/src/Cli/CommandRouter.php). It's purpose-built for the MCP workflow - the Node.js MCP server shells out to PHP, passes structured arguments, and gets JSON back. It doesn't use WireCLI, ProcessWire Console, or RockShell. Those are general-purpose CLI tools for ProcessWire. The PW-MCP CLI is narrowly focused on the specific commands the AI agent needs: reading pages, querying selectors, listing templates/fields, exporting schema, and syncing content. It speaks JSON natively (no human-friendly formatting to parse) and is designed to be called programmatically by the MCP server rather than by a human in a terminal. The architecture is: Cursor Chat → MCP Server (Node.js/TypeScript) → CLI (PHP) → ProcessWire API For remote sites, the CLI layer is bypassed entirely - the Node.js server makes HTTP POST requests to pw-mcp-api.php, which bootstraps ProcessWire and runs the same CommandRouter directly: Cursor Chat → MCP Server (Node.js) → HTTP POST → pw-mcp-api.php → ProcessWire API So the CLI is really just the local transport mechanism. The actual logic lives in the CommandRouter and related PHP classes, which are shared between both the local CLI and remote HTTP paths.
    1 point
  11. Hi @Stefanowitsch, thanks for the heads-up! Pushed a fix to Github to handle wrong values for model or API key a bit more gracefully 😅
    1 point
  12. Oh and I had an n8n automation set up recently. You can run n8n for free locally so I did a little experiment… local n8n workflow is scheduled to run every X minutes contacts my live site creates an unpublished post in a predetermined location sends me a slack notification confirming page created That’s the real reason that the Module exists. So if you want to, you can create content at scale automatically. Nothing to stop you integrating keyword and competitor research into the mix and experimenting with programmatic SEO (pSEO). Maybe I should add that to the AI thread?
    1 point
  13. @szabesz I forgot to cancel my trial yesterday lol. But so far it's been working well for me albeit slower than what I'm used to with claude. That being said, I'm on the cheapest plan. For me at least there's a cancel button under settings > subscription > cancel plan... Here's hoping it works next month if I change my mind
    1 point
  14. @Peter Knight Thank you for taking your time to give me the intel. This answers all my questions. The local CLI caught my eye. Which one are you using, is it home baked or https://github.com/wirecli/wire-cli or https://github.com/trk/processwire-console or https://github.com/baumrock/RockShell ? As for migrations, I'd say Rockmigrations is pretty much feature complete and stable. It only lacks support for some of the Pro fields. But that seems to be the case for other migration tools as well. It does support Repeater Matrix though. Looking forward to seeing your MCP repo once it's up.
    1 point
  15. Latest updates. I had somewhat foolishly left development of the RTE integration until late in the day. But this week I am almost done with TinyMCE integration and a custom button on the toolbar. Initially I had planned on this flow user clicks the RTE media hub icon (insert image) A popup appears which displays images from the other fields on that page im so conditioned to this pattern that I overlooked something obvious. Why display just the images on a page when Media Hub can display all images in your hub? 🧐 Somehwhat unnecessarily, we’re asking clients to add an image to a field(s) Select insert image select image from step 1 again I’ll add a screenshot of the solution tomorrow. Would appreciate a second pair of eyeballs on this if anyone has time. P
    1 point
  16. Hello ProcessWire forums, I am sharing a new page I developed for cybersecurity and DevOps expert Julie Tsai. Built with ProcessWire, it includes use of ProModules FormBuilder for the contact form and ProFields for the soon to be launched Blog section, where a Repeater Matrix controls the flow of content. Always enjoy working with this CMF and learning all that it's capable of … each time something new emerges. https://julietsai.net/
    1 point
  17. I made a small module called ProcessSiteSettings and thought I’d share it here in case it’s useful to someone. ProcessSiteSettings is a lightweight ProcessWire module for storing and editing global site values in one place. There are already similar modules available, so this is simply another free option with a focus on quick setup, usability, and helpful template snippets. It adds a Settings item to the ProcessWire admin menu and creates one central page for global site values like: copyright text footer content contact info social links SEO / AI summary text images repeaters Repeater Matrix page references other regular PW fields Ofc. add your own fields of choice to it, or delete the ones you don't need! It uses a normal template + page approach instead of a fake config form, so it works much more naturally with ProcessWire fields. It also includes a small helper box on the settings edit screen that shows ready-to-use template snippets for each field. It tries to generate smarter examples depending on the field type, including more complex fields like images, repeaters, matrix items, multi-value fields, etc. Settings Menu: Editing Values, adding/deleting custom fields and shortcut to Fields for quick creation of new ones. Quick helper for showing everything on frontend! Example usage on templates: <?= siteSettings('ss_copyright_text'); ?> <?= siteSettings()->ss_footer_text; ?> <?= $siteSettings->ss_contact_email; ?> The admin is in English and the module is translation-ready. Just install the module, and that's it! Just sharing it here in case someone finds it useful. Download Here: ProcessSiteSettings.zip
    1 point
  18. @ryan I have active ProFields license, but I have no access to that board. Can you please provide up-to-date information on what we can expect? I need to tell a client about the state of draft/version management in ProcessWire, and I do not want to provide outdated information.
    1 point
  19. Hey everyone, I've been building a e-commerce project and needed to show personalized content based on visitor location — shipping availability, regional pricing, state-level compliance notices. Nothing like this existed in the PW ecosystem, so I built it. What it does Detects country, region and city from the visitor IP using MaxMind GeoLite2 databases (free). Result is cached in session. Exposes $geoip as a wire variable — available in every template automatically, just like $page or $user. // That's it. No setup, no require, just use it. if ($geoip->inCountry('US')) { echo $page->us_content; } API // Boolean checks — accept single value or array $geoip->inCountry('US') $geoip->inCountry(['US', 'CA', 'GB']) $geoip->inRegion('GA') // ISO 3166-2 subdivision code $geoip->inRegion(['GA', 'NJ', 'NY']) $geoip->inCity('Atlanta') // Inline conditional with optional fallback echo $geoip->showIf('countryCode', 'US', $page->us_block, $page->global_block); echo $geoip->showIf('regionCode', ['GA', 'NJ', 'NY'], $page->northeast_promo); echo $geoip->showIf('continent', 'Europe', $page->eu_gdpr_notice); // Single field $geoip->getField('countryCode') // "US" $geoip->getField('regionCode') // "GA" $geoip->getField('city') // "Atlanta" $geoip->getField('timezone') // "America/New_York" // Full array $geo = $geoip->detect(); // ip, country, countryCode, continent, region, regionCode, // city, zip, lat, lon, timezone, corrected, status Combining conditions // Country + region if ($geoip->inCountry('US') && $geoip->inRegion('CA')) { echo $page->california_prop65_notice; } // Logged-in + location if ($user->isLoggedIn() && $geoip->inCountry('US')) { echo $page->us_member_block; } // Time-of-day in visitor's timezone $tz = $geoip->getField('timezone') ?: 'UTC'; $hour = (int) (new DateTime('now', new DateTimeZone($tz)))->format('H'); if ($geoip->inCountry('US') && $hour >= 9 && $hour < 17) { echo 'Our US office is open right now.'; } // Pre-select shipping dropdown (Vivino-style) $selectedCountry = $geoip->getField('countryCode') ?: 'US'; $selectedState = $geoip->getField('regionCode') ?: ''; User location correction Frontend widget lets visitors fix incorrectly detected location. Stored per-IP in DB, applied on subsequent requests. You can also build your own UI — just POST to /?geoip_action=correct with country_code, region_code, city. Setup Composer package and databases live in site/assets/GeoIP/ — not in the module directory, so they survive updates. cd /path/to/site/assets/GeoIP/ && composer require geoip2/geoip2 Then drop GeoLite2-City.mmdb (or GeoLite2-Country.mmdb) in the same folder. Free download from maxmind.com. The module config page shows the exact path and command for your server. Admin panel Setup → GeoIP — lookup log with country/region/city, corrections manager, manual IP lookup tool. GitHub: https://github.com/mxmsmnv/GeoIP License: MIT Requires: ProcessWire 3.0.200+, PHP 8.2+ Feedback welcome — especially if you're doing anything geo-based with ProcessWire. Maxim
    1 point
  20. Ok, found it out... In the init-function of my module, I call $this->modules->get('JqueryUI')->use('modal'); Then I simply add «pw-modal» as a class to my link to the field-editor and viola, it opens in a modal window... Link for a new Field looks like this: <a href="/processwire/setup/field/edit?id=new&fieldgroup_id=new&modal=1&process_template=1&name=myTestField" class="pw-modal addNewField">New Field</a>
    1 point
×
×
  • Create New...