Invision Community 4: SEO, prepare for v5 and dormant account notifications Matt November 11, 2024Nov 11
Posted March 10, 20231 yr I've been trying for some time to implement the following and unfortunately just do not get on. There is simply a lack of skills 😉 {{if !isset( \IPS\Output::i()->metaTags['og:image'] )}}    {{$shareLogos = \IPS\Settings::i()->icons_sharer_logo ? json_decode( \IPS\Settings::i()->icons_sharer_logo, true ) : array();}}    {{foreach $shareLogos as $logo}}       <meta property="og:image" content="{file="$logo" extension="core_Icons" scheme="full"}">    {{endforeach}}  MISSING HERE elseif - it's a forum post, then it is <meta property="og:image" content="https://www.domain.tld/img/<<TOPICID>>.jpg" />  {{else}} <meta property="og:image" content="https://www.domain.tld/standardimage.jpg" /> {{endif}}  would be cool if someone here ne line for me 🙂 Thanks a lot! Stephan
March 10, 20231 yr Not sure what you want. Either use {{elseif !$something}} or identify a forum post.
March 10, 20231 yr Author Hi, thanks for your reply. the code should make a difference if the og:image is set > output (works) == MISSING == elseif it is a forum post > output should be this including the postID<meta property="og:image" content="https://www.domain.tld/img/<<TOPICID>>.jpg" /> == /MISSING ==else og:image is standard (works)
March 10, 20231 yr I think this is what you are asking for... {{if !isset( \IPS\Output::i()->metaTags['og:image'] )}} {{$shareLogos = \IPS\Settings::i()->icons_sharer_logo ? json_decode( \IPS\Settings::i()->icons_sharer_logo, true ) : array();}} {{if request.app ==='forums' AND request.controller==='topic'}} <meta property="og:image" content="https://www.domain.tld/img/{expression='request.id'}.jpg" /> {{else}} {{foreach $shareLogos as $logo}} <meta property="og:image" content="{file="$logo" extension="core_Icons" scheme="full"}"> {{endforeach}} {{endif}} {{endif}} Â
March 10, 20231 yr This would be the code but I'm not sure what you mean with postID. There's no separate page with a post, only topics, so I assumed you mean the topic id which I used in my code. {{if !isset( \IPS\Output::i()->metaTags['og:image'] )}} {{$shareLogos = \IPS\Settings::i()->icons_sharer_logo ? json_decode( \IPS\Settings::i()->icons_sharer_logo, true ) : array();}} {{foreach $shareLogos as $logo}} <meta property="og:image" content="{file="$logo" extension="core_Icons" scheme="full"}"> {{endforeach}} {{elseif \IPS\Request::i()->app == 'forums' AND \IPS\Request::i()->controller == 'topic'}} {{$id = \IPS\Request::i()->id;}} <meta property='og:image' content='https://www.domain.tld/img/{$id}.jpg'/> {{else}} <meta property='og:image' content='https://www.domain.tld/standardimage.jpg'/> {{endif}} Â That said, I'm also not sure if it will work at all, the condition looks weird and will probably always return the first part for topics. Â Â
March 10, 20231 yr Author 14 minutes ago, Nathan Explosion said: I think this is what you are asking for... {{if !isset( \IPS\Output::i()->metaTags['og:image'] )}} {{$shareLogos = \IPS\Settings::i()->icons_sharer_logo ? json_decode( \IPS\Settings::i()->icons_sharer_logo, true ) : array();}} {{if request.app ==='forums' AND request.controller==='topic'}} <meta property="og:image" content="https://www.domain.tld/img/{expression='request.id'}.jpg" /> {{else}} {{foreach $shareLogos as $logo}} <meta property="og:image" content="{file="$logo" extension="core_Icons" scheme="full"}"> {{endforeach}} {{endif}} {{endif}} Â Thanks so much - nearly perfect. There is only one thing missing - if neigher the og: image is set, nor its a forum topic the std-image should be postet
March 10, 20231 yr I see no reason for that, to be honest. Just upload your "std-image" in the ACP (Default share images) and it handles that element of your request... Â Edited March 10, 20231 yr by Nathan Explosion