Posts by JayW

    I had honeypot and askimet but just ended up getting a lot of spam.

    Personally I avoid Google Recaptcha. No need to invite Google into your form submissions.

    It's possible to make your own anti-spam, using combinations of the honeypot field, javascript and other methods.

    I solved spam submissions on one client's contact form by pre-filling the honeypot field with a value, then looking for the string "http" in the textarea field on blur. Only if the string is not found does the honeypot field get cleared via javascript. Pretty much all spam contains links, and the client was never expecting or wanting people to add links to this field.

    This is a highly effective but brutal approach. No spam-bot will clear the honeypot field but populate others. So it's a reverse approach to the intended use of honeypot, but I found it works extremely well if you don't mind culling all messages containing "http".

    But on another site, I used an different approach for member sign-ups. Splitting the form into two pages. The first page uses a standard Perch form, with basic question or two, and javascript-only submit button. The form's action points to second page containing the actual member sign-up form. On the second page, in PHP you examine the POST data, and determine if you trust the submission. You can look for all kinds of things, or ask the user anything on first page, such as "are you a robot?", asking the user to type "no". Or you can ask them any kind of question that is relevant to the purpose of the form, or some easy maths question or anything. I used "what country are you in" for a form expecting submissions from one country only. On the second page, examine the POST data and go from there in how you handle things. You could for example re-direct to a third form for "somewhat untrusted" so they require manual approval for sign-ups.

    So many possibilities to make your own anti-spam methods without using third part services. Spam bots are dumb. It's not hard to out-smart them with very simple questions.

    I hope someone can help me out!

    > "Sending welcome e-mails with the setting "New members require approval" turned off."

    Simply click save on the member's detail page with the welcome email checkbox checked. Their status needs to be active.

    > "Preventing auto-login when a new user registers."

    In the member form settings, check "New members require approval".

    > "Any way of using verification tokens/links for new members. I have tried fiddling around with Pipit Members, but unfortunately without any luck. The Pipit documentation seems to be very short."

    Yes the pipit_members docs are missing some details. I have it working and it's very useful, but there's a few things to be aware of.

    It's important to know the verification is not "secure", as mentioned by Hussein on Github. It means you shouldn't use the verification to grant members any more privileges than unverified members. Treat it like a minor signal. In my case, I use it as one of many signals to verify member integrity. The member gets a green tick on their profile page, which looks nice because who doesn't like a green tick!

    Things missing from the pipit_members docs that weren't obvious to me:

    You need to add a "verify.html" template to your /perch/templates/members/emails folder. In that template, your verification link will look something like below... note the id of the token.

    https://<perch:email id="http_host" />/member-profile/verify-email?token=<perch:email id="verify_token">

    The form which sends the email can be called like any form...


    And that form lives in templates/members/forms, and what it looks like is in the pipit_members docs.

    I ended up adding a "pending" tag based on both the 10 minute timer, and whether someone has clicked the email link, and doing a few extra things to make it all run smoothly, but that's optional.

    The best thing about pipit_members is how the member doesn't need to log out and back in to see any updated tag assignments. Also being able to query an individual member by email address to check if they have a tag is also a game-changer over the basic members app. It means you can build member admin pages separate from Perch control panel for members you've assigned as staff for example. But note there's a minor bug in the app (I think) which causes an error if you search by member email instead of member id... So for example :

    if( pipit_members_has_tag('email-verified',$member_email) ) {

    This caused a server error for me, so instead you can first find the member, then id and use that instead of email :

    $the_member = pipit_members_find( $member_email );


    $the_member_id = $the_member['memberID'];

    then the below will work without error...

    if( pipit_members_has_tag('email-verified',$the_member_id) ) {

    Even though the Members app is limited, once you add pipit_members, you can build a lot of things on top for managing tags and doing interesting things with member account profiles and different member tiers. Importantly, you can build things without going too deep into PHP apart from a few conditional statements etc.

    Currently looking at ExpressionEngine. Just from a quick scan it looks a bit similar to Perch. The cost of support looks a bit steep though.

    I can't speak for latest version, but I worked with a previous Expression Engine which I didn't like. I think it was version 2 or 3. I understand it's received major updates since then and is open source.

    I found the channels model confusing, not intuitive. The interface was not great. It was a site I inherited at work, not one I built. I rebuilt the site in Perch Runway and its still going strong. But a CMS choice for one person might not be good for another, and it all depends on project requirements and how much you like working with it. I didn't actually know that Craft was so expensive with the e-commerce option... that actually sounds intriguing (mentioned in other thread).

    Vapid looks source with a small group of contributors. That would be a better model for Perch than the current astonishing levels of neglect.

    LOL I'll take neglect over crashing and burning....

    You just never know what will live and what will die.

    "Sadly, the Vapid hosting service and CMS platform have been retired. Thank you, though, for your support and interest. Please check back down the road for the next chapter."

    I'm just working on a Snipcart + Perch thing so I'd be very interested to see that.

    Sure, I'm still in test mode but the build is close to done and I'll share what I can when ready. The general technique is more important than the actual code I wrote.

    There are limits of course, but it's all about working within the limits!

    I'm assembling the snipcart options code during the collection item function call before it's rendered. So basically the snipcart code starts out as a blank hidden collection item field. This allows all kinds of pre-processing of the price to happen such as things related to membership login, server time, URL components, or whatever else. The trick is taking advantage of Snipcart's custom data values, the "value" of which can be changed with javascript. The final rendered snipcart button code may contain quite a lot of data in the "data-item-custom1-options" (this is the limit I mentioned), but I've found it works fine even when heavily populated with many options... I have about 60 or so options, but I assume you could take it further.

    Obviously in the cart, you would hide the options drop down. so people only see the main product they ordered, and a one-line summary of the options they chose. If they wish to adjust options, they'd do it from the page containing your web app and HTML forms - which is not a problem because the cart is just an overlay on that page anyway. This allows users to dynamically assemble the product options before the cart, in a manner that you see fit. And that's just one collection item.. you can use standard list-detail to replicate this over your other products.

    It points to the power of perch collection items, and Snipcart's flexible system for handling the data. This is what I mean when you can find ways to use Perch as is, and make interesting things despite lagging updates or minimal communication!

    All the best.

    How can a product which obviously is rudderless and with no communication be a good option?

    Because of what you make with it. Perch gives you a database and a few other things, and away you go. It's software you can build stuff with.

    You admitted to being "guilty of re-using licenses" in earlier post. Now you're angry about not being able to transfer those licenses.

    You said you're sitting on "16 unused licenses". Why buy so many in advance? If you used them previously with clients, then consider that cost like a subscription, now expired.

    Basic Perch is cheap... $69. I've seen one-trick wordpress plugins cost more per year. Like WooCommerce's "Table Rate Shipping" $99 per year. It gives a few extra shipping options, nothing more.

    New Perch owners since January. It's not *that* long. It only seems a long time because Drew was unhappy for so long and wanting to move on.

    Regarding "recommending Perch" to clients. Most non-technical clients won't care about the software name. You're selling them a dynamic server-rendered CMS solution using a LAMP platform. Personally I hide all Perch branding. I'd never recommend anything other than Runway if you're a developer. Perch basic is better for lightweight solo projects rather than building things for clients. But even then I'd use Runway.

    Maybe you should direct your license buyers to the Perch website to pay the $69.

    Isn't the process to contact with queries to do with licenses? Did you try that email?

    Runway is still good. If you have any licenses I'd hang on to them! Or if you have normal Perch licenses, maybe they'll give you a good deal on updating to Runway.

    Runway is still a good option for business sites including e-commerce and other things. It allows you to focus on Javascript web apps if you like that, or HTML and CSS mainly... it doesn't bully you into any way of working unlike other systems.

    I use Github to manage Runway website code, via the Github Desktop well. I hate command lines! I will never ever use a command line. Ever!

    Snipcart works really well with collection items I've discovered. I won't be using Perch Shop again even if they update it. With Snipcart it's possible to have event-like products where the price is influenced by both collection item data and dynamic user input on the product page, including things like calendar input in relation to server time, and anything you like. Because Runway makes it easy to manipulate the output before it's rendered, then Snipcart allows dynamic incremental pricing changes via javascript. The combo of these two factors opens many possible product types that Perch Shop couldn't cater for. I'll share my code later in show-tell section.

    The modern web is using this "set of tools" approach more. Runway is still a solid option at the center of that approach, bringing it all together with its somewhat awkward and irritating interface! I still hope for V4 one day, but I think it may need a developer who wants to do it...

    I don't think there's a core developer right now who wants to work on it. Let's face it, it will need one dedicated senior dev who owns it and stays up late obsessively working on it because they want to make a good product. This is missing right now. If "dark mode" is all they can come up with, it is telling that we're missing a core developer. All we have are these community moderators playing musical chairs!

    I think it needs to check for duplicate SKUs and not allow you to create two which are the same

    That sounds like uncommon user error.

    SKU's are widely understood as needing to be unique, it's the whole point. Entering "GRE" for both green and grey sounds like someone needs to type "what is an SKU" into Google! :-) We need less distractions towards V4, not more!

    Disabling the first <option> with the disabled attribute allows you to have filler text that will force users to pick an option and ensure there is a message available to inform the user what it is they're supposed to do.

    Good to know that "!" disables an option. Personally I wouldn't use that for placeholder or instruction text, but it depends on the project.

    The HTML input label's job is to inform the user what to do for that input. If you need to force users to pick an option, you can use "allowempty" in combination with "required". The user will not be able to submit the form without selecting an option. But each to their own!

    Regarding "next", it replaces the word "action" in your perch form tag. This allows you to advance to other pages including the same page. You can use query strings... so for example "next=/member-profile?updated=1". When users edit their profile and click save, you can look for that query and present a message "details successfully updated" on the same page.

    This isn't the whole solution, but is a piece of the puzzle related to members. It may be enough for you figure out the rest in relation to shop.

    In templates > members > member.html, add your custom fields.

    The default member.html template looks like this:

    1. <perch:members type="text" id="first_name" label="First name" listing="true" order="1" />
    2. <perch:members type="text" id="last_name" label="Last name" listing="true" order="2" />

    Add your custom fields to this file:

    1. <perch:members type="text" id="pickup_location" label="Pickup location" listing="true" order="3" />

    Now your custom fields will appear in the control panel for each member.

    BTW I don't think you need an action in your perch form tag, why do you have that? You can use next="/shop/checkout/" if you need to advance the form to a specific page on submit.

    That way I might finally get an answer.

    Your question asks if there's "any news", which is answered by lack of news.

    It's obvious what you're doing, but thought I'd point out that technically your question can be answered without anyone saying "there is no news". :-)

    The business team and development team are passing it back and forth, they may be stuck in an infinite loop! Send the jaws of life and rubber gloves!

    Meanwhile, I don't care.... I can wait or just stick with current Runway. I've just discovered Snipcart from suggestions in other threads. Works very well with collection items. It's what I imagined a good shop app, something that was more drop-in than "whole store". I like the elegance of the vue.js templating overrides of snipcart and the degree of control. The possibilities when combined with Perch collections is actually exciting. The separation of content and e-commerce makes more sense to me now than ever.

    So I can't agree with JamieT's "look elsewhere" for core Perch, but absolutely for Perch Shop - which was a free app anyway, and does the basics, but is too limited and outdated.

    One option is to add this to your function:

    1. 'skip-template' => true,'return-html' => true,

    to stop it displaying on page.

    Then right after the function, do this....

    1. if(isset($department[0])) {
    2.     $dept_name = $department[0]['department'];
    3. }

    Then you can use $dept_name in your layout

    1. perch_layout('global.header', array(
    2.     'bodyclass' => $dept_name,
    3. ));

    Minor thing, but I used "bodyclass" instead of "page" to avoid confusing with generic names.

    ...the ability for collections to be indexed

    This sounds good, I'd like to know more. Does it mean when querying a perch collection, I could add a flag in the function to use the static index if available and ignore hitting the database? I don't quite understand what format the index is.... is it like a json file that is generated, or are we talking about the whole HTML output from the collection template? Nothing beats the speed of static files so the closer we get to that the better.

    I quite like "Offline Pages Pro", it's an old iOS app that's been around for years. However the saved site is only viewable within the Offline Pages app. But it does a good job, and it's great having the site offline on an iPad. It also has other functions for saving pages as PDF files and things like that.

    The nice thing about Offline Pages Pro is you can choose the link depth, max pages and other settings to fine-tune what is saved offline. Things like "add to cart" and form submissions will not work offline, as expected. No doubt there's similar apps or browser extensions for Windows that do this.

    I would thumbs-up all posts and suggestions above, so I will thumbs-up none, it's the same thing. Using likes to evaluate popularity of the suggestion won't work. You should be able to figure out what is or isn't worth doing without number of likes on a forum post.

    - New kind of "shop modules", so for example you could decide to sell a regular collection item by dropping in some perch e-commerce tags, and hooking up whatever values from the collection item might populate the invoice. I don't see why the concept needs to be a "shop" vs "buy this thing on the page".

    - Instead of "better UI", how about better customisation and control of the UI, so we can easily make it look how we want? Please don't try to paint a picture that everyone loves, it won't happen. Just provide good interface options.

    - When limiting sub-page template choice with "may use these master pages" in page settings, it would be nice if as the admin, I could see the whole list when creating sub-pages, and choose any master page I liked, leaving only Editor roles with the restricted choice. So an override in settings for admin roles to ignore the "may use these master pages" setting for sub-page template choice. Easy!

    - And finally for fun... NOT copy Wordpress for anything! That place is out of control. They allow plugin developers to hook into the "deactivate plugin" button, so instead of deactivation you get marketing spin twisting your arm. Or not allowing deactivation unless you submit a form to the developer with reasons why, without any "skip this crap" button. Sometimes you need a plugin to hide the annoyances of other plugins. "Pro" SEO tools like Yoast inserting ads for themselves in your HTML? Don't worry, there's a plugin to stop that! But then read the comments of that plugin, whoops it stopped working because Yoast changed something... Please don't make Perch "like Wordpress", where devs charge $60 per year for a "search box" or $50 per year for an official plugin that "bundles products". Wordpress is not an inspiration. The other day Wordpress official attempted to dramatise the fact I hadn't renewed a certain minor plugin or extension of theirs, with a "tick tock" banner expressing that time is counting down to an expired subscription - the implication that bad things will happen unless I pay another $60 for some minor point update for a minor shipping label plugin. Please don't make Perch "like Wordpress"! /rant

    Can we just sell Runway to hus_hmd ?!! Or add him to core team? That would be cool!

    In a twisted way the update freeze is beneficial, it's so damn predictable now lol! Installing runway is a bit like bolting a machine to the concrete floor, it won't move.