One thing to improve Phoenix
- burt
- Core Team
- Posts: 4550
- Joined: Tue Oct 29, 2019 9:37 am
- Phoenix Version: v1.1.0.8
- : Buy Me A Beverage
- Has thanked: 252 times
- Been thanked: 412 times
One thing to improve Phoenix
If you have an idea, please let me know that ONE thing you have always thought might improve the Phoenix software or improve the wider Phoenix ecosphere. I don't have much time available for big changes, but I am open to any and all ideas.
-
frankl
- Builder
- Posts: 159
- Joined: Tue Feb 23, 2021 8:39 pm
- Phoenix Version: v1.1.0.4
- Has thanked: 17 times
- Been thanked: 25 times
Re: One thing to improve Phoenix
Tabbed customers page in admin? Should be the same as products and orders
Check out my addons - app.php/addons/author/frankl/contributions
-
frankl
- Builder
- Posts: 159
- Joined: Tue Feb 23, 2021 8:39 pm
- Phoenix Version: v1.1.0.4
- Has thanked: 17 times
- Been thanked: 25 times
Re: One thing to improve Phoenix
Maybe also a way to select the way emails are sent?
sendmail
smtp
mailchimp
mailerlite
active campaign
etc
Probably a huge job
sendmail
smtp
mailchimp
mailerlite
active campaign
etc
Probably a huge job
Check out my addons - app.php/addons/author/frankl/contributions
- burt
- Core Team
- Posts: 4550
- Joined: Tue Oct 29, 2019 9:37 am
- Phoenix Version: v1.1.0.8
- : Buy Me A Beverage
- Has thanked: 252 times
- Been thanked: 412 times
- burt
- Core Team
- Posts: 4550
- Joined: Tue Oct 29, 2019 9:37 am
- Phoenix Version: v1.1.0.8
- : Buy Me A Beverage
- Has thanked: 252 times
- Been thanked: 412 times
Re: One thing to improve Phoenix
Yes, that would be a task. Do-able, as all tasks are, but not straightforward at all.
Certainly would not want to attempt this as part of the "usual schedule".
From memory;
sendmail is more or less the default
smtp (admin I think has some stuff related to it, but user needs to add a free addon, unsure of historical reasoning)
mailchimp (newsletter isn't it? maybe mandrill, which I have worked with in the pasat, but quite a few years back
mailerlite and active campaign I am unaware of. Active campaign sounds newslettery?
I am not here to build for you.
I am here to build with you. Let's help each other.
I am here to build with you. Let's help each other.
-
frankl
- Builder
- Posts: 159
- Joined: Tue Feb 23, 2021 8:39 pm
- Phoenix Version: v1.1.0.4
- Has thanked: 17 times
- Been thanked: 25 times
Re: One thing to improve Phoenix
I use Mandrill (now called Mailchimp Transactional) for order updates etc which I find more reliable delivery wise than sendmail. I don't use Mailchimp for newsletters through Phoenix Cart Admin.
It wasn't too difficult, just added a simple mailchimp connector
and created new notification modules, for example:
Plus a template and language file for each of course
It wasn't too difficult, just added a simple mailchimp connector
Code: Select all
<?php
class MailchimpTransactional {
private $api_key;
private $api_url = 'https://mandrillapp.com/api/1.0/messages/send.json';
public function __construct() {
if (!defined('MODULE_HEADER_TAGS_MAILCHIMP_TRANSACTIONAL_API_KEY')) {
throw new Exception('MODULE_HEADER_TAGS_MAILCHIMP_TRANSACTIONAL_API_KEY is not defined.');
}
$this->api_key = MODULE_HEADER_TAGS_MAILCHIMP_TRANSACTIONAL_API_KEY;
}
public function sendEmail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address, $attachments = []) {
$postData = [
'key' => $this->api_key,
'message' => [
'from_email' => $from_email_address,
'from_name' => $from_email_name,
'subject' => $email_subject,
'html' => $email_text,
'to' => [
[
'email' => $to_email_address,
'name' => $to_name,
'type' => 'to'
]
]
]
];
if (!empty($attachments)) {
foreach ($attachments as $attachment) {
$postData['message']['attachments'][] = $attachment;
}
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
$responseArray = json_decode($response, true);
if (isset($responseArray[0]['status']) && $responseArray[0]['status'] === 'sent') {
return ['success' => true, 'message' => 'Email sent successfully.'];
} else {
return ['success' => false, 'message' => 'Error sending email: ' . json_encode($responseArray)];
}
} else {
return ['success' => false, 'message' => 'HTTP Error: ' . $httpCode . ' - ' . $response];
}
}
}
Code: Select all
<?php
/*
Mailchimp Transactional for Phoenix Cart
Copyright (c) 2025 F. Ludriks
Released under the GNU General Public License
*/
class n_password_forgotten_mailchimp extends abstract_module {
const CONFIG_KEY_BASE = 'MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_';
const TRIGGERS = [ 'password_forgotten' ];
const REQUIRES = [ 'email_address' ];
public function notify($data) {
$mailer = new MailchimpTransactional;
ob_start();
include Guarantor::ensure_global('Template')->map(__FILE__);
echo $GLOBALS['hooks']->cat('passwordForgottenNotification');
$response = $mailer->sendEmail($data['name'], $data['email'], sprintf(MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_SUBJECT, STORE_NAME), ob_get_clean(), STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);
return json_encode($response);
}
protected function get_parameters() {
return [
static::CONFIG_KEY_BASE . 'STATUS' => [
'title' => 'Enable Password Forgotten Notification module',
'value' => 'True',
'desc' => 'Do you want to add the module to your shop?',
'set_func' => "Config::select_one(['True', 'False'], ",
],
];
}
}Code: Select all
<?php
$output = '<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Password Forgotten - ' . STORE_NAME . '</title>
</head>
<body style="margin: 0; padding: 0; background-color: #f4f4f4;">
<table width="100%" cellspacing="0" cellpadding="0" border="0" bgcolor="#f4f4f4">
<tr>
<td align="center">
<table width="600" cellspacing="0" cellpadding="20" border="0" bgcolor="#ffffff" style="border-radius: 10px; box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);">
<!-- Logo -->
<tr>
<td align="center" style="padding: 20px;">
<img src="' . HTTP_SERVER . '/images/' . STORE_LOGO . '" width="200" style="display: block;" alt="' . STORE_NAME . ' Logo">
</td>
</tr>
<!-- Title & Description -->
<tr>
<td align="center" style="font-family: Arial, sans-serif; color: #333333; padding: 20px;">
<h1 style="margin: 0; font-size: 24px;">'
. sprintf(MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_TITLE, $data['name']) .
'</h1>
<p style="margin: 15px 0 25px 0; font-size: 16px; color: #555555;">'
. nl2br(sprintf(MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_RESET_BODY, '')) .
'</p>
<!-- Reset Password Button -->
<table cellspacing="0" cellpadding="0" border="0" align="center">
<tr>
<td align="center" bgcolor="#198754" style="border-radius: 6px;">
<a href="' . htmlspecialchars($data['reset_url'], ENT_QUOTES, 'UTF-8') . '"
target="_blank"
style="display:inline-block;padding:14px 28px;font-size:16px;font-family:Arial,sans-serif;color:#ffffff;text-decoration:none;font-weight:bold;border-radius:6px;">
Reset Your Password
</a>
</td>
</tr>
</table>
<p style="margin-top: 15px; font-size: 13px; color: #999999;">
Or copy and paste this link into your browser:<br>
<a href="' . htmlspecialchars($data['reset_url'], ENT_QUOTES, 'UTF-8') . '"
style="color:#007bff; word-break: break-all;">'
. htmlspecialchars($data['reset_url'], ENT_QUOTES, 'UTF-8') .
'</a>
</p>
<p style="margin-top: 25px; font-size: 14px; color: #777777;">
This link will expire after 24 hours or once your password has been changed.
</p>
<p style="margin-top: 25px; font-size: 14px; color: #777777;">
' . MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_IGNORE . '
</p>
</td>
</tr>
<!-- Contact & Footer -->
<tr>
<td align="center" style="font-family: Arial, sans-serif; color: #555555; font-size: 14px;">
<p>If you have any questions, please reply to this email.</p>
<p>' . STORE_NAME . ' • ABN: ' . STORE_TAX_ID . ' • ' . STORE_ADDRESS . ' • ' . STORE_PHONE . '</p>
<p><a href="' . HTTP_SERVER . '/contact_us.php" style="color: #007bff; text-decoration: none;">Need help? Contact Us</a></p>
</td>
</tr>
<tr>
<td align="center" bgcolor="#333333" style="font-family: Arial, sans-serif; color: #ffffff; font-size: 14px; padding: 10px; border-radius: 0 0 10px 10px;">
<p>Thank you for shopping with us!</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>';
echo $output;Code: Select all
<?php
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_TEXT_TITLE = 'Password Forgotten for Mailchimp';
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_TEXT_DESCRIPTION = 'Send a notification when customer needs a password reset.';
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_SUBJECT = '%s - New Password';
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_TITLE = 'Hello %s' . "\n\n";
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_RESET_BODY = 'A new password has been requested for your profile at ' . STORE_NAME . '.' . "\n\n" . 'Please follow this personal link to securely change your password:' . "\n\n";
const MODULE_NOTIFICATIONS_PASSWORD_FORGOTTEN_MAILCHIMP_IGNORE = 'Please ignore if it wasn\'t you that requested to change your password.' . "\n\n";
Check out my addons - app.php/addons/author/frankl/contributions
-
frankl
- Builder
- Posts: 159
- Joined: Tue Feb 23, 2021 8:39 pm
- Phoenix Version: v1.1.0.4
- Has thanked: 17 times
- Been thanked: 25 times
Re: One thing to improve Phoenix
This is what the customer receives
You do not have the required permissions to view the files attached to this post.
Check out my addons - app.php/addons/author/frankl/contributions
- Pierre_P
- Contributor
- Posts: 144
- Joined: Fri Mar 12, 2021 5:06 am
- Phoenix Version: v1.1.0.6
- Has thanked: 21 times
- Been thanked: 11 times
Re: One thing to improve Phoenix
One thing to improve in my opinion is the process for a new installation.
Installing default settings becomes a nightmare for any user when they first reach the admin side and they see
all the settings is set so specific American standards.
As each user is unique, how about adding a new page for changing the default settings like country, zones, currencies and a whole list that can be added onto during install wizard?
This upfront configuration would significantly reduce the frustration new users could experience trying to locate and modify scattered settings after installation pondering on what to do next.
Consider this: Phoenix (like any other cart) is essentially as complex as setting up accounting software - you see all the features but none is making sense yet.
Users need clear guidance on how to configure it properly from the start. Without this, frustration and uncertainty can derail adoption before users even get their store running.
A guided setup would help users understand the platform's structure while ensuring their store is properly configured for their market from day one.
Installing default settings becomes a nightmare for any user when they first reach the admin side and they see
all the settings is set so specific American standards.
As each user is unique, how about adding a new page for changing the default settings like country, zones, currencies and a whole list that can be added onto during install wizard?
This upfront configuration would significantly reduce the frustration new users could experience trying to locate and modify scattered settings after installation pondering on what to do next.
Consider this: Phoenix (like any other cart) is essentially as complex as setting up accounting software - you see all the features but none is making sense yet.
Users need clear guidance on how to configure it properly from the start. Without this, frustration and uncertainty can derail adoption before users even get their store running.
A guided setup would help users understand the platform's structure while ensuring their store is properly configured for their market from day one.
-
frankl
- Builder
- Posts: 159
- Joined: Tue Feb 23, 2021 8:39 pm
- Phoenix Version: v1.1.0.4
- Has thanked: 17 times
- Been thanked: 25 times
Re: One thing to improve Phoenix
Wow, awesome!
Check out my addons - app.php/addons/author/frankl/contributions
-
Omar_one
- Senior Contributor
- Posts: 676
- Joined: Fri Oct 25, 2019 5:06 pm
- Phoenix Version: v1.0.8.16
- Has thanked: 100 times
- Been thanked: 56 times
Re: One thing to improve Phoenix
on the old days we used
- Mailchimp v3 add-on created by @burt (Built for Community Responsive) I still have the zip files
(not working phoenixcart).
- Mailchimp newsletter Everywhere for footer box, we still have it installed on v1.08.16.
There is mailbeez module https://www.mailbeez.com/documentation/ ... CE-Phoenix I haven't tried.
- Mailchimp v3 add-on created by @burt (Built for Community Responsive) I still have the zip files
- Mailchimp newsletter Everywhere for footer box, we still have it installed on v1.08.16.
There is mailbeez module https://www.mailbeez.com/documentation/ ... CE-Phoenix I haven't tried.
Last edited by Omar_one on Tue Feb 17, 2026 9:52 am, edited 1 time in total.