-
Posts
69 -
Joined
-
Last visited
-
Days Won
1
Everything posted by markus-th
-
I think URL hooks can be a good solution for this case: https://processwire.com/blog/posts/pw-3.0.173/
-
Xforum - Proof of Concept front end forum
markus-th replied to breezer's topic in Module/Plugin Development
Many thanks for the module. I have some small ideas that could make it easier to install the forum on an existing site and integrate it seamlessly into the layout. Are you planning to make the module available on GitHub? -
Nice, thanks for sharing. BTW: Works also perfect for the ProModule RepeaterMatrix from @ryan
-
@Klenkes I currently have the same problem with v 1.0.9, after a downgrade to v 1.0.8 everything works as expected again.
- 262 replies
-
- 2
-
-
-
- translation
- language
-
(and 1 more)
Tagged with:
-
Help with adding Google Tag Manager code
markus-th replied to That web guy's topic in Getting Started
Hello webguy, to integrate a Google tag on your site, you can integrate the code e.g. in the header template (sometimes _header.php). But the answer is not quite that simple, as it depends on how the templates of your site are structured. My templates usually look like this: _header.php _footer.php home.php (include header, templatecontent, footer) basic-page.php (include header, templatecontent, footer) ... and so on ? I hope this helps -
Look, here in the docs is every information you need ? https://processwire.com/docs/modules/hooks/#what-methods-in-processwire-are-hookable
-
module PrivacyWire - Cookie Management & async external asset loading
markus-th replied to joshua's topic in Modules/Plugins
<script> function gtag() { dataLayer.push(arguments); } gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); </script> <script type="text/plain" data-type="text/javascript" data-category="statistics"> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('consent', 'update', { 'analytics_storage': 'granted' }); </script> <script type="text/plain" data-type="text/javascript" data-category="statistics"> // GTM </script> I use GTM only for Statistics, this is how it work for me. -
Looked at it on Andriod. No image ... tested with another website, work with image
-
Look at this idea: Since I have been using this method, I no longer need any other approach to build up the content on my pages and I also need far fewer different templates. You don't have to use depth, but it allows extremely flexible output of content when needed. My basic_page template look like this: <?php namespace ProcessWire; include "_header.php"; $items = $page->content; foreach ($items as $key => $item) { $item->position = $key; $item->all_items = $items; } foreach ($items->find("depth=0") as $item) { echo $item->render(); } include "_footer.php"; And all matrix "content" templates are inside the fields folder.
-
I can understand that, for me it's just always the same ID. Alternatively, you can also overwrite the LogoURL in admin.php. Directly before: require($config->paths->adminTemplates . 'controller.php'); with: $adminTheme->logoURL = $mylogourl I use this for multisites where I need different logos depending on the URL.
-
I don't know if my way is better, but for me it has become standard ? This is easy done: I set the imagepath in AdminTheme to: '/site/assets/files/1020/be-logo.svg' (1020 is my settingspage) and to make sure that the image name is always the same I use the Custom Upload Names module. Now I can simply upload a new logo and have it available in the backend. I exported this configuration with some fields and settings that I need again and again with the Profile Exporter from @ryan and use this as a starting point for almost every new installation.
-
I have a suspicion, can it be that you have a template and a repeater with the same name? Normally you can find all repeater elements under "Admin". You could try moving the pages there and then changing the template name.
-
Very many interesting approaches. Therefore, I would like to show my solution as well. I also use the repeater matrix but with nested elements. This gives me maximum flexibility and requires fewer "static" elements.
-
That could have been me ?
-
@bernhard This works pretty well for static content, but unfortunately not for content filtered by URL parameters, for example. I really like to use HTMX to dynamically load and replace content on pages. Also asynchronous loading of partial parts of the page becomes very easy. Here is a simple example of the output of a product tile with URL hook <?php foreach ($items as $key => $item) { $pos = $start + $key + 1; ?> <div :hx-get="'/getproduct/'+<?= $item->id ?>" hx-trigger="revealed" hx-indicator=".loader" class="product-tile"> <div class"loader"> Some fancy loader :-) </div> </div> <?php } ?> The hook: (getproduct.php) <?php namespace ProcessWire; $wire->addHook('/getproduct/{prodid}', function ($event) { $id = $event->arguments('prodid'); $item = $event->pages->get("template=product, id=$id"); ?> <div> <p>Producttile</p> </div> <?php exit(); ?> And of course in ready.php include 'templates/functions/getproduct.php'; if (array_key_exists('HTTP_HX_REQUEST', $_SERVER)) { $config->appendTemplateFile = ''; $config->prependTemplateFile = ''; $config->htmxRequest = true; } Maybe that's what @Jonathan Lahijani means by gymnastics. For me personally, this is not a special effort and is actually already part of my workflow. Disclaimer: I know this is not Markup Regions ?
-
@cb2004 Maybe it was a coincidence in my case, however, it worked exactly like that for me in 3 installations.
-
@DV-JF I also had the same behavior that no core updates were displayed. This phenomenon was only with Processwire installations that were already somewhat older. I then noticed that the ready.php in the site folder were different for these old installations. Replacing them with a new ready.php resulted in the coreupdates being displayed again. But be careful, if you already have a modified ready.php, you have to make these changes in the new file too.
-
mPDF error: No font or default font set!
markus-th replied to Frank Schneider's topic in General Support
If you are using Pages2PDF eg. WirePDF you can update the module from my updated fork: https://github.com/markusthomas/Pages2Pdf -
mPDF error: No font or default font set!
markus-th replied to Frank Schneider's topic in General Support
Sounds you use a mPDF-Version < 8.0.10 PHP 8 is not supported on older versions. -> https://github.com/mpdf/mpdf -
Learned something again, thanks @bernhard for this hint.
-
You don't need a module, it can be done by a hook in the ready.php and an warningpage (with own template). -> https://processwire.com/api/ref/session/login-success/ $this->addHookAfter('Session::loginSuccess', null, function ($event) { if ($this->wire('user')->hasPermission("specific_role")) { $session->redirect($pages->get("/warningpage")->url); } }); On the "warningpage" log the user out with this code in the template: $session->logout();
-
The only problem i see is, you have to do some workarounds that each user only see his own subdomain. Otherwise all users see all sites in the adminarea. A hook in ready.php could look like this: $this->addHookAfter('ProcessPageList::find', function ($event) { $event->return->each(function ($p) use ($event) { if (!$p->editable() && !$p->addable()) $event->return->remove($p); else if ($p->template == 'subdomain-home' && !$this->user->hasRole("superuser") && !$this->user->hasRole(strtolower(str_replace(' ', '-', $p->title)))) $event->return->remove($p); // title from homepage and userrole have the same name }); });
-
Since I had to update more and more projects lately and also the PHP version of some of these projects was set to >=8 in the meantime I created a fork of the module and updated mPDF to version 8.1.3. With only some small changes in the WirePDF module I can now continue to use Pages2PDF without any restrictions. Maybe this is helpful for someone. https://github.com/markusthomas/Pages2Pdf