Leaderboard
Popular Content
Showing content with the highest reputation on 10/10/2025 in all areas
-
Today there’s a new version of ProCache (4.0.7) available for download in the ProCache support/upgrades board. Here’s what’s new in this version of ProCache: ProCache has been updated throughout for PHP 8.4 support. Upgraded the SCSS compiler to the latest Leafo SCSSPHP 2.0.1. This version requires PHP 8.2, so ProCache also lets you choose from two older versions if you prefer. Upgraded the LESS compiler to the latest Wikimedia LESS 5.4.1. Past versions can also be selected, including Wikimedia 3.0.0 and Leafo LESS 0.5.0. Upgraded the CSS/JS minifier to the latest available version (1.3.75 latest). Because we had customized the CSS/JS minification quite a bit, the older version (1.0 stable) also remains selectable, just in case there’s anything the older version handles that the new one doesn’t yet. LESS, SCSS and Minifier versions can be selected and changed in the ProCache configuration: Setup > ProCache > JS/CSS. Likewise the ProcessProCache module has a new JS/CSS tab for configuring the settings mentioned above. ProCache now logs LESS/SCSS and Minify status and errors to the JS console (when in debug mode or for a logged-in superuser). ProCache now has a proper API reference page available here: https://processwire.com/api/ref/pro-cache/ Because this is a brand new version with several upgraded libraries, it should be considered beta until it's been out a couple of weeks. Thanks for reading and have a great weekend!8 points
-
Unfortunately, only my PageGridBlocks are available so far. But it would be nice if the community created and shared their own blocks as well. My PageGridBlocks module makes it easy to install and uninstall block templates. It could be a good starting point for others. Another good option would be Bernhard's RockMigrations module to create the block templates. I think it would be best if those blocks would be installable as modules. It would be cool, for example, if someone created blocks for a specific CSS framework. Since I don't work with frameworks myself, this isn't particularly useful for me. However, there seem to be many people in the PW community who work with frameworks. If someone were willing to create and share their own block library, I would be happy to grant that person free access to PAGEGRID.2 points
-
I assume that almost everyone who develops a new website in Processwire works with the Blank profile 🙂 The other existing profiles are more suitable for familiarizing yourself with the system 🙂2 points
-
Strange I know, but you will want to remove the space after -f for this to work2 points
-
When learning or testing PW, I would recommend to start with a non blank profile to get an idea and play around with stuff. https://github.com/processwire/site-invoices https://processwire.com/blog/posts/invoices-site-profile https://github.com/processwire/site-default When developing a new project, I start over with the blank profile.1 point
-
PAGEGRID makes no assumptions about CSS or markup. This means that all CSS frameworks also work with PAGEGRID. I don't work with CSS frameworks myself, so I can't really recommend any (I prefer to use modern vanilla CSS like variables, grid, etc.). But I think it's totally fine to use them. I don't think it will have big impact on performance (depending on how large the CSS file for the framework is), just make sure to load your CSS fraemwork files inside the <head> tag so it's not blocking the rendering of your page. There are basically two approaches to working with PAGEGRID, but these can also be combined: No-code approach: You can create entire websites with PAGEGRID without writing any code yourself. To do this, you can use the “Ready-Made Blocks” and create CSS classes and styles with the Style Panel. This works similarly to Webflow or Figma and is particularly interesting for people who want to customize their website visually (which can be faster then doing it in code). Code only: If you prefer to work in code, you can disable the Style Panel in the PAGEGRID settings (Setup > PAGEGRID). You can then use any CSS framework with PAGEGRID. If you want to use your own CSS code or a framework, you can load it into your page template (take a look at the pagegrid-page.php template as an example). If you want to create your own blocks, you can copy the ready-made blocks from “site/modules/PageGridBlocks/blocks” to your “site/templates/blocks” folder and customize the markup there (e.g., add classes and markup for your CSS framework), or create your blocks from scratch. Learn more here: How do I create my own blocks? or here: how styles work in PAGEGRID. Here is an example of an accordion block using the UIkit framework as an example: <?php namespace ProcessWire; ?> <!-- UIkit accordion block using PAGEGRID's children option --> <ul uk-accordion pg-children="true" pg-children-label="Accordion Items" pg-children-tab="append" pg-autotitle="false" pg-wrapper> <?php foreach ($page->children() as $item) : ?> <li> <a class="uk-accordion-title" href><?= $item->title ?></a> <div class="uk-accordion-content"><?= $pagegrid->renderItem($item) ?></div> </li> <?php endforeach ?> </ul> In this example we use PAGEGRID's children option to render the accordion items (as child pages). Users can then add child items using the backend editor. You could also use repeaters to render the child items for PAGEGRID. The point here is that you can easily add whatever markup is neede for your CSS framework by creating your own custom blocks.1 point
-
Many thanks @BrendonKoz for your thoughts and thanks for sharing. For me it is interesting that you also take the blank profile and start from there. I've already placed a PageGrid specific question in the PageGrid subforum.1 point
-
I found it hard to answer your question because I've always started with a blank profile. It gives the most freedom without any constraints, to build a custom site as needed for the project right from the start. No more, no less. I'm not sure which framework might work best with PageGrid, that would likely be a question for the PageGrid-specific forum. The last few sites I've built, I have taken advantage of Bootstrap with the assumption that if anyone were to need to maintain or edit after me, using something that is more ubiquitous would be useful. Beyond that reasoning, we can choose what we would like. Tailwind might be a better (or prettier?) option now, depending on certain factors. If it's a lightweight enough website in terms of elements/components to be used, vanilla CSS without a framework would be awesome.1 point
-
Ah, I've found the answer to my question already. See phpMailAdditionalParameters on here: https://processwire.com/api/ref/config/ I assume this will do it in config.php: $config->phpMailAdditionalParameters = '-f bounce@example.com';1 point
-
Not sure if it was body text, or quote, or code, so trying all three. Sync report == StripePaymentLinks: Sync (TEST RUN) == Mode: DRY RUN (no writes) Update existing: yes Create missing users: yes From: 2025-10-08 To: - 2025-10-08 13:53 cs_test_a12s... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1961 2025-10-08 13:02 cs_test_a1DI... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1964 2025-10-08 09:19 cs_test_a1U9... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1965 2025-10-08 09:10 cs_test_a1iB... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1966 Sync report == StripePaymentLinks: Sync (TEST RUN) == Mode: DRY RUN (no writes) Update existing: yes Create missing users: yes From: 2025-10-08 To: - 2025-10-08 13:53 cs_test_a12s... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1961 2025-10-08 13:02 cs_test_a1DI... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1964 2025-10-08 09:19 cs_test_a1U9... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1965 2025-10-08 09:10 cs_test_a1iB... [LINKED] XXXXXXXXXXX => action: UPDATE purchase #1966 I did not get blocked. I'm wondering if it's forum category/subforum specific?1 point
-
@dab thank you so much for sharing! That actually solved my problem! Because $config->httpHosts = array('domain.com'); didn't work, but $config->httpHosts = array('domain.com', 'www.domain.com'); did!1 point
-
If you have the core ProcessPageClone module installed you can copy a page via Page List: But sometimes I don't want to hunt around through Page List to find the page I want to copy, and instead I have found the page via the admin search and have it open in Page Edit. So I used this hook in /site/ready.php to add a "Clone this page" button to the bottom of the Settings tab. // Add a clone button to the Settings tab of Page Edit if this page is allowed to be cloned $wire->addHookAfter('ProcessPageEdit::buildFormSettings', function(HookEvent $event) { $wrapper = $event->return; $modules = $event->wire()->modules; $page = $event->process->getPage(); /** @var ProcessPageClone $ppc */ $ppc = $modules->get('ProcessPageClone'); if($page && $ppc->hasPermission($page)) { /** @var InputfieldButton $f */ $f = $modules->get('InputfieldButton'); $f->value = 'Clone this page'; $f->href = $event->wire()->config->urls->admin . 'page/clone/?id=' . $page->id; $wrapper->add($f); } }); Maybe somebody else has this need and finds this useful.1 point
-
THANK YOU! Disabling mutagen did the trick! ddev mutagen reset && ddev config global --performance-mode=none && ddev config --performance-mode=none Now newly uploaded images have the correct permissions: 644. UPDATE: This is the typical mutagen behaviour: https://github.com/mutagen-io/mutagen/issues/23#issuecomment-345277107 But there is a also a way to have mutagen enabled and still get the correct file permissions: Add this line to your DDEV config.yaml: upload_dirs: - site/assets/files1 point
-
Do not use global unless you really know what you are doing. Read this: https://stackoverflow.com/questions/16959576/reference-what-is-variable-scope-which-variables-are-accessible-from-where-and $this->wire() is another option to assign global vars, especially for more complex stuff ... like class instances. /** * Get an API variable, create an API variable, or inject dependencies. * * * @param string|object $name Name of API variable to retrieve, set, or omit to retrieve the master ProcessWire object. * @param null|mixed $value Value to set if using this as a setter, otherwise omit. * @param bool $lock When using as a setter, specify true if you want to lock the value from future changes (default=false). * @return object|string|mixed * @throws WireException * * */ public function wire($name = '', $value = null, $lock = false) {}1 point