Contentful and get all city pages links that are in a particular state - content-management-system

I'm having a devil of a time modeling things in Contentful. I did the tutorials, but still don't even know where to begin.
I sell tutoring services, brokering, in many states. So, I want to display, on front page, all the states... but when click, you get all the cities... you click a city, you get all the tutoring topics.
This, as you can imagine, will get into the thousands as I am very SEO conscious and will need custom info per city etc..
How would/should I model the US, then then states, then cities...and each city could have like 4 or 5 separate tutoring pages. 1 specific for Math, or Spanish or Guitar etc..
I guess US & state will have one to many relationships, but how do I create "links", so I can:
List out all states
List out all cities
Get particular city page with tutorials. User would have selected something like /us/california/san-diego/lesson-guitar.
So, user lands on homepage
Alabama
Arkansas
California
Connecticut
etc...
`1. Person clicks on California..
2. Person sees some California info, like a page:California
3. At bottom of page, a list of all the serviceable cities.
4. Person clicks city. Let's say San Diego. They see the page:sanDiego page.. with list of tutoring etc..`
There seems there will be page types, but not sure how to add links to the various cities, states etc...
Like, what field would I add to show all valid states in the US? Would that be a separate content type? Or would I add that to the various "pages" and would it be an array or ?
So confusing.

In this case, I'll create a separate content type for States and Cities. In the tutoring and brokering content types, I will then add a reference field that would refer to the City and State content type.
Hope this helps :)

Related

Is there a way to display the Product Title before the Brand Name in Facebook Page Shop?

I exported all the tags required by Facebook from my third-party online store (Lightspeed) and the data stream works as expected in terms of automatic updates, but products on my facebook page shop (Shop tab) are displayed with the brand name first — L'Oratoire Saint-Joseph — followed by the product title.
See it live : https://www.facebook.com/osaintjoseph/
The unfortunate result is that the text under many products is exactly the same. Is there a way to display the Product Title before the Brand Name?
Lightspeed support told me I had to take it up with Facebook. I am awaiting their reply. See my questions in the fb developer forum here : https://developers.facebook.com/settings/developer/community/
There are 3 ways to add products to Facebook Shop:
Manually
Data feed (e.g. CSV import)
Third party plugins (which you’re using).
Manually – the user is only able to enter 4 properties; title, description, image & variant. See facebook.com/business/help/293945421560847. There is no concept of product brand.
Data feed – this allows for additional properties, such as brand name. In the table, see example files and select product (csv, tsv or xml) facebook.com/business/help/120325381656392?id=725943027795860. However it looks like all Facebook does is concatenate string, that's the product title becomes "{brandName} – {productName}". It look like brand name is not used anywhere else. Nor is there an option to change the way it's displayed. If you edit the product, you should be able to see this in the Product Title.
Shop tab (third party plugin) – (May be it's me, but I found their documentation hard to follow) – They send an XML feed to Facebook support.shoptab.net/hc/en-us/articles/200583466-XML-Feed-for-Facebook-Storefront-with-ShopTab. They do not appear to have a concept of brand. Try and examine the data. I would expect the brand name to appear in the product title. Alternatively they allow for CSV, which also doesn't contain brand name support.shoptab.net/hc/en-us/articles/200583906-CCNow-Integration-with-ShopTab-s-Facebook-Store-App
Summary
If possible, examine the data that is sent from Shop tab to Facebook.
Try and find out if you’re able to exclude / alter the string concatenation of brand name from product title in Shop tab. If not raise a support ticket with them.
Alternatively see if you can manually edit the product title in Facebook. It’s not a long-term fix, but helps understand how the system are integrated.

Which property to use for WebPage sections?

I have pages that aren't articles and have multiple sections on the page describing different organizations/services and their information. I am defining the page as a WebPage since this page isn't really an article.
Which property should I use to best mark these sections on the page?
WebPageElement or one of its more specific types might be what you're looking for.
There is a full hierarchy of types that should point you in the right direction.
If you're looking to markup contact information such as email, phone etc. you might want to try ContactPoint or PostalAddress.
As #Brad notes, the WebPageElement type would be the closest match for something like a "webpage section". You could use the hasPart property to denote that they are parts of your WebPage.
But I think that it’s typically not useful to provide WebPageElement (or one of its child types) in the first place: don’t say something about how you structure your page, say something about the things you describe on your page.
So if you provide data about an organization, use Organization. If you provide data about a service offered by an organization, use Service (→ provider Organization) etc.
Use the mainEntity property of your WebPage (or one if its more specific types) to link the primary item the page is about:
If the page is about a single organization, you could use:
ItemPage mainEntity Organization.
If the page is about multiple organizations, you could add a list:
CollectionPage mainEntity ItemList
(and each Organization would be its own list item, added via itemListElement)
(By the way, even if Article would be appropriate in your case, you could still use WebPage in addition, so it’s not either-or. In that case, the mainEntity of the WebPage, or the more specific ItemPage, would be the Article item.)

Schema.org markup for a vacation rental website?

I have built a vacation rental website which allows users to add their home to my site, this will include all info, map, reviews and photos.
I am not sure how to mark up each property detail page with the correct Schema.org data.
I have been looking and LodgingBusiness looks close, but these are not hotels, just someone's home to rent for a few weeks. I would ideally tag the name, photo, description, map, reviews, location too, but unsure about the actual main category.
For the places which get rented, you can use the Accommodation type. There are more specific types, like Apartment, Suite, House etc.
It offers the properties you are looking for:
name, image, description
hasMap
review
address (or containedInPlace)
For documentation about all the accommodation-related types and properties, see Markup for Hotels.

Do I need to repeat all the categories on all sub-pages?

I am marking up the content on my website with microdata. I am a Local Business and use this hierarchy:
Organization/LocalBusiness/TravelAgency/
Do I need to repeat all the relevant Properties for each category: PLace, Organization, Local Buisness and Travel Agency in each page of my website?
http://schema.org/TravelAgency
I have many sub-pages and it is over-kill to repeat everytime on the page the location, address, telephone, etc. of the business.
For specific sub-pages can I cut out the higher categories?
For example: If I have a page: Special Offer Weekend in New York
Do I add all the Properties or can I just add the ones relevant for TravelAgency and potentially Price?
http://schema.org/PriceSpecification
Thanks for your help
PS: I ask this because I have read that it is not good to have invisible content for the user.
Schema.org doesn’t define any required properties, so everything is optional.
But note that there is no concept of "website" in Microdata. The Microdata always gets parsed per document. So if a Microdata consumer parses your "Special Offer Weekend in New York" page, it will not get the telephone/address/etc. of the business, even if these would be specified on all of your other pages.
If you don’t want to markup all the visible content about your business on every page, you might want to link to a page where this data is marked up (e.g., the front page) by using an appropriate Schema.org property.
Example: On "Special Offer Weekend in New York" (Offer), you could use the seller property to link to your front page (TravelAgency).
It’s not defined in Microdata that those links should be followed for parsing Microdata, but that way parsers can (if they want to) understand that all these pages belong to the same TravelAgency.

og:type and valid values : constantly being parsed as og:type=website

Could someone sugggest why the FB debug/lint tool is saying og:type is "website" despite the og:type being set to og:bar?
https://developers.facebook.com/tools/debug/og/object?q=www.shamrockirishbar.com%2Fpubquiz
As a result its not validating the og:location and similar which are relevant for the "bar" type.
bar is deprecated. Please check ogp.me for the current docs.
As of May 2018, you can find the full list here: https://developers.facebook.com/docs/reference/opengraph#object-type
apps.saves An action representing someone saving an app to try
later.
article This object represents an article on a website. It is the
preferred type for blog posts and news stories.
book This object type represents a book or publication. This is an
appropriate type for ebooks, as well as traditional paperback or
hardback books. Do not use this type to represent magazines
books.author This object type represents a single author of a
book.
books.book This object type represents a book or publication. This
is an appropriate type for ebooks, as well as traditional paperback or
hardback books
books.genre This object type represents the genre of a book or
publication.
books.quotes
Returns no data as of April 4, 2018. An action representing someone quoting from a book.
books.rates
Returns no data as of April 4, 2018. An action representing someone rating a book.
books.reads
Returns no data as of April 4, 2018. An action representing someone reading a book.
books.wants_to_read
Returns no data as of April 4, 2018. An action representing someone wanting to read a book.
business.business This object type represents a place of business
that has a location, operating hours and contact information.
fitness.bikes
Returns no data as of April 4, 2018. An action representing someone cycling a course.
fitness.course This object type represents the user's activity
contributing to a particular run, walk, or bike course.
fitness.runs
Returns no data as of April 4, 2018. An action representing someone running a course.
fitness.walks
Returns no data as of April 4, 2018. An action representing someone walking a course.
game.achievement This object type represents a specific
achievement in a game. An app must be in the 'Games' category in App
Dashboard to be able to use this object type. Every achievement has a
game:points value associate with it. This is not related to the
points the user has scored in the game, but is a way for the app to
indicate the relative importance and scarcity of different
achievements: * Each game gets a total of 1,000 points to distribute
across its achievements * Each game gets a maximum of 1,000
achievements * Achievements which are scarcer and have higher point
values will receive more distribution in Facebook's social channels.
For example, achievements which have point values of less than 10 will
get almost no distribution. Apps should aim for between 50-100
achievements consisting of a mix of 50 (difficult), 25 (medium), and
10 (easy) point value achievements Read more on how to use
achievements in this guide.
games.achieves An action representing someone reaching a game
achievement.
games.celebrate An action representing someone celebrating a
victory in a game.
games.plays An action representing someone playing a game. Stories
for this action will only appear in the activity log.
games.saves An action representing someone saving a game.
music.album This object type represents a music album; in other
words, an ordered collection of songs from an artist or a collection
of artists. An album can comprise multiple discs.
music.listens
Returns no data as of April 4, 2018. An action representing someone listening to a song, album, radio station,
playlist or musician
music.playlist This object type represents a music playlist, an
ordered collection of songs from a collection of artists.
music.playlists
Returns no data as of April 4, 2018. An action representing someone creating a playlist.
music.radio_station This object type represents a 'radio' station
of a stream of audio. The audio properties should be used to identify
the location of the stream itself.
music.song This object type represents a single song.
news.publishes An action representing someone publishing a news
article.
news.reads
Returns no data as of April 4, 2018. An action representing someone reading a news article.
og.follows An action representing someone following a Facebook
user
og.likes An action representing someone liking any object.
pages.saves An action representing someone saving a place.
place This object type represents a place - such as a venue, a
business, a landmark, or any other location which can be identified by
longitude and latitude.
product This object type represents a product. This includes both
virtual and physical products, but it typically represents items that
are available in an online store.
product.group This object type represents a group of product
items.
product.item This object type represents a product item.
profile This object type represents a person. While appropriate
for celebrities, artists, or musicians, this object type can be used
for the profile of any individual. The fb:profile_id field
associates the object with a Facebook user.
restaurant.menu This object type represents a restaurant's menu. A
restaurant can have multiple menus, and each menu has multiple
sections.
restaurant.menu_item This object type represents a single item on
a restaurant's menu. Every item belongs within a menu section.
restaurant.menu_section This object type represents a section in a
restaurant's menu. A section contains multiple menu items.
restaurant.restaurant This object type represents a restaurant at
a specific location.
restaurant.visited An action representing someone visiting a
restaurant.
restaurant.wants_to_visit An action representing someone wanting
to visit a restaurant
sellers.rates An action representing a commerce seller has been
given a rating.
video.episode This object type represents an episode of a TV show
and contains references to the actors and other professionals involved
in its production. An episode is defined by us as a full-length
episode that is part of a series. This type must reference the series
this it is part of.
video.movie This object type represents a movie, and contains
references to the actors and other professionals involved in its
production. A movie is defined by us as a full-length feature or short
film. Do not use this type to represent movie trailers, movie clips,
user-generated video content, etc.
video.other This object type represents a generic video, and
contains references to the actors and other professionals involved in
its production. For specific types of video content, use the
video.movie or video.tv_show object types. This type is for any
other type of video content not represented elsewhere (eg. trailers,
music videos, clips, news segments etc.)
video.rates
Returns no data as of April 4, 2018. An action representing someone rating a movie, TV show, episode or another piece
of video content.
video.tv_show This object type represents a TV show, and contains
references to the actors and other professionals involved in its
production. For individual episodes of a series, use the
video.episode object type. A TV show is defined by us as a series or
set of episodes that are produced under the same title (eg. a
television or online series)
video.wants_to_watch
Returns no data as of April 4, 2018. An action representing someone wanting to watch video content.
video.watches
Returns no data as of April 4, 2018. An action representing someone watching video content.
I know this is an old one but it comes up top of Google and all the links provided now seem out of date.
This is the latest list of types Facebook accepts for 2022:
https://ogp.me/#types
If you don't use one of these then the type will default to 'website' which is best used for home pages/summarizing a web site.
It looks like the place attribute is no longer supported and the old Facebook page has gone.
This started happening to my site after I enabled namespace and custom Open Graph actions and objects. Once you enable it, you lose support for standard object types such as bar, or in my case article. (or it's possible Facebook may have deprecated certain types, I'm not 100% sure) When no supported type is specified, Facebook defaults to website.
To fix this what you need to do is go into your app dashboard, select your app, then go to the Open Graph section. Under "Object Types", define your own types, such as "bar."
Next you will have to change your meta tags to look like this:
<meta property="og:type" content="your_namespace:your_object_type" />
If you click on "Get Code" next to the object type in the dashboard, Facebook will provide you with an example of meta tags to use.
I have moved into the world of namespace specific open graph data and therefore dont rely on the FB types. See "edit open graph" in the apps dev tool dashboard.
Make sure your article:author data is a Facebook author URL. Unfortunately, that conflicts with what Pinterest is expecting. It's the best thing about standards, there are so many ways to implement them!
<meta property="article:author" content="https://www.facebook.com/mpatnode76">
But Pinterest wants to see something like this:
<meta property="article:author" content="Mike Patnode">
We ended up swapping the formats depending upon the user agent. Hopefully, that doesn't screw up your page cache. That fixed it for us.
Full disclosure. Found this here: https://surniaulula.com/2014/03/01/pinterest-articleauthor-incompatible-with-open-graph/