Open dannylamb opened 6 years ago
@dannylamb I've been playing around with these modules and feel like I've got a pretty good handle on them and how they could be used for Islandora 8. Both modules should work out of the box with custom content types.
How do we proceed with this? I could write up documentation for how to configure them. I could also try to export some example configurations for islandora_demo
but that would require making these modules a dependency. How do we feel about that?
Google Scholar also prefers for IRs to have access to lists of all content published in a certain year, which we accomplished in 7.x by having a basic page with links to canned Solr searches. Not sure if this would be a good thing to do programmatically in 8.x or just mention it in documentation.
Another option would be to create some sort of islandora_seo
module that requires simple_sitemap
and metatag
, and it could even included a setup checklist (using the Checklist API and Tour). We've talked about doing something similar with Scholar (not wanting to lose the name recognition of Scholar but also not wanting to build a mega-package) to make it more of an "IR Starter Kit" that points to other generic modules instead of a rabbit hole of related functionality.
I like @bryjbrown's suggestion of making this a separate islandora_seo module that can be pulled in or forked as necessary.
:+1: to decoupling from the metadata profile if possible. If you can throw up some default or demo config, I'd love to see it.
Also,
Google Scholar also prefers for IRs to have access to lists of all content published in a certain year, which we accomplished in 7.x by having a basic page with links to canned Solr searches. Not sure if this would be a good thing to do programmatically in 8.x or just mention it in documentation.
The answer you seek is views @bryjbrown
As it currently stands, Islandora 8 Demo uses the RDF mapping to embed RDFa into Repository Item and the Controlled Access Term pages which can be used by search engines (at least Google and Bing) without the need to metatag. However, the typed relations and @type
override only apply to the JSON-LD serialization, which means our more granular relationships and types don't appear in the RDFa. (Because the RDF module didn't have any hooks to support this while the JSON-LD module did.)
I can see two possible ways of addressing this:
P.S. If we pursued pushing the JSON-LD into the HTML page, then we would need to remove the _format=jsonld
from the identifier, as per #887, to avoid confusing the search engine as to what the JSON-LD is describing.
P.P.S. Most of the references to Bing suggest JSON-LD is only supported for Schema.org, not Dublin Core (although I can't find anything conclusive) and, as per #1074, we can't really mix Schema.org with Dublin Core without making Google grumpy. So perhaps we need metatag to get our Dublin Core into Bing while using JSON-LD for Google? That feels excessive...
I cannot give enough :+1:'s for option 1. Scrub _format=jsonld
from all the URLs AND make Google happy? YES PLEASE.
Just checking on this one, has option 1 from @seth-shaw-unlv 's solution been added to the codebase ? This issue remains open but it seems like it may have been resolved here: https://github.com/Islandora/documentation/issues/887
@hachacha. the URLs portion was addressed as you point out. However, I don't believe we add the JSON-LD to the page headers yet.
Further, while I initially thought we could use a src link <script type="application/ld+json" src="https://future.islandora.ca/node/9?_format=jsonld" />
all the examples I've found include the json ld embedded in the script tag like so:
<script type="application/ld+json">
{"@graph":[{"@id":"https://future.islandora.ca/node/9","@type":["http://pcdm.org/models#Object","http://purl.org/coar/resource_type/c_c513"],"http://schema.org/author":[{"@id":"https://future.islandora.ca/user/1"}],"http://purl.org/dc/terms/title":[{"@value":"Grey and White Tabby Kitten","@language":"en"}],"http://schema.org/dateCreated":[{"@value":"2019-06-04T14:46:17+00:00","@type":"http://www.w3.org/2001/XMLSchema#dateTime"}],"http://schema.org/dateModified":[{"@value":"2019-06-05T04:05:52+00:00","@type":"http://www.w3.org/2001/XMLSchema#dateTime"}],"http://purl.org/dc/terms/description":[{"@value":"A worried-looking kitten. ","@language":"en"}],"http://purl.org/dc/terms/created":[{"@value":"2019-04-19","@type":"http://www.w3.org/2001/XMLSchema#string"},{"@value":"2019-04-19","@type":"http://www.w3.org/2001/XMLSchema#date"}],"http://purl.org/dc/terms/extent":[{"@value":"1 item","@type":"http://www.w3.org/2001/XMLSchema#string"}],"http://pcdm.org/models#memberOf":[{"@id":"https://future.islandora.ca/node/7"}],"http://purl.org/dc/terms/type":[{"@id":"https://future.islandora.ca/taxonomy/term/5"}],"http://purl.org/dc/terms/subject":[{"@id":"https://future.islandora.ca/taxonomy/term/27"}],"http://schema.org/sameAs":[{"@id":"https://future.islandora.ca/node/9"}]},{"@id":"https://future.islandora.ca/user/1","@type":["http://schema.org/Person"]},{"@id":"https://future.islandora.ca/node/7","@type":["http://pcdm.org/models#Object"]},{"@id":"https://future.islandora.ca/taxonomy/term/5","@type":["http://schema.org/Thing"]},{"@id":"https://future.islandora.ca/taxonomy/term/27","@type":["http://schema.org/Thing"]}]}
</script>
I don't know how kindly Google will take to simply adding the link as initially suggested.
For the RDM project, we used schema.org Metatag module which converts metatags into JSON-LD i the header.
This largely depends on having a 'default metadata profile' (the stuff of legends!), but we should be shipping with the
metatag
module and an assortment of its profile specific modules for things like AMP support, twitter/facebook embedding, etc...https://www.drupal.org/project/metatag
We should also provide xml sitemap capabilities, as they have proven invaluable in 7.x development.
https://www.drupal.org/project/simple_sitemap
That sweet sweet SEO juice should be an out-of-the-box feature for CLAW.