Hi,
I want to add a column to the export csv for newsletter subscribers, the column will be the change_status_at. Could someone advise me on how to go about this?
Thanks in advance!
Solved! Go to Solution.
Hello @dave_lynch1,
Please add below code on this file vendor/magento/module-newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="adminhtml.newsletter.subscriber.container">
<block class="Magento\Newsletter\Block\Adminhtml\Subscriber\Grid" name="adminhtml.newslettrer.subscriber.grid" as="grid">
<arguments>
<argument name="id" xsi:type="string">subscriberGrid</argument>
<argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\ResourceModel\Subscriber\Grid\Collection</argument>
<argument name="default_sort" xsi:type="string">subscriber_id</argument>
<argument name="default_dir" xsi:type="string">desc</argument>
<argument name="use_ajax" xsi:type="string">1</argument>
</arguments>
<block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.newslettrer.subscriber.grid.massaction" as="grid.massaction">
<arguments>
<argument name="massaction_id_field" xsi:type="string">subscriber_id</argument>
<argument name="form_field_name" xsi:type="string">subscriber</argument>
<argument name="use_select_all" xsi:type="string">1</argument>
<argument name="options" xsi:type="array">
<item name="unsubscribe" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Unsubscribe</item>
<item name="url" xsi:type="string">*/*/massUnsubscribe</item>
</item>
<item name="delete" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="string">*/*/massDelete</item>
</item>
</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.newslettrer.subscriber.grid.export" as="grid.export">
<arguments>
<argument name="exportTypes" xsi:type="array">
<item name="csv" xsi:type="array">
<item name="urlPath" xsi:type="string">*/*/exportCsv</item>
<item name="label" xsi:type="string" translate="true">CSV</item>
</item>
<item name="excel" xsi:type="array">
<item name="urlPath" xsi:type="string">*/*/exportXml</item>
<item name="label" xsi:type="string" translate="true">Excel XML</item>
</item>
</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.subscriber.grid.columnSet" as="grid.columnSet">
<arguments>
<argument name="id" xsi:type="string">problemGrid</argument>
</arguments>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.subscriber_id" as="subscriber_id">
<arguments>
<argument name="header" xsi:type="string" translate="true">ID</argument>
<argument name="index" xsi:type="string">subscriber_id</argument>
<argument name="header_css_class" xsi:type="string">col-id</argument>
<argument name="column_css_class" xsi:type="string">col-id</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.email" as="email">
<arguments>
<argument name="header" xsi:type="string" translate="true">Email</argument>
<argument name="index" xsi:type="string">subscriber_email</argument>
<argument name="header_css_class" xsi:type="string">col-email</argument>
<argument name="column_css_class" xsi:type="string">ccol-email</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.type" as="type">
<arguments>
<argument name="header" xsi:type="string" translate="true">Type</argument>
<argument name="index" xsi:type="string">type</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="array">
<item name="guest" xsi:type="array">
<item name="value" xsi:type="string">1</item>
<item name="label" xsi:type="string" translate="true">Guest</item>
</item>
<item name="customer" xsi:type="array">
<item name="value" xsi:type="string">2</item>
<item name="label" xsi:type="string" translate="true">Customer</item>
</item>
</argument>
<argument name="header_css_class" xsi:type="string">col-type</argument>
<argument name="column_css_class" xsi:type="string">col-type</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.firstname" as="firstname">
<arguments>
<argument name="header" xsi:type="string" translate="true">Customer First Name</argument>
<argument name="index" xsi:type="string">firstname</argument>
<argument name="default" xsi:type="string">----</argument>
<argument name="header_css_class" xsi:type="string">col-first-name</argument>
<argument name="column_css_class" xsi:type="string">col-first-name</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.lastname" as="lastname">
<arguments>
<argument name="header" xsi:type="string" translate="true">Customer Last Name</argument>
<argument name="index" xsi:type="string">lastname</argument>
<argument name="default" xsi:type="string">----</argument>
<argument name="header_css_class" xsi:type="string">col-last-name</argument>
<argument name="column_css_class" xsi:type="string">col-last-name</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.status" as="status">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status</argument>
<argument name="index" xsi:type="string">subscriber_status</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="array">
<item name="status_not_active" xsi:type="array">
<item name="value" xsi:type="string">2</item>
<item name="label" xsi:type="string" translate="true">Not Activated</item>
</item>
<item name="status_subscribed" xsi:type="array">
<item name="value" xsi:type="string">1</item>
<item name="label" xsi:type="string" translate="true">Subscribed</item>
</item>
<item name="status_unsubscribed" xsi:type="array">
<item name="value" xsi:type="string">3</item>
<item name="label" xsi:type="string" translate="true">Unsubscribed</item>
</item>
<item name="status_unconfirmed" xsi:type="array">
<item name="value" xsi:type="string">4</item>
<item name="label" xsi:type="string" translate="true">Unconfirmed</item>
</item>
</argument>
<argument name="header_css_class" xsi:type="string">col-status</argument>
<argument name="column_css_class" xsi:type="string">col-status</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.change_status_at" as="change_status_at">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status At</argument>
<argument name="type" xsi:type="string">date</argument>
<argument name="timezone" xsi:type="boolean">false</argument>
<argument name="index" xsi:type="string">change_status_at</argument>
<argument name="column_css_class" xsi:type="string">col-date</argument>
<argument name="header_css_class" xsi:type="string">col-date</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.website" as="website">
<arguments>
<argument name="header" xsi:type="string" translate="true">Web Site</argument>
<argument name="index" xsi:type="string">website_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Config\Model\Config\Source\Website\OptionHash"/>
<argument name="header_css_class" xsi:type="string">col-website</argument>
<argument name="column_css_class" xsi:type="string">col-website</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.group" as="group">
<arguments>
<argument name="header" xsi:type="string" translate="true">Store</argument>
<argument name="index" xsi:type="string">group_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\GroupOptionHash"/>
<argument name="header_css_class" xsi:type="string">col-store</argument>
<argument name="column_css_class" xsi:type="string">col-store</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.store" as="store">
<arguments>
<argument name="header" xsi:type="string" translate="true">Store View</argument>
<argument name="index" xsi:type="string">store_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\StoreOptionHash"/>
<argument name="header_css_class" xsi:type="string">col-store-view</argument>
<argument name="column_css_class" xsi:type="string">col-store-view</argument>
</arguments>
</block>
</block>
</block>
</referenceBlock>
</body>
</page>After please run below command in magento root directory
php bin/magento setup:static-content:deploy -f php bin/magento cache:flush php bin/magento cache:clean
Then please export data, You will get change_status_at data in CSV.
Let me know if you have any issue.
--
If my answer is useful, please Accept as Solution & give Kudos
Hello @dave_lynch1
Please replace below code for change_status_at column at line number 134
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.change_status_at" as="change_status_at">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status At</argument>
<argument name="type" xsi:type="string">date</argument>
<argument name="timezone" xsi:type="boolean">false</argument>
<argument name="index" xsi:type="string">change_status_at</argument>
<argument name="column_css_class" xsi:type="string">col-date</argument>
<argument name="header_css_class" xsi:type="string">col-date</argument>
<argument name="format" xsi:type="string">1</argument>
</arguments>
</block>In this code, you can see format node which value 1 - That is a standard date format, You can replace that by below value and you will get an appropriate result for it.
0 - Sep 21, 2018 1 - September 21, 2018 2 - Sep 21, 2018 3 - 9/21/18
After change value, don't forget to run below command in magento root directory
php bin/magento setup:static-content:deploy -f php bin/magento cache:flush php bin/magento cache:clean
--
If my answer is useful, please Accept as Solution & give Kudos
Hello @dave_lynch1,
Please add below code on this file vendor/magento/module-newsletter/view/adminhtml/layout/newsletter_subscriber_block.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="adminhtml.newsletter.subscriber.container">
<block class="Magento\Newsletter\Block\Adminhtml\Subscriber\Grid" name="adminhtml.newslettrer.subscriber.grid" as="grid">
<arguments>
<argument name="id" xsi:type="string">subscriberGrid</argument>
<argument name="dataSource" xsi:type="object">Magento\Newsletter\Model\ResourceModel\Subscriber\Grid\Collection</argument>
<argument name="default_sort" xsi:type="string">subscriber_id</argument>
<argument name="default_dir" xsi:type="string">desc</argument>
<argument name="use_ajax" xsi:type="string">1</argument>
</arguments>
<block class="Magento\Backend\Block\Widget\Grid\Massaction" name="adminhtml.newslettrer.subscriber.grid.massaction" as="grid.massaction">
<arguments>
<argument name="massaction_id_field" xsi:type="string">subscriber_id</argument>
<argument name="form_field_name" xsi:type="string">subscriber</argument>
<argument name="use_select_all" xsi:type="string">1</argument>
<argument name="options" xsi:type="array">
<item name="unsubscribe" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Unsubscribe</item>
<item name="url" xsi:type="string">*/*/massUnsubscribe</item>
</item>
<item name="delete" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="string">*/*/massDelete</item>
</item>
</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Export" name="adminhtml.newslettrer.subscriber.grid.export" as="grid.export">
<arguments>
<argument name="exportTypes" xsi:type="array">
<item name="csv" xsi:type="array">
<item name="urlPath" xsi:type="string">*/*/exportCsv</item>
<item name="label" xsi:type="string" translate="true">CSV</item>
</item>
<item name="excel" xsi:type="array">
<item name="urlPath" xsi:type="string">*/*/exportXml</item>
<item name="label" xsi:type="string" translate="true">Excel XML</item>
</item>
</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\ColumnSet" name="adminhtml.newslettrer.subscriber.grid.columnSet" as="grid.columnSet">
<arguments>
<argument name="id" xsi:type="string">problemGrid</argument>
</arguments>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.subscriber_id" as="subscriber_id">
<arguments>
<argument name="header" xsi:type="string" translate="true">ID</argument>
<argument name="index" xsi:type="string">subscriber_id</argument>
<argument name="header_css_class" xsi:type="string">col-id</argument>
<argument name="column_css_class" xsi:type="string">col-id</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.email" as="email">
<arguments>
<argument name="header" xsi:type="string" translate="true">Email</argument>
<argument name="index" xsi:type="string">subscriber_email</argument>
<argument name="header_css_class" xsi:type="string">col-email</argument>
<argument name="column_css_class" xsi:type="string">ccol-email</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.type" as="type">
<arguments>
<argument name="header" xsi:type="string" translate="true">Type</argument>
<argument name="index" xsi:type="string">type</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="array">
<item name="guest" xsi:type="array">
<item name="value" xsi:type="string">1</item>
<item name="label" xsi:type="string" translate="true">Guest</item>
</item>
<item name="customer" xsi:type="array">
<item name="value" xsi:type="string">2</item>
<item name="label" xsi:type="string" translate="true">Customer</item>
</item>
</argument>
<argument name="header_css_class" xsi:type="string">col-type</argument>
<argument name="column_css_class" xsi:type="string">col-type</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.firstname" as="firstname">
<arguments>
<argument name="header" xsi:type="string" translate="true">Customer First Name</argument>
<argument name="index" xsi:type="string">firstname</argument>
<argument name="default" xsi:type="string">----</argument>
<argument name="header_css_class" xsi:type="string">col-first-name</argument>
<argument name="column_css_class" xsi:type="string">col-first-name</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.lastname" as="lastname">
<arguments>
<argument name="header" xsi:type="string" translate="true">Customer Last Name</argument>
<argument name="index" xsi:type="string">lastname</argument>
<argument name="default" xsi:type="string">----</argument>
<argument name="header_css_class" xsi:type="string">col-last-name</argument>
<argument name="column_css_class" xsi:type="string">col-last-name</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.status" as="status">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status</argument>
<argument name="index" xsi:type="string">subscriber_status</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="array">
<item name="status_not_active" xsi:type="array">
<item name="value" xsi:type="string">2</item>
<item name="label" xsi:type="string" translate="true">Not Activated</item>
</item>
<item name="status_subscribed" xsi:type="array">
<item name="value" xsi:type="string">1</item>
<item name="label" xsi:type="string" translate="true">Subscribed</item>
</item>
<item name="status_unsubscribed" xsi:type="array">
<item name="value" xsi:type="string">3</item>
<item name="label" xsi:type="string" translate="true">Unsubscribed</item>
</item>
<item name="status_unconfirmed" xsi:type="array">
<item name="value" xsi:type="string">4</item>
<item name="label" xsi:type="string" translate="true">Unconfirmed</item>
</item>
</argument>
<argument name="header_css_class" xsi:type="string">col-status</argument>
<argument name="column_css_class" xsi:type="string">col-status</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.change_status_at" as="change_status_at">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status At</argument>
<argument name="type" xsi:type="string">date</argument>
<argument name="timezone" xsi:type="boolean">false</argument>
<argument name="index" xsi:type="string">change_status_at</argument>
<argument name="column_css_class" xsi:type="string">col-date</argument>
<argument name="header_css_class" xsi:type="string">col-date</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.website" as="website">
<arguments>
<argument name="header" xsi:type="string" translate="true">Web Site</argument>
<argument name="index" xsi:type="string">website_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Config\Model\Config\Source\Website\OptionHash"/>
<argument name="header_css_class" xsi:type="string">col-website</argument>
<argument name="column_css_class" xsi:type="string">col-website</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.group" as="group">
<arguments>
<argument name="header" xsi:type="string" translate="true">Store</argument>
<argument name="index" xsi:type="string">group_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\GroupOptionHash"/>
<argument name="header_css_class" xsi:type="string">col-store</argument>
<argument name="column_css_class" xsi:type="string">col-store</argument>
</arguments>
</block>
<block class="Magento\Backend\Block\Widget\Grid\Column\Multistore" name="adminhtml.newslettrer.subscriber.grid.columnSet.store" as="store">
<arguments>
<argument name="header" xsi:type="string" translate="true">Store View</argument>
<argument name="index" xsi:type="string">store_id</argument>
<argument name="type" xsi:type="string">options</argument>
<argument name="options" xsi:type="options" model="Magento\Newsletter\Block\Subscribe\Grid\Options\StoreOptionHash"/>
<argument name="header_css_class" xsi:type="string">col-store-view</argument>
<argument name="column_css_class" xsi:type="string">col-store-view</argument>
</arguments>
</block>
</block>
</block>
</referenceBlock>
</body>
</page>After please run below command in magento root directory
php bin/magento setup:static-content:deploy -f php bin/magento cache:flush php bin/magento cache:clean
Then please export data, You will get change_status_at data in CSV.
Let me know if you have any issue.
--
If my answer is useful, please Accept as Solution & give Kudos
Hi @gelanivishal That's great! Do you know how I can changed the date format as when we import this data to our 3rd party management system we need it to pass their data format validation.
Thanks!!
Hello @dave_lynch1
Please replace below code for change_status_at column at line number 134
<block class="Magento\Backend\Block\Widget\Grid\Column" name="adminhtml.newslettrer.subscriber.grid.columnSet.change_status_at" as="change_status_at">
<arguments>
<argument name="header" xsi:type="string" translate="true">Status At</argument>
<argument name="type" xsi:type="string">date</argument>
<argument name="timezone" xsi:type="boolean">false</argument>
<argument name="index" xsi:type="string">change_status_at</argument>
<argument name="column_css_class" xsi:type="string">col-date</argument>
<argument name="header_css_class" xsi:type="string">col-date</argument>
<argument name="format" xsi:type="string">1</argument>
</arguments>
</block>In this code, you can see format node which value 1 - That is a standard date format, You can replace that by below value and you will get an appropriate result for it.
0 - Sep 21, 2018 1 - September 21, 2018 2 - Sep 21, 2018 3 - 9/21/18
After change value, don't forget to run below command in magento root directory
php bin/magento setup:static-content:deploy -f php bin/magento cache:flush php bin/magento cache:clean
--
If my answer is useful, please Accept as Solution & give Kudos