XF 2.2 Server error: Template error: Macro public:thread_view:thread_custom_fields_status is unknown src/XF/Template/Templater.php:632


Well-known member
What is causing this intermittent error and how do I fix it?

Server error log

    ErrorException: Template error: Macro public:thread_view:thread_custom_fields_status is unknown src/XF/Template/Templater.php:632

    Generated by: djbaxter Oct 21, 2020 at 7:31 AM

Stack trace

#0 [internal function]: XF\Template\Templater->handleTemplateError(512, 'Macro public:th...', '/home/customer/...', 632, Array)
#1 src/XF/Template/Templater.php(632): trigger_error('Macro public:th...', 512)
#2 src/XF/Template/Templater.php(745): XF\Template\Templater->getTemplateMacro('public', 'thread_view', 'thread_custom_f...')
#3 internal_data/code_cache/templates/l1/s27/public/post_edit_new_post.php(13): XF\Template\Templater->callMacro('thread_view', 'thread_custom_f...', Array, Array)
#4 src/XF/Template/Templater.php(1609): XF\Template\Templater->{closure}(Object(SV\StandardLib\XF\Template\Templater), Array, NULL)
#5 src/XF/Template/Template.php(24): XF\Template\Templater->renderTemplate('post_edit_new_p...', Array)
#6 src/XF/Mvc/Renderer/Json.php(84): XF\Template\Template->render()
#7 src/XF/Mvc/Renderer/Json.php(68): XF\Mvc\Renderer\Json->renderHtmlFallback('XF:Post\\EditNew...', 'public:post_edi...', Array)
#8 src/XF/Mvc/Dispatcher.php(458): XF\Mvc\Renderer\Json->renderView('XF:Post\\EditNew...', 'public:post_edi...', Array)
#9 src/XF/Mvc/Dispatcher.php(440): XF\Mvc\Dispatcher->renderView(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#10 src/XF/Mvc/Dispatcher.php(400): XF\Mvc\Dispatcher->renderReply(Object(XF\Mvc\Renderer\Json), Object(XF\Mvc\Reply\View))
#11 src/XF/Mvc/Dispatcher.php(58): XF\Mvc\Dispatcher->render(Object(XF\Mvc\Reply\View), 'json')
#12 src/XF/App.php(2300): XF\Mvc\Dispatcher->run()
#13 src/XF.php(465): XF\App->run()
#14 index.php(20): XF::runApp('XF\\Pub\\App')
#15 {main}

Request state

array(4) {
  ["url"] => string(23) "/forum/posts/33161/edit"
  ["referrer"] => string(141) "https://bizwarriors.com/forum/threads/how-to-prevent-emails-sent-from-my-web-site-from-being-marked-as-spam-and-increase-deliverability.7761/"
  ["_GET"] => array(0) {
  ["_POST"] => array(12) {
    ["prefix_id"] => string(1) "0"
    ["title"] => string(98) "How to prevent emails sent from my web site from being marked as spam and increase deliverability?"
    ["message_html"] => string(2084) "<p>Emails have been a great communication channel to communicate with a B2B customer, if and only when tapped in the right way. What’s the point in sending bulk emails to the customer only to realize that none of them are landing in their inbox? It can be a headache for marketers when their emails do not reach the targeted customer, leading to the failure of the entire campaign. In this scenario, one has to find innovative ways to improvise the deliverability rate of email. A different approach can redirect the email marketing campaign on the right path with easy access to the inbox of the recipient. Find out some of the tested ways to land the email in your recipient’s inbox.</p><p><br></p><p>Having a clear opt-in process: The opt-in process should be clear. It can be very frustrating to get emails that you do not want. You can take a scenario where one of the recipients accidentally subscribes for your service, resulting in landing up of a large number of emails into his inbox. These would surely get unanswered, which is not good for your email performance metric as ISP’s can filter this IP’s emails as the spam email.</p><p><br></p><p>Avoiding email spam filters: The process of emails being sorted out into the spam folder or the inbox is not a dramatic one. All the ISPs have similar criteria on the email content triggering their spam filters. For most of the transactional and marketing emails, it can include large attachments, typos, etc., thus triggering in sending the emails into the inactive addresses. So, mails should be sent only to those people whom you want to see.</p><p><br></p><p>Cleaning up the list to improve deliverability: Cleaning up the email contact lists can be a good way for making sure that the emails are being sent to the active users. If you send emails to the already filthy list, then there are high chances that you will be getting less open, engagement and click rates. <a href="https://www.ewomennetwork.com/blog/ewomennetwork-1/post/how-to-increase-email-deliverability-and-land-in-the-inbox-286">Know more…</a></p>"
    ["_xfInlineEdit"] => string(1) "1"
    ["attachment_hash"] => string(32) "d278eafc1ee1071179ef56d980b981c1"
    ["attachment_hash_combined"] => string(85) "{"type":"post","context":{"post_id":33161},"hash":"d278eafc1ee1071179ef56d980b981c1"}"
    ["silent"] => string(1) "1"
    ["clear_edit"] => string(1) "1"
    ["_xfToken"] => string(8) "********"
    ["_xfRequestUri"] => string(118) "/forum/threads/how-to-prevent-emails-sent-from-my-web-site-from-being-marked-as-spam-and-increase-deliverability.7761/"
    ["_xfWithData"] => string(1) "1"
    ["_xfResponseType"] => string(4) "json"


Well-known member
No outdated templates are reported but I have a weird problem where there are two copies of the style running and two copies of every template. @Russ has told me how to fix it - just need to get time to do that.


hello idem

  • ErrorException: Template error: Macro public:thread_view:thread_custom_fields_status is unknown
  • src/XF/Template/Templater.php:632

Trace de la pile​

#0 [internal function]: XF\Template\Templater->handleTemplateError()
#1 src/XF/Template/Templater.php(632): trigger_error()
#2 src/XF/Template/Templater.php(745): XF\Template\Templater->getTemplateMacro()
#3 internal_data/code_cache/templates/l2/s2/public/post_edit_new_post.php(13): XF\Template\Templater->callMacro()
#4 src/XF/Template/Templater.php(1609): XF\Template\Templater->{closure}()
#5 src/XF/Template/Template.php(24): XF\Template\Templater->renderTemplate()
#6 src/XF/Mvc/Renderer/Json.php(84): XF\Template\Template->render()
#7 src/XF/Mvc/Renderer/Json.php(68): XF\Mvc\Renderer\Json->renderHtmlFallback()
#8 src/XF/Mvc/Dispatcher.php(458): XF\Mvc\Renderer\Json->renderView()
#9 src/XF/Mvc/Dispatcher.php(440): XF\Mvc\Dispatcher->renderView()
#10 src/XF/Mvc/Dispatcher.php(400): XF\Mvc\Dispatcher->renderReply()
#11 src/XF/Mvc/Dispatcher.php(58): XF\Mvc\Dispatcher->render()
#12 src/XF/App.php(2300): XF\Mvc\Dispatcher->run()
#13 src/XF.php(465): XF\App->run()
#14 index.php(20): XF::runApp()
#15 {main}


XenForo developer
Staff member
Outdated templates can sort of mean two things, but essentially I'm suggesting that at least one template (thread_view) hasn't been updated to be totally compliant with 2.2. Most commonly, this would mean it was edited in a 2.1 release (and thus based on that version) and would show up in the outdated templates list. However, if it doesn't show up there, it could still be "outdated" in the sense that while it has been edited more recently (and thus we have to assume that the necessary changes have been incorporated), it may not properly reflect the necessary/expected changes (such as defining this macro).

If you're using a third-party style, then the style author would be best positioned to help. If you've done custom changes, then the most straightforward thing might be to revert the thread_view template and reapply the customizations manually. (You can also look at the template's diff to see if things have been changed that you aren't expecting.)