Placeholder in infoscreen

Phoca Cart - complex e-commerce extension
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Placeholder in infoscreen

Post by Cliffdiver »

Hy,
is it possible to use placeholder values e.g. {iban} in the infoscreen at the end of a place order.
In the backend you can set a custom text in the payment options.
Thanks for any hint.
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: Placeholder in infoscreen

Post by Jan »

Hi, there is no option to translate the variables in info view, but there is option to run own plugin code which will get information about the data (order id, user id, etc).

The event which sends the data to plugin and get modified information is called: onPCVonInfoViewDisplayContent

Jan
If you find Phoca extensions useful, please support the project
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Re: Placeholder in infoscreen

Post by Cliffdiver »

HY Jan,
thanks for the Info.
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Re: Placeholder in infoscreen

Post by Cliffdiver »

I did it now in a very simple way.
Created an override of view->info->default.php

NEar the the call of the paymentInfo

Code: Select all

$paymentDescription = PhocacartPayment::getInfoDescriptionById((int)$this->t['infodata']['payment_id']);
I added the following lines

Code: Select all

$order 		= new PhocacartOrderView();
$common		= $order->getItemCommon($this->t['infodata']['order_id']);
$orderNumber= PhocacartOrder::getOrderNumber($this->t['infodata']['order_id'], $common->date, $common->order_number);
$bas		= $order->getItemBaS($this->t['infodata']['order_id'], 1);
		//$totalBrutto= $order->getItemTotal($orderId, 0, 'brutto');
				
$r = PhocacartText::prepareReplaceText($order, $this->t['infodata']['order_id'], $common, $bas);
$paymentDescription = PhocacartText::completeText($paymentDescription,$r);
After that lines the original code continues

Code: Select all

if ($paymentDescription != '') {
        echo '<div class="ph-info-payment-description">'.HTMLHelper::_('content.prepare', $paymentDescription).'</div>';
    }
Now you can use every placeholder like in the email contents.
For me it was very important to show some paymentinformations,
because sometimes my infomails got filtered by the SPAM-System and my customers don't always know where to find the SPAM-Folder :wink:
Maybe this helps somebody else, or maybe it find its way into the core files.
User avatar
Jan
Phoca Hero
Phoca Hero
Posts: 48402
Joined: 10 Nov 2007, 18:23
Location: Czech Republic
Contact:

Re: Placeholder in infoscreen

Post by Jan »

Hi, thank you for this guide.

Jan
If you find Phoca extensions useful, please support the project
User avatar
Nidzo
Phoca Professional
Phoca Professional
Posts: 387
Joined: 07 Nov 2018, 14:55

Re: Placeholder in infoscreen

Post by Nidzo »

Cliffdiver wrote: 15 Apr 2024, 20:57 I did it now in a very simple way.
Created an override of view->info->default.php

NEar the the call of the paymentInfo

Code: Select all

$paymentDescription = PhocacartPayment::getInfoDescriptionById((int)$this->t['infodata']['payment_id']);
I added the following lines

Code: Select all

$order 		= new PhocacartOrderView();
$common		= $order->getItemCommon($this->t['infodata']['order_id']);
$orderNumber= PhocacartOrder::getOrderNumber($this->t['infodata']['order_id'], $common->date, $common->order_number);
$bas		= $order->getItemBaS($this->t['infodata']['order_id'], 1);
		//$totalBrutto= $order->getItemTotal($orderId, 0, 'brutto');
				
$r = PhocacartText::prepareReplaceText($order, $this->t['infodata']['order_id'], $common, $bas);
$paymentDescription = PhocacartText::completeText($paymentDescription,$r);
After that lines the original code continues

Code: Select all

if ($paymentDescription != '') {
        echo '<div class="ph-info-payment-description">'.HTMLHelper::_('content.prepare', $paymentDescription).'</div>';
    }
Now you can use every placeholder like in the email contents.
For me it was very important to show some paymentinformations,
because sometimes my infomails got filtered by the SPAM-System and my customers don't always know where to find the SPAM-Folder :wink:
Maybe this helps somebody else, or maybe it find its way into the core files.

I followed your instructions but could not reproduce result

Image
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Re: Placeholder in infoscreen

Post by Cliffdiver »

which phoca version do you use?I use phoca 4.0.10 with the customized child template of casiopeia which is called phoca food.
User avatar
Nidzo
Phoca Professional
Phoca Professional
Posts: 387
Joined: 07 Nov 2018, 14:55

Re: Placeholder in infoscreen

Post by Nidzo »

Cliffdiver wrote: 18 May 2024, 18:35 which phoca version do you use?I use phoca 4.0.10 with the customized child template of casiopeia which is called phoca food.
I use Phoca 5.0.0.Beta52 and Joomla 5.1.0. That could be the reason for not working.
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Re: Placeholder in infoscreen

Post by Cliffdiver »

It took me some time, to get a clue, which classes i need and how it works.
I get some idea in the file administrator/libraries/phocacart/order/status.php
There I found the code for the replacement (search for PhocaCartText::prepareReplaceText) and checked, which variables have to be passed over to the class / method.
Cliffdiver
Phoca Member
Phoca Member
Posts: 25
Joined: 05 Apr 2020, 09:10

Re: Placeholder in infoscreen

Post by Cliffdiver »

I just had a look at the code of Phoca 5 and downloaded the BEta 53 which is online since yesterday.
I found a code in the file components/phoca_cart/views/info/tmpl/default.php which looks like the replacement routine (around line 96).
This code is new

Code: Select all

if ($this->t['preparereplace']) {
            $paymentDescription = PhocacartText::completeText($paymentDescription, $this->t['preparereplace'], 1);
        }
Maybe an update from BEta52 to 53 will solve the problem.
Post Reply