GithubHelp home page GithubHelp logo

nystudio107 / craft-seomatic Goto Github PK

View Code? Open in Web Editor NEW
162.0 8.0 67.0 136.71 MB

SEOmatic facilitates modern SEO best practices & implementation for Craft CMS 3. It is a turnkey SEO system that is comprehensive, powerful, and flexible.

Home Page: https://nystudio107.com/plugins/seomatic

License: Other

PHP 98.37% CSS 0.11% JavaScript 0.05% Vue 0.09% Twig 1.36% Dockerfile 0.01% Makefile 0.01% TypeScript 0.01%
craftcms craft-plugin seomatic seo json-ld meta tags sitemap twitter facebook

craft-seomatic's Introduction

Scrutinizer Code Quality Build Status Code Intelligence Status Code Coverage

SEOmatic plugin for Craft CMS 5.x

SEOmatic facilitates modern SEO best practices & implementation for Craft CMS 5. It is a turnkey SEO system that is comprehensive, powerful, and flexible.

Screenshot

Note: The license fee for this plugin is $99.00 via the Craft Plugin Store.

One SEO-related topic that SEOmatic does not cover is 404 redirects; for that we recommend our Retour plugin.

Used By

ScreenshotScreenshot

SEOmatic is the SEO tool that the SEO experts at Moz.com and the creators of Craft CMS, Pixel & Tonic, rely on to handle their SEO!

Requirements

This plugin requires Craft CMS 5.0.0 or later.

Installation

To install SEOmatic, follow these steps:

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require nystudio107/craft-seomatic
    
  3. Install the plugin via ./craft install/plugin seomatic via the CLI, or in the Control Panel, go to Settings → Plugins and click the “Install” button for SEOmatic.

You can also install SEOmatic via the Plugin Store in the Craft Control Panel.

SEOmatic works on Craft 4.x.

Documentation

Click here -> SEOmatic Documentation

SEOmatic Roadmap

Some things to do, and ideas for potential features:

  • Content Analytics - Add content analytics, potentially in the "Pro" edition

Brought to you by nystudio107

craft-seomatic's People

Contributors

bencroker avatar brandonkelly avatar chasegiunta avatar engram-design avatar ggallo909 avatar jeroenlammerts avatar khalwat avatar leevigraham avatar markdrzy avatar mattstein avatar mckenzieclark avatar mildlygeeky avatar mosnar avatar nettum avatar panman avatar petehjfd avatar pieterxjan avatar pixleight avatar qrazi avatar rob-baker-ar avatar roelvanhintum avatar spib avatar tremby avatar wiejeben avatar xhmikosr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

craft-seomatic's Issues

Variable "seomatic" does not exist in Twig Template

When navigating to route /cp/seomatic/global/general/default, Craft throws Variable "seomatic" does not exist.

vendor/nystudio107/craft-seomatic/src/templates/_includes/googlePreview.twig at line 1

{% set titleArray = seomatic.title.get('title').renderAttributes() %}

Server Stack:

  • Seomatic beta 4
  • Craft Pro 3.0.0-RC15
  • yii 2.0.14.2
  • nginx 1.13.9
  • php7.1 - 7.1.14
  • percona-mysql.5.7 MySQL 5.7.21

Please make it possible to use assets of related entries as seo image

My setup:

  • Workshops section
  • Workpieces section
  • Workshops has a content relation to/with workpieces.
  • I want the workpiece's image as the SEO image for the workshops.

Is this possible? I can't get this to work, even when I use {entry.workpiece.one.images.one.url} as a customer URL.

Site Settings → Identity & Site Settings → Creator need UX improvements

The Site Settings → Identity & Site Settings → Creator pages need:

  • The Entity Type menus should dynamically hide/show and fill with appropriate types
  • The sections that don't apply to a given Entity Type should be hidden
  • The language of the field titles and instructions should be gone over to ensure they are accurate and neutral

Template and array error

I get Variable "seomatic" does not exist localy. on the Global SEO, Content SEO and Content SEO pages in admin.
On my live i get a merge filter array on the same pages.
skjermbilde 2018-03-27 09 43 48

I also get a error on rendering _sidebars/entry-preview.twig in my entries.
skjermbilde 2018-03-27 09 41 05

Have tried to uninstall and install again, but nothing changes. i have RC16.1 and SEOmatic 3.0.0-beta.18

Data migration from the old Craft 2.x SEOmatic_Meta Field

See if there is some way that data can be migrated from the old SEOmatic_Meta field when users are upgrading from Craft 2.x. This is primarily of concern when custom SEO data has been entered in the Title, Description, Keywords, or Image fields.

It's not an issue if the Field was set to pull data, since that can and should be configured via SEOmatic 3's Content SEO field.

c.f.: https://github.com/nystudio107/craft-seomatic#upgrading-from-seomatic-1x-for-craft-cms-2x

Support for Commerce 2

Support for Commerce 2 needs to be added; this will be done after GA release, once Commerce 2 hits beta.

Documentation: Recommended Twig fallback logic for custom SEO description / image fields

We have what I imagine is a pretty common setup for a "Recipes" channel on our Craft 3 site:

  • Recipe entry types have a "Image" and "Body" field
  • Recipe entry types also have optional "SEO Image" and "SEO Description" fields

For both, the logic we're looking to implement for the SEO Description Source and SEO Image Source fields is use the SEO field first, falling back to the main fields.

Two questions on this:

  • Your README has a lot of examples that use the following Twig logic: entry.field1 ?? entry.field2. This works if a field may not exist, but for text fields it won't fallback properly to field2 if field1 has an empty text value.
  • What's the recommended logic for fallback asset sources for SEO Image Source

Here's what I've currently got:

SEO Description Source (Custom Text):

{seomatic.helper.extractTextFromField(object.entry.seoDescription|length ? object.entry.seoDescription : object.entry.body)}

SEO Image Source (Custom Text):

{seomatic.helper.socialTransform(object.entry.seoImage.one() ?? object.entry.image.one() , "base", 1)}

Both of these appear to be working correctly, but just wondered if there wasn't a cleaner way to approach it.

Thanks!

Make robots.txt template setting a path instead of template textarea

I would much rather see the robots.txt setting be simple a template path, so that we could keep this in source with all our other templates.

The only benefit I see of having it as a db-based setting is so non-developers could edit it, but it seems like that doesn't really happen.

JSON-LD RecipeIngredient does not support lists

I'm attempting to add JSON-LD meta for recipes and am unable to recreate the structure listed in the schema.org example:

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Recipe",
  "author": "John Smith",
  "cookTime": "PT1H",
  "datePublished": "2009-05-08",
  "description": "This classic banana bread recipe comes from my mom -- the walnuts add a nice texture and flavor to the banana bread.",
  "image": "bananabread.jpg",
  "recipeIngredient": [
    "3 or 4 ripe bananas, smashed",
    "1 egg",
    "3/4 cup of sugar"
  ],
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": "http://schema.org/Comment",
    "userInteractionCount": "140"
  },
  "name": "Mom's World Famous Banana Bread",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "240 calories",
    "fatContent": "9 grams fat"
  },
  "prepTime": "PT15M",
  "recipeInstructions": "Preheat the oven to 350 degrees. Mix in the ingredients in a bowl. Add the flour last. Pour the mixture into a loaf pan and bake for one hour.",
  "recipeYield": "1 loaf",
  "suitableForDiet": "http://schema.org/LowFatDiet"
}
</script>

Here's my code:

{% do seomatic.jsonLd.create({
    'type': 'Recipe',
    'name': entry.title,
    'url': entry.url,
    'description': entry.body,
    'recipeIngredient': ingredients|filterByValue('type', 'ingredient')|column('text'),
    'recipeInstructions': directions|filterByValue('type', 'direction')|column('text')|join(' ')|striptags
}) %}

The instructions render as expected, the ingredients are omitted, presumedly because it's an array and not a string.

Location info → Entity Country fails to save

When submitting data in SEOmatic > Site Settings > Creator > Creator Settings > Location Info, Entity Country /cp/seomatic/site/creator/default fails to save on form submit. All other elements in the Location info section save fine.

  • Nothing in logs
  • Nothing in console.

Server Stack:

  • Craft Pro 3.0.0-RC15
  • yii 2.0.14.2
  • Seomatic beta 3
  • nginx 1.13.9
  • php7.1 - 7.1.14
  • percona-mysql.5.7 MySQL 5.7.21

SEO Meta is being cached globally instead of for each site

When you have a multi-site install, the SEO meta gets cached without accounting for the site.

So when I have a site with a sitename of "Site 1" and view a page on it, the site name stays the same in the title even when viewing a page on site 2.

Ability to Globally Disable Sitemap

In the near term, I'm looking to implement SEOmatic for one specific Helper Function and then gradually incorporate additional functionality into the rest of the site. Basically, I want to use that one function and then have nothing else change from an SEO perspective on the site until I can more fully vet & test the impact.

To that end, I would love to be able to globally disable the sitemap in the same way that you can the automatic metadata rendering. We have a sitemap in place that functions as needed, but it looks like that sitemap is overwritten by SEOMatic's, and SEOMatic's sitemap continues to overwrite it even when all individual section sitemaps are disabled.

If it wasn't clear, the use case is implementing SEOMatic into an existing site that is already fairly well set-up from an SEO perspective, as opposed to implementing this at the start of the build.

Entries using custom routes don't use Content SEO settings.

I have a few custom routes set up for category pages on a few post types. I'm using custom routes so I can keep the user within the category when paginating prev/next entries, and showing related content.

SEOmatic doesn't treat my custom route entries the same as it would if it were viewed from the normal entry url. Instead, Global SEO settings are used.

Here's one of my custom routes: 'news/<category_slug:.*>/<post_slug:.*>' => ['template' => 'news/_entry'],

What's the best way to get these entries to use the same Content SEO settings?

SEOmatic for Craft 3 is not ready yet

Sorry for trolling. :) Tried to set the title as generic as possible to only close this issue when it is ready to roll. (hidden subscription for a SEOmatic for Craft 3 notification)

Can't Disable Robots.txt or Humans.txt

Going to SEOmatic > Global SEO > Settings > Robots.txt or Humans.Txt, and clicking the lighswitch field appears to disable as expected. However, when I click save, and the page reloads, the lightswitch field shows as enabled again. This happens every time I attempt to disable and then save on robots.txt or humans.txt.

Screenshot below:

image

Unable to find the template "_sidebars/entry-preview.twig"

Entry creation view sidebar showing twig error relating to a missing template.

Error rendering `_sidebars/entry-preview.twig` -> Unable to find the template “_sidebars/entry-preview.twig”.

sample event - richmond mall 2018-03-16 00-17-18

Server Stack:

Craft Pro 3.0.0-RC15
yii 2.0.14.2
Seomatic beta 3
nginx 1.13.9
php7.1 - 7.1.14
percona-mysql.5.7 MySQL 5.7.21

Getting error trying to use multi-site tracking scripts

Loving the new seomatic so far but got an error i thought I should let you know about

I have a multi-site setup and when i got to tracking scripts and I try to switch to any of the other sites i get

Internal Server Error
Undefined index: healthcare

Site settings and global seo both seem to work with multi-site

[FR] Add an SEO Images Field

Add an SEO Image Field that you'd add to an Asset Volume's layout. It would include:

  • Title
  • Description
  • Pinterest Pin URL
  • Pinterest Pin Media
  • No Pin (lightswitch)

All of the fields could work like the SEO Settings field, in that they could pull from other fields... the benefit would be that it wraps up everything needed for Pinterest into one bundle, and then you could output it like this:

<img src="{{ someAsset.url}}" {{ someAsset.seoImage.metaTags() }}>

...and it'd do:

https://css-tricks.com/using-pinterest-data-attributes-and-meta-tags/

and

https://fortysevenmedia.com/blog/archives/custom-pinterest-descriptions-in-craft-cms

Also, SEOmatic could look for the Field whenever an Asset is picked, and automatically pull the title/deacription from it.

Ability to exclude individual entries/elements from sitemap

Would you consider exposing a method outside of disabling an entry to exclude it from the sitemap (in a section where other entries should be included)? It looks as though the entry criteria is baked in models/SitemapTemplate.php, but it'd be handy if a field could be mapped to a sitemap setting that would prevent it from being included (for example, a "protected" or "index" lightswitch).

I see this being useful for clients who have pages they like to keep semi-private by setting a "noindex" meta tag and only distributing a link via e-mail or requiring a login before viewing.

If not a core feature, perhaps a way to add additional criteria during the render method or event within the elements loop to skip a line?

No field type?

In the previous version of seomatic you were able to create a field called SEO and drop it into a new tab on all sections - this made the whole job very simple? Has this concept been done away with? Must users now great all the fields manually now? How about creating some Migrations even for these and grouping them?

[FR] Ability to get meta bundle data and use it in page templates

I have a search results page with results that contain entries from different sections, and I want to display a page description for each entry on my search results page. I could get this from the same fields in the entries that SEOmatic pulls from, but it would be easier to get the data from SEOmatic directly.

Having a function, like seomatic.bundles.getByUri(), would make it easy to pull page titles, descriptions, and other info that's already been processed by SEOmatic.

Upgrade from v2

Hello,

How does the upgrade procedure (craft v2 + seomatic fieldtype) look like? I haven't found anything in the docs. Please advise.

OpenGraph and TwitterCard configs are not being rendered in the head?

We configured the general SEO settings together with the OG and Twitter settings, not sure if it's the new way how Seomatic is working, but we expected that these configurations would be rendered in the element?

Is this something you now have to define your self in the head which meta you want to have templated?

We were mostly missing the share image, so we now fixed it by setting the meta image in the layout by templating:

<meta property="og:image" name="twitter:image" content="{{ seomatic.meta.parsedValue('seoImage') }}" />

Or is this a bug?

We are running:

  • Craft CMS 3.0.0-RC17.1
  • Seomatic 3.0.0-beta.19

mergeMetaBundleSettings() needs to operate on the full array

Rather than instantiating a new MetaBundle and getting its properties to update the bundle settings, mergeMetaBundleSettings() needs to operate on the raw config array.

The reason is that certain JSON-LD properties need to be stored raw, if they are converted to a model, some attributes will be pruned. Which is not what we want in a raw bundle config.

Error when updating entries from console command

Getting the following error when trying to update an entry from a console command:

Exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: craft\console\Request::getSegments()'

in /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/Component.php:300

Stack trace:
#0 /Users/rias/Code/primeretail/vendor/nystudio107/craft-seomatic/src/helpers/DynamicMeta.php(154): yii\base\Component->__call('getSegments', Array)
#1 /Users/rias/Code/primeretail/vendor/nystudio107/craft-seomatic/src/helpers/DynamicMeta.php(94): nystudio107\seomatic\helpers\DynamicMeta::addMetaJsonLdBreadCrumbs(1)
#2 /Users/rias/Code/primeretail/vendor/nystudio107/craft-seomatic/src/services/MetaContainers.php(150): nystudio107\seomatic\helpers\DynamicMeta::addDynamicMetaToContainers('/', 1)
#3 [internal function]: nystudio107\seomatic\services\MetaContainers->nystudio107\seomatic\services\{closure}(Object(yii\caching\FileCache))
#4 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/caching/Cache.php(575): call_user_func(Object(Closure), Object(yii\caching\FileCache))
#5 /Users/rias/Code/primeretail/vendor/nystudio107/craft-seomatic/src/services/MetaContainers.php(155): yii\caching\Cache->getOrSet('seomatic_metaco...', Object(Closure), NULL, Object(yii\caching\TagDependency))
#6 /Users/rias/Code/primeretail/vendor/nystudio107/craft-seomatic/src/twigextensions/SeomaticTwigExtension.php(43): nystudio107\seomatic\services\MetaContainers->loadMetaContainers('/', '1')
#7 /Users/rias/Code/primeretail/vendor/twig/twig/lib/Twig/ExtensionSet.php(339): nystudio107\seomatic\twigextensions\SeomaticTwigExtension->getGlobals()
#8 /Users/rias/Code/primeretail/vendor/twig/twig/lib/Twig/Environment.php(903): Twig_ExtensionSet->getGlobals()
#9 /Users/rias/Code/primeretail/vendor/twig/twig/lib/Twig/Environment.php(923): Twig_Environment->getGlobals()
#10 /Users/rias/Code/primeretail/vendor/twig/twig/lib/Twig/Template.php(367): Twig_Environment->mergeGlobals(Array)
#11 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/web/twig/Template.php(31): Twig_Template->display(Array, Array)
#12 /Users/rias/Code/primeretail/vendor/twig/twig/lib/Twig/Template.php(375): craft\web\twig\Template->display(Array)
#13 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/web/View.php(475): Twig_Template->render(Array)
#14 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/helpers/ElementHelper.php(190): craft\web\View->renderObjectTemplate('ons-aanbod/{{ob...', Object(stdClass))
#15 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/helpers/ElementHelper.php(66): craft\helpers\ElementHelper::doesUriFormatHaveSlugTag('ons-aanbod/{slu...')
#16 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/validators/ElementUriValidator.php(49): craft\helpers\ElementHelper::setUniqueUri(Object(craft\elements\Entry))
#17 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/validators/Validator.php(267): craft\validators\ElementUriValidator->validateAttribute(Object(craft\elements\Entry), 'uri')
#18 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/Model.php(367): yii\validators\Validator->validateAttributes(Object(craft\elements\Entry), Array)
#19 /Users/rias/Code/primeretail/vendor/craftcms/cms/src/services/Elements.php(373): yii\base\Model->validate()
#20 /Users/rias/Code/primeretail/modules/sitemodule/src/console/controllers/OmnicasaController.php(89): craft\services\Elements->saveElement(Object(craft\elements\Entry))
#21 [internal function]: modules\sitemodule\console\controllers\OmnicasaController->actionSync()
#22 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#23 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#24 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/console/Controller.php(148): yii\base\Controller->runAction('sync', Array)
#25 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('sync', Array)
#26 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('site-module/omn...', Array)
#27 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('site-module/omn...', Array)
#28 /Users/rias/Code/primeretail/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(craft\console\Request))
#29 /Users/rias/Code/primeretail/craft(43): yii\base\Application->run()
#30 {main}

Any ideas when this will be ready for testing?

I tried grabbing this through composer and get the following:
[UnexpectedValueException]
Could not parse version constraint //github.com/aelvan/Imager-Craft/seomatic: Invalid version string "//github.com/aelvan/Imager-Craft/seomatic"

Sitemap disabled returns error

If I disable the "Sitemap Enabled" option in the "Content SEO > Sitemap" section. Then attempt to view the section sitemap, this error is returned:

error on line 1 at column 39: Extra content at the end of the document

I suspect this shouldn't return anything at all. Unless this is expected behaviour given I'm trying to see a sitemap that shouldn't exist anyway.

Just thought this might be worth sharing.

[Question] Sitemap splitting

Just a question cause we run into a problem as we build our Craft 2 Sitemap Plugin with Images.
On https://bestwebsite.gallery I've round about 2500 entries and every entry has 1 - XX (sometimes up to 20) Images.

For our Plugin can't handle the amount of data and the sitemap creation failed every time. We give up the development cause C3 and your Announcement that you include Sitemaps in Seomatic.

Our thougts was to split the sitemap in smaller pieces.

Maybe you handle all the stuff in another way.
Maybe it's a good hint.

Cheers

Exceptions during content migrations

After installing this plugin we hit an exception running a content migration when attempting to save a new section. Here's the relevant bit:

Exception: Calling unknown method: craft\console\Request::getPathInfo() (/var/www/html/vendor/yiisoft/yii2/base/Component.php:300)
#0 /var/www/html/vendor/nystudio107/craft-seomatic/src/twigextensions/SeomaticTwigExtension.php(38): yii\base\Component->__call('getPathInfo', Array)

Looks like it's assuming the request component is a craft\web\Request instance.

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lccphoto.craft_seomatic_metabundles' doesn't exist

Hi Andrew,

I'm getting the following error in CP & and front-end when trying to install via plugin store on a site recently upgraded from C2:

PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lccphoto.craft_seomatic_metabundles' doesn't exist in /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php:1255
Stack trace:
#0 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(1255): PDOStatement->execute()
#1 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(1145): yii\db\Command->internalExecute('SELECT *\nFROM `...')
#2 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(410): yii\db\Command->queryInternal('fetch', NULL)
#3 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Query.php(274): yii\db\Command->queryOne()
#4 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/db/Query.php(152): yii\db\Query->one(NULL)
#5 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/services/MetaBundles.php(102): craft\db\Query->one()
#6 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/services/FrontendTemplates.php(89): nystudio107\seomatic\services\MetaBundles->getGlobalMetaBundle(1)
#7 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/Seomatic.php(458): nystudio107\seomatic\services\FrontendTemplates->loadFrontendTemplateContainers()
#8 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/Seomatic.php(216): nystudio107\seomatic\Seomatic->handleSiteRequest()
#9 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/BaseObject.php(109): nystudio107\seomatic\Seomatic->init()
#10 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/Module.php(158): yii\base\BaseObject->__construct(Array)
#11 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/base/Plugin.php(87): yii\base\Module->__construct('seomatic', Object(craft\web\Application), Array)
#12 [internal function]: craft\base\Plugin->__construct('seomatic', Object(craft\web\Application), Array)
#13 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(383): ReflectionClass->newInstanceArgs(Array)
#14 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('nystudio107\seo...', Array, Array)
#15 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('nystudio107\seo...', Array, Array)
#16 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/services/Plugins.php(757): yii\BaseYii::createObject(Array, Array)
#17 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/services/Plugins.php(193): craft\services\Plugins->createPlugin('seomatic', Array)
#18 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/base/ApplicationTrait.php(1135): craft\services\Plugins->loadPlugins()
#19 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/web/Application.php(92): craft\web\Application->_init()
#20 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/BaseObject.php(109): craft\web\Application->init()
#21 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/Application.php(206): yii\base\BaseObject->__construct(Array)
#22 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/web/Application.php(82): yii\base\Application->__construct(Array)
#23 [internal function]: craft\web\Application->__construct(Array)
#24 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(383): ReflectionClass->newInstanceArgs(Array)
#25 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('craft\web\Appli...', Array, Array)
#26 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('craft\web\Appli...', Array, Array)
#27 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/bootstrap/bootstrap.php(249): yii\BaseYii::createObject(Array)
#28 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/bootstrap/web.php(42): require('/home/vagrant/s...')
#29 /home/vagrant/sites/lccphoto/web/index.php(20): require('/home/vagrant/s...')
#30 {main}

Next yii\db\Exception: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'lccphoto.craft_seomatic_metabundles' doesn't exist
The SQL being executed was: SELECT *
FROM craft_seomatic_metabundles
WHERE (sourceBundleType='GLOBAL_BUNDLE') AND (sourceSiteId=1)
LIMIT 1 in /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Schema.php:664
Stack trace:
#0 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(1260): yii\db\Schema->convertException(Object(PDOException), 'SELECT *\nFROM ...') #1 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(1145): yii\db\Command->internalExecute('SELECT *\nFROM ...')
#2 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Command.php(410): yii\db\Command->queryInternal('fetch', NULL)
#3 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/db/Query.php(274): yii\db\Command->queryOne()
#4 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/db/Query.php(152): yii\db\Query->one(NULL)
#5 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/services/MetaBundles.php(102): craft\db\Query->one()
#6 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/services/FrontendTemplates.php(89): nystudio107\seomatic\services\MetaBundles->getGlobalMetaBundle(1)
#7 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/Seomatic.php(458): nystudio107\seomatic\services\FrontendTemplates->loadFrontendTemplateContainers()
#8 /home/vagrant/sites/lccphoto/vendor/nystudio107/craft-seomatic/src/Seomatic.php(216): nystudio107\seomatic\Seomatic->handleSiteRequest()
#9 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/BaseObject.php(109): nystudio107\seomatic\Seomatic->init()
#10 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/Module.php(158): yii\base\BaseObject->__construct(Array)
#11 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/base/Plugin.php(87): yii\base\Module->__construct('seomatic', Object(craft\web\Application), Array)
#12 [internal function]: craft\base\Plugin->__construct('seomatic', Object(craft\web\Application), Array)
#13 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(383): ReflectionClass->newInstanceArgs(Array)
#14 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('nystudio107\seo...', Array, Array)
#15 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('nystudio107\seo...', Array, Array)
#16 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/services/Plugins.php(757): yii\BaseYii::createObject(Array, Array)
#17 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/services/Plugins.php(193): craft\services\Plugins->createPlugin('seomatic', Array)
#18 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/base/ApplicationTrait.php(1135): craft\services\Plugins->loadPlugins()
#19 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/web/Application.php(92): craft\web\Application->_init()
#20 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/BaseObject.php(109): craft\web\Application->init()
#21 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/base/Application.php(206): yii\base\BaseObject->__construct(Array)
#22 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/src/web/Application.php(82): yii\base\Application->__construct(Array)
#23 [internal function]: craft\web\Application->__construct(Array)
#24 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(383): ReflectionClass->newInstanceArgs(Array)
#25 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/di/Container.php(156): yii\di\Container->build('craft\web\Appli...', Array, Array)
#26 /home/vagrant/sites/lccphoto/vendor/yiisoft/yii2/BaseYii.php(349): yii\di\Container->get('craft\web\Appli...', Array, Array)
#27 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/bootstrap/bootstrap.php(249): yii\BaseYii::createObject(Array)
#28 /home/vagrant/sites/lccphoto/vendor/craftcms/cms/bootstrap/web.php(42): require('/home/vagrant/s...')
#29 /home/vagrant/sites/lccphoto/web/index.php(20): require('/home/vagrant/s...')
#30 {main}
Additional Information:
Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'lccphoto.craft_seomatic_metabundles' doesn't exist
)

Dashboard page

The Dashboard page doesn't show anything interesting at the moment

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.