-
Posts
371 -
Joined
-
Last visited
-
Days Won
8
Everything posted by MadeMyDay
-
Danke Bernhard ? This Lighthouse score, built in in Chrome/Chromium. Look in DevTools -> Audit. Seems a very good idea. Will try that! well, I use/need sourcemaps in dev more than in production. But sourcemaps are not the bottleneck. The thing is: This is my standard gulp setup and it is usually so fast that I cannot even see the refresh in the browser because my eyes cannot switch so fast from editor to browser ? Purging is only done in production builds. And yes, I am using the purging in tailwinds config like this: module.exports = { purge: { content: ['./src/*.php', './src/**/*.php', './src/php/*.php', './src/fields/layout/**/*.php', './src/fields/layout/parts/*.php'], options: {...} } } In dev the whole tailwind declarations are used (2MB css file). BUT: This is it! Thinking about it it doesn't make sense to bundle everything (including Tailwind) up in development and distribute one (large) CSS file. It would be better to distribute the Tailwind CSS as it is in dev and only process my own css/stylus files like I always do. Will try that. Thanks for the rubber duck debugging ? yes, this is the other major problem. I really don't see why this just doesn't work. I already quoted the tailwind config above and you see I already tried to add more sources and be more specific, but somehow a lot of the classes just don't get recognized. Problem is the first time I purged or better tried to purge the project already was pretty complex. So I have no clue which classes are missing and why. I will try to set up a test case with an empty PW installation and then try to observe what the problem is. But thanks for pointing out that it should work even if the classes are not in a proper HTML syntax.
-
Thanks szaesz, fixed. ? Pretty basic I guess. But I also assume that something in there is slowing down the process, extract from gulpfile: // CSS task function css() { var plugins = [ tailwindcss(), autoprefixer() ]; return gulp.src(srcPaths.styl) .pipe(plumber()) .pipe(sourcemaps.init()) .pipe(stylus()) .pipe(postcss(plugins)) .pipe(sourcemaps.write('.')) .pipe(gulp.dest(buildPaths.css)) .pipe(browsersync.stream()); } Knowing that it should be faster, I can iterate over it and try to eliminate the bottleeneck, thanks. Interesting, could you give an example of your setup? The other issue still remains. A typical .php of the project file looks like this: <?php $cssClass = ""; $textoutput = ""; $waveClass = $page->checkbox1 ? " wave" : ""; $colClass = $page->checkbox2 ? " flex-matrix" : " md:flex-1"; $containerClass = $page->checkbox2 ? " matrix" : ""; $containerHeadline = $page->text1 ? "<h2>{$page->text1}</h2>" : ""; $cardoutput = "<div class='boxes__cards flex flex-1 items-stretch flex-col lg:flex-row {$containerClass}'>"; $cardClass = "boxes__card"; foreach($page->cards as $card) { include('parts/card.php'); } $cardoutput .= "</div>"; $output = " <div class='element element--boxes{$waveClass}' id='{$sanitizer->pageName($page->text1)}'> <div class='container content pt-8 relative z-20'> {$containerHeadline} <div class='flex items-start'> {$cardoutput} </div> </div> </div>"; echo $output; Most of the tailwind classes don't get caught by purge, some do. I assume it is looking for sth like class="...". And my classes are dynamic depending on settings. I don't know how to solve this without adding a lot of overhead to the template files. Absolutely. I really see the benefits and also it makes a lot of fun trying things out and adjusting "on the fly". But with the above mentioned problems the benefits were reduced too much. I am also considering Tailwind for some vue projects, but the overhead for dynamic classes scares me off a little.
-
Hi there, another one finished, up and running. https://bots4you.de/ The website informs about bots4you which is a German based Chatbot creator. Special with this chatbot is its b2b purpose, that means it is pretty decent in "knowing" what customers of several industries (real estate, insurances etc.) want to know and describe their efficiency with nearly 80% of success for common customer inquiries. From the ProcessWire perspective I mainly use Repeater Matrix with which I only have one template (even for home) but 8 content modules that can be arranged like the customer wants to create different pages. Other than that I used TailwindCSS for the first time, but I am not convinced, at least in a PW environment. Downsides where: build time when in dev mode (hot reload takes up to 6 seconds) purge of my php files was less than reliable. I ended up putting most of the classes on an allow list in the tailwind config. Could be my fault, but the overall experience wasn't that great. Anyway, client is happy, and I am, too: ?
- 8 replies
-
- 10
-
What happens if you set it to true?
-
@celfred: This has nothing to do with the map itself. It takes 15 seconds four your server to generate a response, after that the map and all of its content loads fast. So I assume your process of building the list of markers is somewhat ineffective. Can you show the code with which you generate the $allElements Array?
-
Thanks you two ? Is not online anymore. But I have a backup, it was in German:
-
I never submitted the newest iteration of my own business site which already is 3 years online, promoting my webdesign/UI/UX/Frontend stuff. "Just" a Onepager, content managed by PW, usage of D3 for the circles and a completely handwritten gallery at the top. But as always, way more hours went into this as expected ? https://siebennull.com
- 7 replies
-
- 20
-
After making more App stuff (UI/UX/SPA) lately I finally made a website again ? It is the Website of the German Association of Osteopaths. Information about the Association, Osteopathy, workshops, search for Osteopaths (Members) as well as a Membership description plus application form. Mentionable: 100% 100% 100% 100% Lighthouse score with only 121 KB transferred data/8 requests for the start page. Processwire-wise usage of ListerPro (for managing Members and workshops), Form Builder for application of members. Croppable Image for the images. Managing pages with flexible teaser blocks, built with ASM select and core functionality. Pretty fun project especially because client delivered his part on time and we ramped up the thing in 4 weeks (me working part time). https://vwod.de
-
yeah sure, it's Open Source ?
-
Love it and cannot wait to try it ?
-
Honestly I have no clue what is happening there. Just out of curiosity, could you try to autoload the module? So in FieldtypePageTableExtended.module try 'autoload' => true (perhaps same for PageTable). Doesn't make that much sense but I have no idea why FieldtypePageTable isn't ready since it is already present. The modal injects its changes via ajax, I guess somehow there could be the problem with your referenced PTE template block. But its just wild guessing.
-
could you share some more code, esp. how you render the blocks in your template and how that specific block with the page reference looks like. Thanks!
-
Sorry, I never saw that error. You mean a page reference field? I also use page reference fields a lot so this shouldn't be the root cause. Do you have an another PTE field active in that template? I know there might be problems if there is more than one PT/PTE field in one template.
-
I cannot install the module. Seems version 2.8. is left out in the compatible versions? Thx! edit: Nvmd, Manual Install works. Install via Classname didn't.
-
I guess you are talking about the block and the corresponding detail page. You seem to put the text in the pte template. Why not put a page select field to the pte template and put the content of that textblock where it belongs, to the detail page (let's call it "summary"). Assuming your detail template is "detail" and the pte template is "pte_textblock". Add a page select to pte_textblock named "linkedPage". So in your pte_textblock template you have access to the fields of the detail page via $page->linkedPage->summary and also to the read more destination via $page->linkedPage->url. Ring a bell?
-
Could you explain the use case for me? Why are those fields not filled in the details template and you just pull them to the PTE template? So the PTE template for example just consists of a page select field. You select a page and the PTE template renders the information pulled from that page.
-
Sorry, I don't get it. You three different layouts for PTE, so far so good. Now you wanna do what? The read more link to a different page should point to a different template? Why not? For that URL the detail page template is used, isn't it?
-
Should be in core distribution. But you have to install it first. It is called "ProFields: PageTable" afair.
-
I would say the PageTable module by Ryan is close to his repeater matrix ;-) I only extended the functionality of the former.
-
See it as an alternative to the Repeater Module. For the repeater you define (the same) input fields for each item. The PageTable module is technically pretty similar as both store the items in own pages somewhere. But with the PageTable module you have the opportunity to use different templates as input field sets to choose from. The PageTable module shows those (sub)pages as a table with each page as a row. PTE extends that functionality for rendering the items as they are rendered in the frontend.
-
Sure, why not? I am using it on more than ten websites. Some of them have thousands of visitors each day, but that is not the crucial thing since the module doesn't do anything different than the PageTable module itself. It "just" renders the templates also in the admin. There can be some glitches (as this thread shows) but as long it works for you in the admin area, it will also work for your visitors ;-)
-
It is currently not actively under development but I use it as it is on several sites (I guess a lot of others do so, too). So I am wondering about this line: <?php echo $page->pagetableextended->render(); ?> The parts are just pages (see PageTable docs) . So with your code you just get an array of pages and PW is so kind to show you which. What you wanna do is: <?php foreach($page->pagetableextended as $pe){ echo $pe->render(); } ?>