Jump to content

All Activity

This stream auto-updates

  1. Past hour
  2. No hurries... it works and as I use Twig, I need to manually add it anyway. Gave it a try... and it actually does work. Either this is a new behaviour or I never tried to do it this way. That's working fine for me. Even easier than importing from another template as I did. As it turned out to be really easy I wouldn't really need the option to check a template and import the fields - I guess. The PW workflow fits me perfectly fine as I need to migrate each template after the other, in my existing project. In new projects this might be a bit different, but I can't really tell for now. Let's keep it as it is, as it's working and proven PW way of doing things. I saw that! But your provided example $wire->addHookAfter('SeoNeo::getJsonLd', function(Hoo[...] would totally fit my needs! Your docs seem to be more complete or detailed. For now everything should be doable in my project. Some hooks, some manual editing on my side and my site... could be perfect. I hope I get this done this weekend to report back. This helped a lot! I will let you know when there a road-blockers or show-stoppers.
  3. Hi @wbmnfktr Thanks so much for the feedback, and I'm glad you like it πŸ™‚ I can only take credit for the planning and direction, but I put a lot of thought into it, and I'm glad to hear it's working (kinda') ok. On the specifics... That's interesting because I had a lot of issues getting it to work on the first pass. It turned out to be a non-related PHP error in my <HEAD> include was blocking the auto-inject. Once I cleared that, it worked. But I will now triple-check. Maybe hold off until I can come back to you tomorrow? I might have mistakenly assumed the issue was closed by "fixing" an unrelated event. I'm not sure I'm understanding correctly here, so apologies for starting from scratch. Yes, the module adds several fields between the SEO open and close tabs. I was thinking that manually adding these to every template would be a chore for people; the fields should be auto-added once you manually add the SEO open and close tab, and then save. LMK if I misunderstood there. Would you find it useful to pick the templates from the SeoNeo module config page (bulk add in one save), or do you prefer the standard PW workflow of opening each template individually? I'm quoting the following from the docs and AI (spot the em-dashes) πŸ™‚ What ships today (built-in): Organization, WebSite, WebPage, Article, Person, BreadcrumbList β€” auto-generated as a linked @graph How to add custom types (Recipe, Event, Product, RealEstate, etc.) right now: Hook ___getJsonLd() in your site's ready.php or a custom module: $wire->addHookAfter('SeoNeo::getJsonLd', function(HookEvent $e) { $page = $e->arguments(0); if($page->template->name !== 'recipe') return; $data = $e->return; $data['@graph'][] = [ '@type' => 'Recipe', 'name' => $page->title, 'description' => $page->summary, 'prepTime' => 'PT' . $page->prep_time . 'M', 'cookTime' => 'PT' . $page->cook_time . 'M', 'image' => $page->image ? $page->image->httpUrl : '', ]; $e->return = $data; }); What's planned (future, not committed to a version): A higher-level API β€” $page->seoneo->schema('Recipe', [...]) β€” with per-type hookable helpers. It's in the roadmap (section J in the backlog) but deferred because the API shape isn't stable enough to ship without risking breaking changes. The hook approach above is the recommended production path for now. Also I believe my own docs are fuller in detail: https://www.peterknight.digital/docs/seoneo/1.x/structured-data-json-ld/ Anywho LMK if any of those are useful answers and feel free to DM me too. Cheers P
  4. No Num-Pad you say? Then you aren't ready for this... Vortex Core, Cherry MX Brown switches...
  5. Pretty good prompt engineering! Why have I never thought of this? :D
  6. Today
  7. Took the time and installed SEO Neo to one my larger and most complete side-projects, and so far I am really impressed what can be done with this out of the box. The depth and customisation feels great on the first look. Might need to dig deeper into all the settings and options, but WOW! BUT... I noticed that auto-inject didn't work. Tried that in another instance that's almost clean without any other modules or whatever. I probably missed something at some point. Got it working in both instances nonetheless. I might try it in a clean environment again, but as it is not a show-stopper for me I won't lose another thought about it. Using the $page->seoneo->render() worked everywhere, even in Twig (TemplateEngineFactory) with {{ page.seoneo.render() }}. NICE! One other thing I'm not sure about is adding SEO Neo fields to templates. The module creates quite a few fields, but there is no option to single-click/single-action add them to a template of choice. Sure, in total only a minute or two to add them manually to ONE template but on larger sites with a lot of templates... well. I helped myself, added all fields to a new template and imported that new template into existing templates. More a hack, than a workflow, but at the end fields were in their right spot. In terms of Schema/JSON+LD: what other schemas are planned or how would I add custom ones? Looked into the docs but couldn't spot a reference to custom types like recipe, book, event, real estate / or related schemas. Overall... migrating from a custom solution to SEO Neo is probably doable in a few hours with this very special project. Luckily we have way better AI support now so it might be that all the Claudias out there can assist. First impression was great. Will probably move that project over to SEO Neo this weekend.
  8. horst

    A brand new day

    πŸ˜„ If I could, I would turn it off for ever, but haven`t found a way. So I use a very low gliw and 80% is white light. I found this in a local media store for under 50% of the regular price, maybe between 5 - 7 years ago.
  9. @AndZyk Your Mac desktop and your real desktop are very clean πŸ₯‡ Re. the view, it's just a park at the back of the home office. Not quite the countryside, but nice to have some greenery.
  10. Thank you. Its my office office. Would like to have a view with nature like you, but it is in city centre. At least I have a quiet workplace. My home office has a better view on nature. 😊
  11. Nice. Home office or office office ?
  12. All looking well used. I've been tempted to try the Razer stuff. It looks very nice, but my Razer machine, which I use for gaming, already has enough glowing lights.
  13. My workplace at the moment 😊
  14. The old forum format has long since outlived its usefulness, as generations have changed and a new format is needed, even one different from Reddit. Therefore, to maintain engagement, we need to come up with new ways to keep our audience on the page. By the way, the archive contains mockups of the future service from March 2026. Vox-FB.zip
  15. horst

    A brand new day

    Since back in 1996 I'm a big fan and user of the smallest Cherry Keyboards, with and without NumPads. But mainly the types without NumPads, CHERRY G84-4100: But on my primary Desktop working place I use a Razer Huntsman Elite RZ03-0187 :
  16. Thanks for this module. I am using it on my own site but have some issues with date fields. When I add the dateFormat option, I can only successfully display columns such as modified or created. All other date fields, such as published, still show only the timestamp. My due field type is datetime, and the date/time output is set to none. Did I miss something or why is this happening? Many thanks! $panels->add([ 'panel' => 'collection', 'size' => 'full', 'title' => 'Items', 'data' => [ 'collection' => 'template=repeater_document_items_repeater, due>=today, due<="+30 days", limit=4', 'sortable' => true, "dateFormat" => "d.m.Y", 'columns' => [ 'title' => 'Test', 'modified' => 'Modified', // This is the only one that is formated as 12.06.2026 'published' => 'Published at', // Displayed as timestamp 'due' => 'Due date', // Displayed as timestamp ], ], ]); Using latest v 1.6.0 on PW 3.0.257
  17. "Claude please convert for me the processwire.com/talk IP.Board into a native ProcessWire CMS/CMF application. Make no mistakes." 😊
  18. There's only 29.2k Total Topics 247.1k Total Posts 9,598 Total Members Who wants to volunteer their AI tokens? πŸ™‚
  19. @maximus I was just thinking this week that ProcessWire forums should be built in ProcessWire. Both as a showcase of how flexible PW is and to demonstrate its ability as more than a regular CMS. Amazing stuff.
  20. Awesome, thank you. Yes I tried out putting my page engineer field at the end of the editor first and for this case the notification is useful. But then I switched my field to a tab and for this case the notification is a little bit redundant. πŸ˜€ Nice πŸ˜€ Thank you, right now I prefer the field visibility as tab for the page engineer field. But maybe a new field visibility setting, f.e. off-canvas or modal could help to not scroll or switch to much between the fields. That makes totally sense and you need this for long requests. Actually the animation is growing on me, I was just a little bit overwhelmed by the flying words. πŸ˜… That is understandable. Reliability is more important than convenience. I guess it will be difficult to implement a Ajax driven page engineer field that is reliable. Ah thank you, I have not tried this out yet. I only gave page engineer an external image and this worked well. Nice to hear it already works with different file fields.
  21. Just Googled it Max. What do you like about it?
  22. I bought an HP 975 on Black Friday – it's the best keyboard experience ever.
  23. Hi everyone, Most ProcessWire sites need some form of community interaction β€” reviews on product pages, Q&A on documentation, discussions on articles. Vox adds all of that without leaving your PW install. GitHub: https://github.com/mxmsmnv/Vox Demo: https://vox.smnv.org/vox-demo/ What it does Reviews β€” star or dot ratings, custom fields per template, photo attachments Q&A β€” questions with best-answer selection Discussions β€” open threads with nested replies Block comments β€” inline comment panels for specific sections on a page Guest posting β€” with optional email requirement Moderation β€” approval queues, reports, stop-word filtering Gamification β€” points, ranks, badges, leaderboards REST API β€” via VoxApi submodule Admin section β€” browse, filter, approve/reject/remove content; configure per template; manage ranks and badges Screenshots One or multiple widgets per page, combinable into tabs. Ships with an optional demo with restaurant, hotel, and product sample data. Requirements: ProcessWire 3.0+, PHP 8.0+ MIT License.
  24. Yesterday
  25. I think the error message is pretty straightforward in this case: "Array and string offset access syntax with curly braces is no longer supported" On line 3899 from your excerpt, a variable called "str" (which I assume holds a String value), is extracting an offset using curly braces, something that much older versions of PHP supported, but has been deprecated for awhile now. How old is the ProcessWire version that you are using? From checking Github and looking at my own sites, the MarkupHTMLPurifier module is currently at version 4.9.7, is included in the core so does not need to be installed separately, and hasn't been updated in over 4 years (the Markdown README was updated 2 years ago). If you upgraded the module separate from the rest of the core, it's entirely possible that there are incompatibilities due to not all core modules being updated simultaneously, thus the problem(s) you're experiencing with text in a textarea field.
  26. Since updating MarkupHTMLPurifier (1.0.3) I get an error when puttng text in a textarea field: Compile Error Array and string offset access syntax with curly braces is no longer supported 3889: // codepoints. Instead of having to convert back into UTF-8, we've 3890: // decided to directly append valid UTF-8 characters onto a string 3891: // $out once they're done. $char accumulates raw bytes, while $mUcs4 3892: // turns into the Unicode code point, so there's some redundancy. 3893: 3894: $out = ''; 3895: $char = ''; 3896: 3897: $len = strlen($str); 3898: for ($i = 0; $i < $len; $i++) { 3899: $in = ord($str{$i}); 3900: $char .= $str[$i]; // append byte to char 3901: if (0 == $mState) { 3902: // When mState is zero we expect either a US-ASCII character 3903: // or a multi-octet sequence. It also happens when I edit the field in previous pages. What could be causing this?
  1. Load more activity
Γ—
Γ—
  • Create New...