Code Monkey home page Code Monkey logo

flarum-seo's People

Contributors

ahrasis avatar davwheat avatar dependabot[bot] avatar gasjki avatar imorland avatar jaspervriends avatar jslirola avatar luceos avatar maicol07 avatar os555 avatar pboschma avatar ziymed 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

Watchers

 avatar  avatar  avatar  avatar  avatar

flarum-seo's Issues

Canonical

Hi!
I don't have the opportunity to change canonicals.
Now from the any page I have canonical to the main page. As result, any pages can't be indexed.
For example^
main/page
Canonical: main

How to chenge that?

SEO Plugin Crashes Entire FLarum

Not really sure how or why this happened, it was kind of out of the blue. One minute my flarum was working and the next it was not.

When I visited my flarum one last time before bed an all white page loaded with just this text:

Error booting Flarum: SQLSTATE[HY000] [2002] No such file or directory (SQL: select value, keyfromsettings)

When I looked at my Flarum log here is the error I got:

[2019-01-23 04:19:19] production.ERROR: Error: Call to a member function getAttribute() on null in /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Mana$
Stack trace:
#0 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Managers/QADiscussion.php(59): V17Development\FlarumSeo\Managers\QADiscussion->createTags()
#1 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(143): V17Development\FlarumSeo\Managers\QADiscussion->__construct(Object($
#2 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\PageListener->determine()
#3 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->__invoke(Object(Flarum\Frontend\Docume$
#4 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\Document), Object(Zend\Diacto$
#5 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\ServerRequest))
#6 /var/www/seekadventure.net/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diactoros\ServerRequest))
#7 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Zend\Diactoro$
#8 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object(Zend\Diactoros\ServerReques$
#9 /var/www/seekadventure.net/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest$
#10 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware->process(Object(Zend\Diactor$
#11 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerReques$
#12 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Zend\Diactoros\Se$
#13 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#14 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Zend\Diactoros\ServerRequest),$
#15 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerReque$
#16 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Zend\Diactoros\S$
#17 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#18 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\Server$
#19 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#20 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerReques$
#21 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#22 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequ$
#23 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#24 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerReque$
#25 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#26 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\Serv$
#27 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#28 /var/www/seekadventure.net/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerReq$
#29 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerReque$
#30 /var/www/seekadventure.net/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerReq$
#31 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerReque$
#32 /var/www/seekadventure.net/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#33 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), O$
#34 /var/www/seekadventure.net/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diact$
#35 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#36 /var/www/seekadventure.net/public/index.php(18): Flarum\Http\Server->listen()
#37 {main}

To fix the issue, I was able to navigate to www.myURL.net/admin and access my admin dashboard of my flarum. Based on the above error mentioning the SEO plugin I disabled the plugin and poof my website was reachable again.

Error: Call to a member function getAttribute()

The extension causes on some but not all discussions the Flarum error page if the discussion-page gets reloaded or gets opened via direct link.

  • Flarum
    0.1.0-beta.8.1
  • PHP
    7.2.15
  • MySQL
    10.3.12-Maria

Flarum log:

[2019-02-12 10:38:46] production.ERROR: Error: Call to a member function getAttribute() on null in /srv/web/breitband.bz.it/vendor/v17development/flarum-seo/src/Managers/QADiscussion.php:121
Stack trace:
#0 /srv/web/breitband.bz.it/vendor/v17development/flarum-seo/src/Managers/QADiscussion.php(59): V17Development\FlarumSeo\Managers\QADiscussion->createTags()
#1 /srv/web/breitband.bz.it/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(149): V17Development\FlarumSeo\Managers\QADiscussion->__construct(Object(V17Development\FlarumSeo\Listeners\PageListener), Object(Flarum\Discussion\DiscussionRepository), '1737-neues-foru...')
#2 /srv/web/breitband.bz.it/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(112): V17Development\FlarumSeo\Listeners\PageListener->determine()
#3 /srv/web/breitband.bz.it/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->__invoke(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#4 /srv/web/breitband.bz.it/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#5 /srv/web/breitband.bz.it/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\ServerRequest))
#6 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diactoros\ServerRequest))
#7 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Zend\Diactoros\ServerRequest), Array)
#8 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object(Zend\Diactoros\ServerRequest), Object(Closure))
#9 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#10 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#11 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#12 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#13 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#14 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#15 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#16 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#17 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#18 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#19 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#20 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#21 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#22 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#23 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#24 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#25 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#26 /srv/web/breitband.bz.it/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#27 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /srv/web/breitband.bz.it/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /srv/web/breitband.bz.it/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/Next.php(52): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#32 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#33 /srv/web/breitband.bz.it/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#34 /srv/web/breitband.bz.it/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#35 /srv/web/breitband.bz.it/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#36 /srv/web/breitband.bz.it/public/index.php(22): Flarum\Http\Server->listen()
#37 {main}```

 

Some pages do not load at all when directly linked

Google search console started showing certain pages were not loading. I went to the page to investigate and it said:

An error occurred while trying to load this page.

I then went to my main page of my Flarum and that worked fine, and I navigated to the page and the same page worked. For example, if you go here directly it will fail:

https://www.seekadventure.net/d/43-thermarest-neoair-uberlite

But if you go to https://www.seekadventure.net first then look for that same thread and click it then it magically works. Basically, direct links do not work.

[2019-02-22 00:28:44] production.ERROR: Error: Call to a member function getAttribute() on null in /var/www/seekadventure.net/vendor/v17dev$
Stack trace:
#0 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Managers/QADiscussion.php(59): V17Development\FlarumSeo\Managers\QADiscu$
#1 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(143): V17Development\FlarumSeo\Managers\QADis$
#2 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\Page$
#3 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->__invoke(O$
#4 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\D$
#5 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\$
#6 /var/www/seekadventure.net/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diact$
#7 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http\{c$
#8 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object$
#9 /var/www/seekadventure.net/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object($
#10 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware-$
#11 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object$
#12 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->proc$
#13 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactor$
#14 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Ze$
#15 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Objec$
#16 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->pro$
#17 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zen$
#18 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process($
#19 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diac$
#20 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object$
#21 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Di$
#22 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Obje$
#23 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Dia$
#24 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Objec$
#25 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Z$
#26 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->proces$
#27 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zen$
#28 /var/www/seekadventure.net/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Obj$
#29 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Objec$
#30 /var/www/seekadventure.net/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Obj$
#31 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Objec$
#32 /var/www/seekadventure.net/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diac$
#33 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend$
#34 /var/www/seekadventure.net/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePi$
#35 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#36 /var/www/seekadventure.net/public/index.php(18): Flarum\Http\Server->listen()
#37 {main}
 
[2019-02-22 00:47:36] production.ERROR: Error: Call to a member function getAttribute() on null in /var/www/seekadventure.net/vendor/v17dev$
Stack trace:
#0 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Managers/QADiscussion.php(59): V17Development\FlarumSeo\Managers\QADiscu$
#1 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(143): V17Development\FlarumSeo\Managers\QADis$
#2 /var/www/seekadventure.net/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\Page$
#3 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->__invoke(O$
#4 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\D$
#5 /var/www/seekadventure.net/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\$
#6 /var/www/seekadventure.net/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diact$
#7 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http\{c$
#8 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object$
#9 /var/www/seekadventure.net/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object($
#10 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware-$
#11 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object$
#12 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->proc$
#13 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactor$
#14 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Ze$
#15 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Objec$
#16 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->pro$
#17 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zen$
#18 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process($
#19 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diac$
#20 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object$
#21 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Di$
#22 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Obje$
#23 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Dia$
#24 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Objec$
#25 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Z$
#26 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->proces$
#27 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zen$
#28 /var/www/seekadventure.net/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Obj$
#29 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Objec$
#30 /var/www/seekadventure.net/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Obj$
#31 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Objec$
#32 /var/www/seekadventure.net/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diac$
#33 /var/www/seekadventure.net/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend$
#34 /var/www/seekadventure.net/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePi$
#35 /var/www/seekadventure.net/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#36 /var/www/seekadventure.net/public/index.php(18): Flarum\Http\Server->listen()
#37 {main}

I also just tried clearing my cache to see if that fixed my above issue, but it did not. I also tried un-enabling and re-enabling the extension with clearing the cache in between and that also did not solve the issue.

Cannot use with `clarkwinkelmann/flarum-ext-scout`

Flarum info

Flarum core 1.6.2
PHP version: 8.0.25
MySQL version: 8.0.24
Loaded extensions: Core, date, libxml, openssl, pcre, sqlite3, zlib, bcmath, ctype, curl, dom, filter, ftp, gd, gettext, hash, iconv, intl, json, mbstring, SPL, session, pcntl, standard, PDO, mysqlnd, pdo_sqlite, Phar, posix, Reflection, pdo_mysql, shmop, SimpleXML, soap, sockets, sodium, mysqli, sysvsem, tokenizer, xml, xmlreader, xmlwriter, zip, fileinfo, exif, redis, gmp
+-------------------------------------+------------+--------+
| Flarum Extensions                   |            |        |
+-------------------------------------+------------+--------+
| ID                                  | Version    | Commit |
+-------------------------------------+------------+--------+
| v17development/flarum-seo           | v1.8.0     |        |
| clarkwinkelmann-scout               | 0.3.2      |        |
+-------------------------------------+------------+--------+

when indexing all flarum modules, SEO extension will throw an exception:

[root@pc discuss.org]# php flarum scout:import-all
PHP Warning:  Missing arginfo for bt_echo() in Unknown on line 0
Imported [Flarum\Discussion\Discussion] models up to ID: 551
Imported [Flarum\Discussion\Discussion] models up to ID: 1329
Imported [Flarum\Discussion\Discussion] models up to ID: 2127
Imported [Flarum\Discussion\Discussion] models up to ID: 2656
Imported [Flarum\Discussion\Discussion] models up to ID: 3485
Imported [Flarum\Discussion\Discussion] models up to ID: 3995
All [Flarum\Discussion\Discussion] records have been imported.

PHP Fatal error:  Uncaught TypeError: V17Development\FlarumSeo\Formatter\FormatLinks::__invoke(): Argument #1 ($renderer) must be of type s9e\TextFormatter\Renderer, __PHP_Incomplete_Class given, called in /www/wwwroot/discuss.org/vendor/flarum/core/src/Foundation/ContainerUtil.php on line 30 and defined in /www/wwwroot/discuss.org/vendor/v17development/flarum-seo/src/Formatter/FormatLinks.php:56
Stack trace:
#0 /www/wwwroot/discuss.org/vendor/flarum/core/src/Foundation/ContainerUtil.php(30): V17Development\FlarumSeo\Formatter\FormatLinks->__invoke()
#1 /www/wwwroot/discuss.org/vendor/flarum/core/src/Formatter/Formatter.php(114): Flarum\Foundation\ContainerUtil::Flarum\Foundation\{closure}()
#2 /www/wwwroot/discuss.org/vendor/flarum/core/src/Post/CommentPost.php(174): Flarum\Formatter\Formatter->render()
#3 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/extend.php(98): Flarum\Post\CommentPost->formatContent()
#4 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/ScoutModelWrapper.php(165): Flarum\Extension\Extension->ClarkWinkelmann\Scout\{closure}()
#5 /www/wwwroot/discuss.org/vendor/laravel/scout/src/Engines/MeiliSearchEngine.php(62): ClarkWinkelmann\Scout\ScoutModelWrapper->toSearchableArray()
#6 [internal function]: Laravel\Scout\Engines\MeiliSearchEngine->Laravel\Scout\Engines\{closure}()
#7 /www/wwwroot/discuss.org/vendor/illuminate/collections/Collection.php(695): array_map()
#8 /www/wwwroot/discuss.org/vendor/illuminate/database/Eloquent/Collection.php(350): Illuminate\Support\Collection->map()
#9 /www/wwwroot/discuss.org/vendor/laravel/scout/src/Engines/MeiliSearchEngine.php(71): Illuminate\Database\Eloquent\Collection->map()
#10 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/ScoutServiceProvider.php(100): Laravel\Scout\Engines\MeiliSearchEngine->update()
#11 /www/wwwroot/discuss.org/vendor/illuminate/macroable/Traits/Macroable.php(124): Illuminate\Database\Eloquent\Collection->ClarkWinkelmann\Scout\{closure}()
#12 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/FlarumSearchableScope.php(46): Illuminate\Support\Collection->__call()
#13 /www/wwwroot/discuss.org/vendor/illuminate/database/Concerns/BuildsQueries.php(139): ClarkWinkelmann\Scout\FlarumSearchableScope->ClarkWinkelmann\Scout\{closure}()
#14 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/FlarumSearchableScope.php(49): Illuminate\Database\Eloquent\Builder->chunkById()
#15 /www/wwwroot/discuss.org/vendor/illuminate/database/Eloquent/Builder.php(1639): ClarkWinkelmann\Scout\FlarumSearchableScope->ClarkWinkelmann\Scout\{closure}()
#16 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/ScoutStatic.php(37): Illuminate\Database\Eloquent\Builder->__call()
#17 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/Console/ModifiedImportTrait.php(22): ClarkWinkelmann\Scout\ScoutStatic::makeAllSearchable()
#18 /www/wwwroot/discuss.org/vendor/clarkwinkelmann/flarum-ext-scout/src/Console/ImportAllCommand.php(29): ClarkWinkelmann\Scout\Console\ImportAllCommand->handleClass()
#19 /www/wwwroot/discuss.org/vendor/illuminate/container/BoundMethod.php(36): ClarkWinkelmann\Scout\Console\ImportAllCommand->handle()
#20 /www/wwwroot/discuss.org/vendor/illuminate/container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#21 /www/wwwroot/discuss.org/vendor/illuminate/container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#22 /www/wwwroot/discuss.org/vendor/illuminate/container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#23 /www/wwwroot/discuss.org/vendor/illuminate/container/Container.php(653): Illuminate\Container\BoundMethod::call()
#24 /www/wwwroot/discuss.org/vendor/illuminate/console/Command.php(136): Illuminate\Container\Container->call()
#25 /www/wwwroot/discuss.org/vendor/symfony/console/Command/Command.php(298): Illuminate\Console\Command->execute()
#26 /www/wwwroot/discuss.org/vendor/illuminate/console/Command.php(121): Symfony\Component\Console\Command\Command->run()
#27 /www/wwwroot/discuss.org/vendor/symfony/console/Application.php(1058): Illuminate\Console\Command->run()
#28 /www/wwwroot/discuss.org/vendor/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand()
#29 /www/wwwroot/discuss.org/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
#30 /www/wwwroot/discuss.org/vendor/flarum/core/src/Console/Server.php(42): Symfony\Component\Console\Application->run()
#31 /www/wwwroot/discuss.org/flarum(24): Flarum\Console\Server->listen()
#32 {main}
  thrown in /www/wwwroot/discuss.org/vendor/v17development/flarum-seo/src/Formatter/FormatLinks.php on line 56

Error on suggestedAnswer in google Search

Hello, thank you for your ext.

I have some errors on google console when a discussion.

This happens on page with only Stream post like edit title, change tags, etc

You can found an example here: https://mondedie.fr/d/10326-[Tuto]-Certificat-Wildcard-et-serveur-DNS-autoritaire-NSD/DNSSEC-Docker

I see in the code you get all posts and you count. Can you get only the "real" post?

$this->posts = $this->discussion->posts()->get()->getDictionary();

Bundled translations maintenance status

What is the status of translations provided in https://github.com/v17development/flarum-seo/tree/master/locale? I'm trying to cleanup redundant translations from Weblate - if translation for given language is already bundled with extension, there is no sense to have it duplicated in Weblate. But this is true only for actively maintained translations, which usually means only translations maintained by extension author. For example if extension author knows Italian, he can provide en and it translations, while the rest should probably be handled inside of respective language packs. So now I'm trying to figure out which translations are available because of extension author knows this language and will be able to maintain them, and which are just leftovers from old days where translations were contributed by community to extensions instead of language packs (in that case translations may become outdated after some times, since nobody will update them).

So how does it looks like for https://github.com/v17development/flarum-seo/tree/master/locale? Which languages do you know and will be able to update if any change will be needed?

Language tag

Can you add ability to set website language tag?
e.g. <html lang = "en">

Q&A Metadata should respect "best answer" permission model to avoid Google crawler errors

When you have the extension 'best answer' installed and enabled on your forum, it will mark the discussion as 'answered' on the search results and redirect the user to that specific post.

Awesome! However,

Per the plugin's authors, "FOF Best Answers" let's you choose only certain tags to allow "best answer" by setting permissions (see FriendsOfFlarum/best-answer#35).

permission in best nswer plugin limiting to certain tags

But when doing that this plugin still marks all discussions as Q&A, causing Google to be angry.

Screen Shot 2021-08-06 at 4 32 57 PM

I would like this plugin to check permission and only apply to tags where ability to mark "best answer" is open to members OR just let us define the tags to apply the Q&A type vs ForumDiscussion type

Thanks for the great plugin!

Use display name instead of username for author and profile

Nice extension.

I haven't tried it yet but went through the code to check how it's working.

I notice you always use the username user property for the meta author name.

Beta 8 introduced the display_name user property. So far I don't think any extension uses this feature but you might already want to switch to that property so you're ready. For now display_name is always the same as username unless an extension provides another one.

I'll be able to provide a PR in the future but I already wanted to make you aware of it 😉

Container was not yet initialized Error? setTitle

Hi,

I have very limited experience with this. How do I fix this error? Please help.

flarum.ERROR: Exception: V17Development\FlarumSeo\Extend::setTitle(..): Container was not yet initialized. in /app/vendor/v17development/flarum-seo/src/Extend.php:196
Stack trace:

Flooding logs when tag is not found

It looks like Flarum is writing a lot of logs when a tag is not found. Need some try-catch on
https://github.com/v17development/flarum-seo/blob/master/src/Managers/Tag.php#L41

Just like discussions has a try-catch
https://github.com/v17development/flarum-seo/blob/master/src/Managers/Discussion.php#L50

Following logs are from a topic on the Flarum Community asked by Collins: https://discuss.flarum.org/d/18330-error-logs

[2019-01-06 00:55:27] production.ERROR: Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [Flarum\Tags\Tag]. in /home/huddioat/public_html/vendor/illuminate/database/Eloquent/Builder.php:414
Stack trace:
#0 /home/huddioat/public_html/vendor/flarum/tags/src/TagRepository.php(42): Illuminate\Database\Eloquent\Builder->firstOrFail()
#1 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Managers/Tag.php(41): Flarum\Tags\TagRepository->findOrFail(Object(Illuminate\Support\Collection))
#2 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(133): V17Development\FlarumSeo\Managers\Tag->construct(Object(V17Development\FlarumSeo\Listeners\PageListener), Object(Illuminate\Support\Collection))
#3 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\PageListener->determine()
#4 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->invoke(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#5 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#6 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\ServerRequest))
#7 /home/huddioat/public_html/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diactoros\ServerRequest))
#8 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http{closure}(Object(Zend\Diactoros\ServerRequest), Array)
#9 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object(Zend\Diactoros\ServerRequest), Object(Closure))
#10 /home/huddioat/public_html/vendor/flagrow/terms/src/Middlewares/RegisterMiddleware.php(59): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#11 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flagrow\Terms\Middlewares\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /home/huddioat/public_html/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#13 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#15 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#17 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#19 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#24 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#27 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /home/huddioat/public_html/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#32 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#33 /home/huddioat/public_html/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#34 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#35 /home/huddioat/public_html/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#36 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#37 /home/huddioat/public_html/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#38 /home/huddioat/public_html/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#39 /home/huddioat/public_html/public/index.php(22): Flarum\Http\Server->listen()
#40 {main} 

[2019-01-06 02:53:59] production.ERROR: Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [Flarum\Tags\Tag]. in /home/huddioat/public_html/vendor/illuminate/database/Eloquent/Builder.php:414
Stack trace:
#0 /home/huddioat/public_html/vendor/flarum/tags/src/TagRepository.php(42): Illuminate\Database\Eloquent\Builder->firstOrFail()
#1 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Managers/Tag.php(41): Flarum\Tags\TagRepository->findOrFail(Object(Illuminate\Support\Collection))
#2 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(133): V17Development\FlarumSeo\Managers\Tag->construct(Object(V17Development\FlarumSeo\Listeners\PageListener), Object(Illuminate\Support\Collection))
#3 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\PageListener->determine()
#4 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->invoke(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#5 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#6 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\ServerRequest))
#7 /home/huddioat/public_html/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diactoros\ServerRequest))
#8 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http{closure}(Object(Zend\Diactoros\ServerRequest), Array)
#9 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object(Zend\Diactoros\ServerRequest), Object(Closure))
#10 /home/huddioat/public_html/vendor/flagrow/terms/src/Middlewares/RegisterMiddleware.php(59): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#11 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flagrow\Terms\Middlewares\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /home/huddioat/public_html/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#13 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#15 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#17 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#19 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#24 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#27 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /home/huddioat/public_html/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#32 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#33 /home/huddioat/public_html/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#34 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#35 /home/huddioat/public_html/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#36 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#37 /home/huddioat/public_html/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#38 /home/huddioat/public_html/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#39 /home/huddioat/public_html/public/index.php(22): Flarum\Http\Server->listen()
#40 {main} 

[2019-01-06 07:59:55] production.ERROR: Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [Flarum\Tags\Tag]. in /home/huddioat/public_html/vendor/illuminate/database/Eloquent/Builder.php:414
Stack trace:
#0 /home/huddioat/public_html/vendor/flarum/tags/src/TagRepository.php(42): Illuminate\Database\Eloquent\Builder->firstOrFail()
#1 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Managers/Tag.php(41): Flarum\Tags\TagRepository->findOrFail(Object(Illuminate\Support\Collection))
#2 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(133): V17Development\FlarumSeo\Managers\Tag->construct(Object(V17Development\FlarumSeo\Listeners\PageListener), Object(Illuminate\Support\Collection))
#3 /home/huddioat/public_html/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(106): V17Development\FlarumSeo\Listeners\PageListener->determine()
#4 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->invoke(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#5 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#6 /home/huddioat/public_html/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diactoros\ServerRequest))
#7 /home/huddioat/public_html/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend\Diactoros\ServerRequest))
#8 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\Http{closure}(Object(Zend\Diactoros\ServerRequest), Array)
#9 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\DispatchRoute->process(Object(Zend\Diactoros\ServerRequest), Object(Closure))
#10 /home/huddioat/public_html/vendor/fof/secure-https/src/Middlewares/ContentSecurityPolicyMiddleware.php(21): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#11 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): FoF\SecureHttps\Middlewares\ContentSecurityPolicyMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#12 /home/huddioat/public_html/vendor/reflar/stopforumspam/src/Middleware/RegisterMiddleware.php(75): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#13 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Reflar\Stopforumspam\middleware\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /home/huddioat/public_html/vendor/flagrow/terms/src/Middlewares/RegisterMiddleware.php(59): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#15 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flagrow\Terms\Middlewares\RegisterMiddleware->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#17 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ShareErrorsFromSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#19 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\SetLocale->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#24 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#27 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /home/huddioat/public_html/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#31 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/Next.php(52): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#32 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(91): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#33 /home/huddioat/public_html/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#34 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#35 /home/huddioat/public_html/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#36 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#37 /home/huddioat/public_html/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#38 /home/huddioat/public_html/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(78): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\MiddlewarePipe))
#39 /home/huddioat/public_html/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#40 /home/huddioat/public_html/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#41 /home/huddioat/public_html/public/index.php(22): Flarum\Http\Server->listen()
#42 {main}

Option to remove site name from meta titles in search results

Currently, Flarum adds the site's name at the end of all the meta titles on the entire site. Titles look broken in Google search results because of that.

dhS5cP

A simple option to disable the inclusion of the site's name in meta titles would be great.

Imgur image URL is using the relative protocol

image

https://discuss.flarum.org/d/18316-flarum-seo/498

public function setImageFromContent($content = null)
    {
        // Check post content is not empty
        if($content !== null) {
            // Read Post content and filter image url
            $pattern = '/(?<=src=")((http.*?\.)(jpe?g|png|[tg]iff?|svg))(?=")/';

            // Use image from post for social media og:image
            if (preg_match_all($pattern, $content, $matches) && count($matches) > 0) {
                $contentImage = $matches[0][0];

                if ($contentImage !== null) {
                    $this->setImage($contentImage);
                    return $this;
                }
            }
        }

        return $this;
    }

To solve this, remove preg replace

file: /vendor/fof/upload/src/Adapters/Imgur.php
// successful upload, let's get the generated URL
        if ($response->getStatusCode() == 200) {
            $meta = Arr::get(json_decode($response->getBody(), true), 'data', []);

            $link = Arr::get($meta, 'link');

            $file->url = $link; //preg_replace('/^https?:/', null, $link);
            $file->remote_id = Arr::get($meta, 'id');
        }

Disabling SEO extension causes fatal error (^1.0)

Initially (after upgrading from beta 16 to stable 1.0) when I disabled the extension (investigating other bugs) I noticed that it directly caused a HTTP ERROR 500 so the console doesn't show any data and I didn't get any log in storage/logs about it.

After removing the extension and reinstalling it, I disabled it and this time it did throw an error (debug mode enabled):

Exception thrown with message "V17Development\FlarumSeo\Extend::setTitle(..): Container was not yet initialized."

Stacktrace:
#60 Exception in /var/www/flarum/vendor/v17development/flarum-seo/src/Extend.php:196
#59 V17Development\FlarumSeo\Extend:throwError in /var/www/flarum/vendor/v17development/flarum-seo/src/Extend.php:36
#58 V17Development\FlarumSeo\Extend:setTitle in /var/www/flarum/vendor/v17development/flarum-blog/src/Controller/BlogOverviewController.php:40
#57 V17Development\FlarumBlog\Controller\BlogOverviewController:__invoke in /var/www/flarum/vendor/flarum/core/src/Frontend/Frontend.php:62
#56 Flarum\Frontend\Frontend:populate in /var/www/flarum/vendor/flarum/core/src/Frontend/Frontend.php:54
#55 Flarum\Frontend\Frontend:document in /var/www/flarum/vendor/flarum/core/src/Frontend/Controller.php:32
#54 Flarum\Frontend\Controller:handle in /var/www/flarum/vendor/flarum/core/src/Http/RouteHandlerFactory.php:41
#53 Flarum\Http\RouteHandlerFactory:Flarum\Http\{closure} in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php:27
#52 Flarum\Http\Middleware\ExecuteRoute:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#51 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/terms/src/Middlewares/RegisterMiddleware.php:48
#50 FoF\Terms\Middlewares\RegisterMiddleware:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#49 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/discussion-language/src/Middleware/AddLanguageFilter.php:32
#48 FoF\DiscussionLanguage\Middleware\AddLanguageFilter:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#47 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/fof/oauth/src/Middleware/ErrorHandler.php:46
#46 FoF\OAuth\Middleware\ErrorHandler:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#45 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ContentTypeOptionsHeader.php:21
#44 Flarum\Http\Middleware\ContentTypeOptionsHeader:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#43 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ReferrerPolicyHeader.php:30
#42 Flarum\Http\Middleware\ReferrerPolicyHeader:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#41 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/FlarumPromotionHeader.php:30
#40 Flarum\Http\Middleware\FlarumPromotionHeader:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#39 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php:57
#38 Flarum\Http\Middleware\ShareErrorsFromSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#37 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php:36
#36 Flarum\Http\Middleware\CheckCsrfToken:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#35 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php:67
#34 Flarum\Http\Middleware\ResolveRoute:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#33 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/SetLocale.php:51
#32 Flarum\Http\Middleware\SetLocale:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#31 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php:31
#30 Flarum\Http\Middleware\AuthenticateWithSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#29 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php:52
#28 Flarum\Http\Middleware\RememberFromCookie:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#27 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/StartSession.php:61
#26 Flarum\Http\Middleware\StartSession:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#25 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php:46
#24 Flarum\Http\Middleware\CollectGarbage:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#23 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php:28
#22 Flarum\Http\Middleware\ParseJsonBody:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#21 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/migratetoflarum/canonical/src/Middlewares/CanonicalRedirectMiddleware.php:49
#20 MigrateToFlarum\Canonical\Middlewares\CanonicalRedirectMiddleware:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#19 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/HandleErrors.php:57
#18 Flarum\Http\Middleware\HandleErrors:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#17 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php:25
#16 Flarum\Http\Middleware\InjectActorReference:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#15 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:84
#14 Laminas\Stratigility\MiddlewarePipe:process in /var/www/flarum/vendor/middlewares/request-handler/src/RequestHandler.php:84
#13 Middlewares\RequestHandler:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#12 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/middlewares/base-path-router/src/BasePathRouter.php:101
#11 Middlewares\BasePathRouter:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#10 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php:42
#9 Laminas\Stratigility\Middleware\OriginalMessages:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#8 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/middlewares/base-path/src/BasePath.php:73
#7 Middlewares\BasePath:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#6 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/flarum/core/src/Http/Middleware/ProcessIp.php:24
#5 Flarum\Http\Middleware\ProcessIp:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/Next.php:61
#4 Laminas\Stratigility\Next:handle in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:84
#3 Laminas\Stratigility\MiddlewarePipe:process in /var/www/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php:73
#2 Laminas\Stratigility\MiddlewarePipe:handle in /var/www/flarum/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php:96
#1 Laminas\HttpHandlerRunner\RequestHandlerRunner:run in /var/www/flarum/vendor/flarum/core/src/Http/Server.php:44
#0 Flarum\Http\Server:listen in /var/www/flarum/public/index.php:26

Server details:

Operating System: CentOS Linux 8
Kernel: Linux 4.18.0-240.15.1.el8_3.x86_64
Flarum core 0.1.0-beta.16
nginx version: nginx/1.18.0
10.3.28-MariaDB
PHP version: 8.0.3
Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, pcntl, readline, Reflection, SPL, session, standard, bz2, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, intl, json, exif, mysqlnd, PDO, Phar, SimpleXML, sockets, sodium, sqlite3, tokenizer, xml, xmlwriter, xsl, mysqli, pdo_mysql, pdo_sqlite, xmlreader, Zend OPcache

Social media image

When choosing an image, users can choose (and upload) any type of file. It should be fixed to support only PNG, JPEG and JPG

allow to define custom canonical urls : enhancement

Hello, we want to use flarum as a commentator on a static page. for the same, we will be embedding flarum discussion. this may cause duplicate content on two different pages, so we just want to mention that the discussion URL is canonical to the original blog post URL .

allow us to define a custom canonical URL so where can mention the blog post URL as the main URL

example page https://blog.codinghorror.com/what-does-stack-overflow-want-to-be-when-it-grows-up/#discourse-comments

https://ghost.org/integrations/discourse/

Keywords for each post

Hey! Have you thought about adding the possibility to add custom keywords for each post? (something like Wordpress does)

Cache posts for QAPage

Some discussion between matteocontrini and me on the Flarum forum about what would be the best way to send the post of a discussion to the crawler using QAPages.

Possible solutions:

  • Don't add posts to the QAPages
  • Limit the posts at the QAPages: max 5 results, as search engines do not preview all them just a few, but, Google for example indexes the content of the posts as well, so that could be usefull for search results
  • Cache the JSON string of the discussion posts and save it to the cache directory on the server disk and re-cache it once per day per discussion
  • Hide the json (with the posts) for normal browser requests, only show for crawlers/bots

Discuss

What would be a great solution? Other ideas or tips?

Extender causes forum loading to fail

Error:

In case you have any extension enabled that uses the Extend class in this extension and this extension is not enabled, it will throw an unrecoverable exception.

Assumption:

I assume you are throwing this exception for issues in the past under similar circumstances.

Solution:

Use Container::make to get a singleton object. Core uses the same method, so in case the singleton has not yet been instantiated it will do now. The reason no Container is bound yet is because this extension wasn't booted.

unable to updated to v1.0

update issue

Problem 1                                                                                                                                                             
    - v17development/flarum-seo[v1.7.0, ..., v1.7.2] require flarum/core ^0.1.0-beta.16 -> found flarum/core[v0.1.0-beta.16] but it does not match your minimum-stabilit
y.                                                                                                                                                                      
    - Root composer.json requires v17development/flarum-seo ^1.7 -> satisfiable by v17development/flarum-seo[v1.7.0, v1.7.1, v1.7.2].                                   
                                                                                                                                                                        
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions. 

https://github.com/v17development/flarum-seo/search?q=16

https://discuss.flarum.org/d/18316-flarum-seo/454

Empty value

Flarum 0.1.0-beta.9
vendor\v17development\flarum-seo\src\Managers\QADiscussion.php
$this->firstPost->getAttribute('contentHtml') empty value

Missing field "mainEntity.suggestedAnswer.text"

Hi Jasper, thanks for the Flarum SEO extension. It works like a Charm!!!

I recently encountered an error message in Google search console about the missing attribute in Schema(screengrab below) which Google is considering as a 'required properties' to display as QandA result.

Search Console Error Message

Referring to screenshot:

  1. Instead of text field displaying as null, I guess it should include the actual response (reply) text in the field. -- this will fix the error "mainEntity.suggestedAnswer.text"
  2. I also use the Best Answer extension hence, If anyone accepts a response as an answer then that text should be tagged as acceptedAnswer property -- this will help better Q&A schema in SERP ranking and may also eliminate the error "mainEntity.acceptedAnswer.text" in future

Thank you so much!!

Unable to render Twitter card preview

I am running on the latest extension (1.0.2) and when I try to preview Twitter card it shows me the below log:

INFO:  Page fetched successfully
INFO:  15 metatags were found
INFO:  twitter:card = summary tag found
ERROR: Possibly invalid value (if specified) (twitter:title)
ERROR: Possibly invalid value (if specified) (og:title)
ERROR: Possibly invalid value (if specified) (twitter:text:title)

Improvement | Dynamic Covers

I mean to add a different preview picture for each topic, each discussion and page.
The thing is that the SEO plugin puts a static image on all forum links.
This is very sad.

Your plugin could be very cool if you add the function of selecting a preview picture for each discussion, topic and section (each page). But if it does this automatically - you will create a revolution! I personally will promote you everywhere.

I'll describe the case:
I'm sharing a link on Telegram, Watsap or Facebook and I get a static picture that I put in the SEO plugin. This happens even when the discussion I'm sharing has a different picture. The SEO plugin puts a static picture on everything.

I told you to have the main picture (dynamic) of the discussion on the preview.

The other thumbnail plugin does small previews on the forum, it doesn't affect previews on other sites.

Exception when the author of the discussion is a deleted user

I have a discussion where the user of the first post in the discussion has been deleted, and this extension is causing a 500 error response with this exception:

[2019-07-06 13:13:02] production.ERROR: Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [Flarum\User\User]. in /usr/local/
openresty/nginx/www/fibraclick-forum/vendor/illuminate/database/Eloquent/Builder.php:414
Stack trace:
#0 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/User/UserRepository.php(42): Illuminate\Database\Eloquent\Builder->firstOrFail()
#1 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(380): Flarum\User\UserRepository->findO
rFail(NULL)
#2 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/v17development/flarum-seo/src/Managers/Discussion.php(115): V17Development\FlarumSeo\Listeners\P
ageListener->getUser(NULL)
#3 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/v17development/flarum-seo/src/Managers/Discussion.php(41): V17Development\FlarumSeo\Managers\Dis
cussion->createTags()
#4 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(150): V17Development\FlarumSeo\Managers
\Discussion->__construct(Object(V17Development\FlarumSeo\Listeners\PageListener), Object(Flarum\Discussion\DiscussionRepository), '3158-ftth-tisca...')
#5 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/v17development/flarum-seo/src/Listeners/PageListener.php(116): V17Development\FlarumSeo\Listener
s\PageListener->determine()
#6 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Frontend/Frontend.php(65): V17Development\FlarumSeo\Listeners\PageListener->__in
voke(Object(Flarum\Frontend\Document), Object(Zend\Diactoros\ServerRequest))
#7 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Frontend/Frontend.php(57): Flarum\Frontend\Frontend->populate(Object(Flarum\Fron
tend\Document), Object(Zend\Diactoros\ServerRequest))
#8 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Frontend/Controller.php(34): Flarum\Frontend\Frontend->document(Object(Zend\Diac
toros\ServerRequest))
#9 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/RouteHandlerFactory.php(40): Flarum\Frontend\Controller->handle(Object(Zend
\Diactoros\ServerRequest))
#10 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/DispatchRoute.php(67): Flarum\Http\RouteHandlerFactory->Flarum\
Http\{closure}(Object(Zend\Diactoros\ServerRequest), Array)
#11 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\DispatchRoute->process
(Object(Zend\Diactoros\ServerRequest), Object(Closure))
#12 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/ShareErrorsFromSession.php(58): Zend\Stratigility\Next->handle(
Object(Zend\Diactoros\ServerRequest))
#13 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\ShareErrorsFromSession
->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#14 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Zend\Stratigility\Next->handle(Object(Zend\D
iactoros\ServerRequest))
#15 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\SetLocale->process(Obj
ect(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#16 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(34): Zend\Stratigility\Next->handle
(Object(Zend\Diactoros\ServerRequest))
#17 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\AuthenticateWithSessio
n->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#18 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#19 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\RememberFromCookie->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#20 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/StartSession.php(62): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#21 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\StartSession->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#22 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/CollectGarbage.php(48): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#23 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\CollectGarbage->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#24 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(29): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#25 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\ParseJsonBody->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#26 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Middleware/HandleErrorsWithView.php(67): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#27 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Flarum\Http\Middleware\HandleErrorsWithView->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#28 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#29 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/middlewares/request-handler/src/RequestHandler.php(84): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#30 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Middlewares\RequestHandler->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#31 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/middlewares/base-path-router/src/BasePathRouter.php(97): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#32 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Middlewares\BasePathRouter->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#33 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/middlewares/base-path/src/BasePath.php(53): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#34 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/Next.php(60): Middlewares\BasePath->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\Next))
#35 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(83): Zend\Stratigility\Next->handle(Object(Zend\Diactoros\ServerRequest))
#36 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-stratigility/src/MiddlewarePipe.php(72): Zend\Stratigility\MiddlewarePipe->process(Object(Zend\Diactoros\ServerRequest), Object(Zend\Stratigility\EmptyPipelineHandler))
#37 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/zendframework/zend-httphandlerrunner/src/RequestHandlerRunner.php(95): Zend\Stratigility\MiddlewarePipe->handle(Object(Zend\Diactoros\ServerRequest))
#38 /usr/local/openresty/nginx/www/fibraclick-forum/vendor/flarum/core/src/Http/Server.php(46): Zend\HttpHandlerRunner\RequestHandlerRunner->run()
#39 /usr/local/openresty/nginx/www/fibraclick-forum/public/index.php(22): Flarum\Http\Server->listen()
#40 {main}

Social image meta tag per post

So currently if you share the post it's preview image does not tell anything about it because every post has the same uploaded image from this extension. Because of this a lot of people would not click the post and advertising is also harder or almost impossible (sadly images really makes that big of a difference). So I was hoping there could be added a option where we could change the social media image for specific post. So a system where you could upload or put a image url in some additional setting window at each post would help a lot. this would then update the meta tags for that post with new image. And sharing would become so much more functionally.

Make use of the new advanced link handling in core

With the new version of Flarum (1.4.0) I think there is a great potential to add different options to the extension related to the new extender that allow the user to add different behaviours like dofollow on internal links... etc.

Personally I'm not really into this, but seeing the huge interest in this from the community, in multiple Discuss threads... I think it would be great that before related extensions come out, this could be included from here.

Some interesting links on the subject:

Extention "FoF Filter" broken

The extention FoF Filter is broken. It shows up things like
random_text.random_text.button_hello. Could you fix it? Thanks!

Performance issues in busy forums with the likes extension

Hello! very useful extension for the ecosystem!

Issue
Someone reported a performance problem with what they believed was the flarum/likes extension: https://discuss.flarum.org/d/30913-huge-performance-problem-refreshing-takes-20sec-or-longer/. However, having looked into it, the problem stems from this extension, which was confirmed after enabling/disabling this extension.

These are the readings from clockwork:
Screenshot from 2022-07-16 21-08-05
Screenshot from 2022-07-16 20-52-55

I am not familiar with the source code, but a quick glance suggests the following:

In a busy forum this can easily lead to significant performance issues.

Possible Solutions
I'm not familiar with the targetted behavior, but I'd look into these:

Thanks.

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.