未传递必需的参数“ theme_dir”


Answers:


86

万一您直接删除主题(以Magento方式),以防万一。

然后按照下列步骤。

步骤1:文件操作

从中删除内容app/design/frontend/<Vendor>(确保先备份)。

删除文件夹var/view_preprocessed&的所有内容pub/static/frontend

步骤2:数据库操作

转到theme表并删除您创建的主题的条目。

之后...

转到core_config_data表并搜索theme,您将获得路径记录,例如design/theme/theme_id替换其中的默认主题ID。

步骤3:清空快取

刷新缓存 php bin/magento cache:flush

此后,如果您仍然遇到任何问题,请告诉我。


谢谢。删除主题时,我遇到了同样的问题。不要忘记删除数据库中剩余的内容。我确实修复了theme-table,但是忘记了该core_config_data值。
Giel Berkers

@GielBerkers:欢迎:)
Kaushal Suthar'Mar

@KaushalSuthar这根本没有用,而是管理员进入了文本格式。然后,在运行setup:static-content:deployadmin之后返回到UI。
Shukla

@AshwaniShukla:您可能在此过程中犯了一些错误……
Kaushal Suthar

@KaushalSuthar我犯的唯一错误pub/static/.htaccess不在那儿。谢谢
Ashwani Shukla

28

此错误消息表示您配置了一个主题,该主题在文件系统上不存在(不再存在)。

可以通过选择有效的主题来轻松修复它。转到内容->配置,选择范围(全局,网站,store_view)并更改主题。完成之后,还应该将其从Content-> Themes中删除。

更改商店主题

参考文献


如果您的主题目录没有适当的权限,也可能是这种情况。
内森·莫因瓦济里

权限应该由某些Magento脚本AFAIK进行检查,但是没错,这等同于相同的条件:无法访问的目录的行为通常类似于不存在的目录。
哈克(Hakre)

3
这不再是此位置。现在在内容标签中
CarComp '16

@CarComp:随时提供更新的屏幕截图并编辑答案。当我回答时,已记录在案。
hakre '16

11

就我而言,我从供应商目录中删除了一个子主题。但是数据库条目仍然在theme表中。因此,转到theme表并删除指向已删除主题的记录。


您是如何从供应商目录中删除的?与作曲家composer remove vendor/theme
hakre

不,只是rm -rf vendor/theme
Arvind07年

7

确保theme表条目和magento\app\design\frontend\<Vendor>条目将相同。

如果不是,则会导致此问题。

通过Admin-> Content-> Design-> Themes删除不必要的主题。删除它。因此,它也会删除数据库条目。

如果您仅删除文件夹,则将无法使用


7

当您处于仿真状态(例如,在CLI命令中)时,也会发生此问题。我遇到无法在CLI中发送电子邮件的情况,因为包装命令以仿真状态运行:

$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
    // In this section the email was sent
});

在上面的示例中,当电子邮件尝试确定其模板目录时,它将映射到global/Magento/backend不存在的。要解决此问题,我必须在构造函数中手动添加它:

/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
    'theme',
    'global/Magento/backend',
    $componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);

修复此问题后,问题已解决,我可以发送电子邮件。

更新:

使用CLI发送邮件时,更合适的方法是使用仿真。例如:

/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
    'frontend',
    [$this->accountManagement, 'initiatePasswordReset'],
    [
        $customer->getEmail(),
        AccountManagement::EMAIL_REMINDER,
        $customer->getWebsiteId()
    ]
);

这样,您就不必再面对肮脏的小技巧了。


感谢您深入分享。这个答案本身就成了常见问题解答,非常高兴看到。
hakre

4

sql UPDATE core_config_data SET value=NULL WHERE path='design/theme/theme_id'

然后清除pub/static/frontendvar/view_preprocessingvar/cachevar/page_cache目录。


1

@hakre是正确的。我有同样的错误Required parameter 'theme_dir' was not passed。下面我解释了导致错误的原因:

我在app / design / frontend / MyVendorTheme2 / myThemeName2目录中创建一个主题,然后通过在Magento 2管理浏览器中选择主题“ MyVendorTheme2-myThemeName2 ”进行配置商店>配置>主题设置>常规>设计>设计主题) 。但是,然后我决定将“ myThemeName2 ”目录(包含我的新主题)移动到其他(现有)供应商文件夹“ MyVendorTheme1应用程序/ design / frontend / MyVendorTheme1 / myThemeName2下,并将其从“ MyVendorTheme2 ”文件夹中删除以前。我开始编译资产(即grunt cleangrunt exec:myThemeName2grunt less:myThemeName2),然后在主题子域(即http:// myvirtualhostdomain:myport / myvendortheme1_mythemename2_magento2_quickstart /)中打开浏览器。

最初我遇到了一个未指定的错误: There has been an error processing your request Exception printing is disabled by default for security reasons. Error log record number:

我通过重命名pub/errors/local.xml.sample为来启用错误报告local.xml,并刷新了页面。然后出现错误Required parameter 'theme_dir' was not passed

我通过返回到Magento 2管理员浏览器(商店>配置>主题设置>一般>设计>设计主题)解决了该错误,该浏览器选择了我以前的并且现在无效的设计主题,因此我选择了正确的设计主题。


仅在将redis配置的“缓存”添加到env.php时,才出现此错误。删除更改,它可以正常工作。那么为什么仅在添加“缓存”时才显示呢?我检查了数组的语法,这很好。我的登台服务器(剪切/粘贴)上使用了相同的缓存=>值
斯科特(Scott

1

安装自定义主题后保存产品图像时,我发生了此错误。

我将自定义主题设置为虚拟类型,即在主题表的数据库中,类型=1。就我而言,我不再使用该主题,因此将其从表中删除。


1

1-使用以下命令在管理面板中标识主题。

n98-magerun2 dev:theme:list

2-运行命令以标识已安装的主题:

ls -lha app/design/frontend/MyThemePackage/

3-在下面运行以下命令以创建不存在的主题:

n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName

0

如果没有任何效果,请不要忘记检查类别部分。那里也有设计设置。确保分配了正确的设计主题。就我而言,我仅在某些类别上得到错误。


您能否提供一个可能出现此问题的示例方案?我唯一想到的是,如果将布局更改为仅存在于自定义主题中的选项,则将删除该主题。但是,如果仅在使用默认布局(或使用相同名称的默认值的修改版本)的情况下发生这种情况,那么这肯定暗示着自定义主题存在错误,而不是magento软件本身存在错误吗?
约书亚洪水

0

添加或编辑产品时,请转到“设计”部分并更改布局选项。

在此处输入图片说明



0

当我意外删除app / desing / adminhtml / theme-name文件夹时,出现了这个问题。把它带回来解决了我的问题。此外,它仅在我尝试进入管理面板时发生。


0

在某些情况下,您将以不正确的方式删除自定义主题,那么您还将遇到此错误。在这种情况下:

1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'

刷新页面错误消失了。


0

我解决了这个问题。就我而言,问题不是Magento2,而是我之前做的一个错误操作,如下所示:我创建了一个主题,在app / design / frontend / MyFolder / MyTheme中创建了相对路径,并按照Magento 2联机文档中的说明进行了注册。然后,我决定取消主题,而是使用适当的命令:bin / magento theme:uninstall frontend / MyFolder / MyTheme我直接删除了文件夹。这不是一个好的操作,因为数据库未使用适当的信息进行更新。解决方案:使用名为phpmyadmin的数据库编辑器,删除表“ Theme”中与已删除文件夹相对应的记录。我希望这个能帮上忙!


0

我知道这个问题已经很老了,但是自从我今天遇到这个问题并迅速发现我的问题后,我决定发布我的答案,以提醒所有像我一样使用PhpStorm与Magento一起工作的人:切记在切换分支时签出文件。

就我而言,我正在处理的分支没有所需的主题文件(当我从主题分支更改为master分支时,它们被PhpStorm藏匿了),因为它们尚未被合并,因此错误。

希望这可以帮助某人。


-1

删除网站上未使用的所有主题临时文件,并从未使用的主题中删除并运行cache:flush

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.