Jump to content

kongondo

PW-Moderators
  • Posts

    7,529
  • Joined

  • Last visited

  • Days Won

    160

Everything posted by kongondo

  1. There is no such plan currently. With respect to ProcessWire fields, are you perhaps referring to complex fields such as repeaters? Apart from such fields, I can't think of any other reason you would need a ProcessWire field for your products. As an aside, to display Padloper products and to have a 'URL for them' you would need to use a template with URL segments, e.g. /products/my-pl-product where products is a ProcessWire page and /my-pl-product is the segment referring to the Padloper product. These will all be covered in the documentation. Yes but they are connected. In a sense, PL users are an extension of PW users. If your store/shop does not require users to register/log in, then such users will not be PW users and neither PL users. Those are considered guest checkouts. Only their order records are kept as per the law/regulations. If they are registered users, then they will be PW users, with authentication processed and passwords stored by PW in the usual manner. They will also be PL users to the extent that they have extra fields/properties, e.g. addresses, tax exemptions, etc. The extra data is stored on the PL side, not PW.
  2. Hi @ro-bo, Yes it is. See the topic below for starters.
  3. Exactly :-).
  4. In programming, it is called variable scope. This throws an error because you are using the variable $modules inside the anonymous function and that function does not know what $modules is :-). This should work: <?php $forms->addHook('FormBuilderProcessor::emailFormReady', function($e) { //$pdf = $modules->get('RockPdf'); <= DOES NOT WORK. function does not know 'modules' $pdf = wire('modules')->get('RockPdf');// <= WORKS. function knows GLOBAL FUNCTION wire() $pdf->write('TEST'); $pdf->save('./generated_pdfs/' . date('yy-m-d_H_i') . '.pdf'); } ); PHP variable scope https://www.php.net/manual/en/language.variables.scope.php wire() Function https://processwire.com/api/ref/functions/wire/
  5. I will send out an expression of interest request nearer the time. I haven't yet decided on a criteria for selection. Current plan is PayPal IPN due to its multi-notifications types. However, I may also do PDT, but not 100% sure at this time. No decisions made yet regarding Stripe's implementation. All frontend implementation is up to the developer. You will have the API at your disposal to do whatever you need to do. In the backend/model, orders can have different status (paid, unpaid, complete, partial, etc). Order line items also have individual status (returned, delayed, refunded, etc). This means you should be able to implement a pre-order feature yourself by, for example, marking an order as unpaid, in progress, etc. Padloper 2 does not render anything in the frontend. It is like ProcessWire. There will be no more in-built Padloper templates. You implement Padloper 2 however you wish using the API. I will, however, as part of the technical documentation, write a tutorial on ajaxifying the frontend. In addition, a separate frontend commercial module (fully functional frontend shop) is in the works. Good question :-). Padloper 2 does not utilise a single ProcessWire field, nor any custom ProcessWire fields, nor any ProcessWire pages (except just the one for the Padloper Process Module). All data is stored in custom Padloper tables. Having said that, it uses ProcessWire selectors just the same way you are used to, offering the same security and ease of use you are used to. You won't have to learn a new syntax. In addition, it is fully multilingual (descriptions, titles, etc). I plan to do a write-up of this when I'm done, a sort of 'the making of Padloper 2', the iterations, decision made, etc. No, you won't be able to do this. Not this way. There are no (ProcessWire) pages in Padloper 2 :-). That said you would still be able to use hooks. You've got some very interesting (albeit very advanced) ideas/thoughts there. Whilst not yet planned, when the dust settles, I'd like to further discuss/explore some of these with you. I cannot make any promises as to the outcome. Yes. There are four types of products (housed under Shipment Type). Physical Products that require shipping. Physical Products that do not require shipping (POS, etc). Digital Products. Products that are Events or Services (e.g., booking system). ---------------------- I hope I have managed to answer all your queries. I decided to just do it inline. I might reference some of the responses in the first post if I need to. Thanks.
  6. Good to know; excellent!
  7. Curly braces...around {$item->images->first()->url} <?php <a rel='tag' href='$item->url'>#$item->title <img src='{$item->images->first()->url}'></a>";
  8. I need to sleep and I need to test this..ignore previous post ?.
  9. This doesn't look right. <?php $item->images()->url; From the looks of it, $item is a page. You are then calling a method on images() which does not exist for Page objects. If your field is called images, then change it to this if it is a single image field: <?php $item->images->url; OR, if it is a multi-image field: <?php $item->images->first()->url;
  10. The answer is right there in the documentation you linked to ?. It's a hidden folder...maybe that's why you couldn't find it?
  11. ?. Please see my post above yours. If your purchase date is more than 12 months, then the link has expired. Please confirm that and let me know. I can send you the relevant file to update via email. For anything involving order numbers etc, please either send me an email or a PM. Thanks.
  12. Hi @entschleunigung, Is this a new install of Media Manager? Did you use the updated Media Manager? It still says version 12 but grab it from your download link and install that version. It resolves the issue.
  13. @cjx2240 This depends on the selector you use to grab those pages. In the example, a $post->get is used, meaning it will be retrieved, by-passing restrictions. Are you using similar code? Please see documentation: https://processwire.com/docs/selectors/#access_control ps: I am not sure if ->child is also get-like.
  14. Nice find Robin! @humanafterall, I've tested FieldtypeURLLanguage. It works like language fields with inputs for all available languages. It would work in your case but will obviously require input for all/required languages by your editors.
  15. Now that I think about it more, it seems that a redirect would suffice as well? I don't know zilch about redirects and SEO if that is not a problem then all we need is for the hook to redirect to the same page in the current language under certain conditions. So, thinking out loud here: We can limit the hook to certain frontend templates, a parent, etc. If condition #1 is met, we check if the current user language is not the default language. If it is, we abort. If condition #2 is met, we check if the requested page is viewable in the current user language. If yes, we redirect to its URL. If not, we do nothing. Having said that, I cannot off the top of my head remember where to hook. Maybe before some page render. I'll have a look, unless somebody else beats me to it ?.
  16. Two options: No template file for the template the children pages use (direct access to a child URL will lead to a 404). Make the children unpublished (accessing children will result in a 404 unless you are logged in and have view rights to those children). In this case, selector should have include=unpublished.
  17. @Max Allan Niklasson, Welcome to the forums. I just had a quick look but you are basically caught in an infinite loop with all those includes. You have this: In MarkupBodyBuilder.module <?php public function init() { include_once __DIR__ . "/vendor/autoload.php"; include_once __DIR__ . "/BodyBuilder.module";// <==== THIS $this->addHookAfter("Fields::save", $this, 'hookWhenFieldSaved'); $this->addHookAfter("Field::getInputfield", $this, 'hookHideTitle'); $this->addHookAfter('Page::renderField', $this, 'hookRenderField'); $this->twig = new Environment(new ArrayLoader(), [ 'autoescape' => false, 'debug' => $this->config->debug ]); $this->twig->addExtension(new DebugExtension()); return parent::init(); } In ProcessBodyBuilder.module <?php public function init() { include_once __DIR__ . "/BodyBuilder.module";// <==== THIS $process = $this->wire('process'); if ("$process" === "$this") { $this->headline($this->moduleInfo['page']['title']); } return parent::init(); } In BodyBuilder.module <?php namespace ProcessWire; use Exception; include_once "MarkupBodyBuilder.module";// <== THIS include_once "ProcessBodyBuilder.module";// <== THIS That is not how you reference other installed modules in ProcessWire; Call them like this where you need them: <?php // inside a class $bodyBuilder = $this->wire('modules')->get('BodyBuilder'); // outside a class // $bodyBuilder = $modules->get('BodyBuilder'); // outside a class but inside a function // $bodyBuilder = wire('modules')->get('BodyBuilder'); More info https://processwire.com/api/ref/module/
  18. That's very doable using ProcessWire. That's a good choice. You can post this as a job in the jobs forum.
  19. This is an interesting problem ?. I don't think it is possible out-of-the-box since having a language active does not prevent access to other languages. Hence, ProcessWire 'respects' the requested URL, as long as it is viewable. Off the top of my head I cannot remember if there is a module out there that solves this problem, but have a look, just in case, especially for modules by Robin S. Otherwise, you'll need a hook or a textformatter module that changes the links on the fly.
  20. Yes. Install MAMP (for MAC), the free version; not MAMP Pro. Welcome to ProcessWire and the forums.
  21. Thanks for reporting back and apologies for the hiccup! I have now updated Media Manager so hopefully this problem will not re-occur for future installs.
  22. Basically, you are doing something like this: <?php namespace ProcessWire; $someVariable->isLoggedin(); // BUT the value of $someVariable is a string, e.g. "some_string" // IT NEEDS to be an object of type User Hence, you get an error since a string cannot have properties or methods (functions). It would have been better to see your code ( your custom login/register system. ) but even without that, what you need to do is to check if $someVariable is an object of type User before calling isLoggedin() on it.
  23. @adrian I think I have managed to resolve the issue in my case. I was using setImportData() to create the file/image fields and my import data contained a fileSchema declaration (set at 7). Removing that entry resolved the issue. I tested on a new install, creating the field using the GUI, using the API (non setImportData() usual method) as well as using setImportData(). I was only able to reproduce the issue as I mention above. I have closed the bug report but please let us know if you are still seeing the issue. Thanks.
×
×
  • Create New...