Не сохраняется ли метка времени, когда кто-то подписывается на рассылку новостей?
В таблице newsletter_subscriber
есть поле change_status_at
, которое является TIMESTAMP
. Однако, похоже, он не заполняется при подписке на рассылку новостей или даже при изменении статуса подписки.
1 answers
Похоже, что поле change_status_at
предназначено для хранения последней даты подписки/отмены подписки. Однако это поле никогда не используется и не обновляется в Magento. (Возможно, ошибка в Magento).
Если вы проверите ядро, вы можете узнать, что это поле используется для отображения в разделе "Рассылка новостей для клиентов" (в разделе "Администратор" в разделе Customer > Manage Customer
). Однако, поскольку это поле никогда не обновляется при обработке подписки в Magento, приведенный ниже раздел никогда не отображается в клиенте раздел.
#Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter::initForm()
if($changedDate = $this->getStatusChangedDate()) {
$fieldset->addField('change_status_date', 'label',
array(
'label' => $subscriber->isSubscribed() ? Mage::helper('customer')->__('Last Date Subscribed') : Mage::helper('customer')->__('Last Date Unsubscribed'),
'value' => $changedDate,
'bold' => true
)
);
}
И Mage_Adminhtml_Block_Customer_Edit_Tab_Newsletter::getStatusChangedDate()
выглядит так.
public function getStatusChangedDate()
{
$subscriber = Mage::registry('subscriber');
if($subscriber->getChangeStatusAt()) {
return $this->formatDate(
$subscriber->getChangeStatusAt(),
Mage_Core_Model_Locale::FORMAT_TYPE_MEDIUM, true
);
}
return null;
}
Здесь $subscriber->getChangeStatusAt()
всегда возвращайте null
для каждого клиента. Следовательно, условие не выполняется, и метод возвращает значение null
. Таким образом, поле для отображения Last Date of subscription/Unsubscription
никогда не отображается.
Однако вы можете использовать преимущество этого поля, добавив простую строку кода внутри Mage_Newsletter_Model_Subscriber::subscribe()
. Вы просто хотите сделать это до того, как будет выполнено действие $this->save()
.
#Mage_Newsletter_Model_Subscriber::subscribe(), before save() action
$this->setChangeStatusAt(date('Y-m-d'));