George S. Baugh 5 anos atrás
pai
commit
76341d43ea
3 arquivos alterados com 38 adições e 32 exclusões
  1. 35 28
      lib/Trog/Routes/HTML.pm
  2. 1 2
      www/server.psgi
  3. 2 2
      www/templates/header.tx

+ 35 - 28
lib/Trog/Routes/HTML.pm

@@ -250,7 +250,41 @@ sub index ($query,$render_cb, $content = '', $i_styles = []) {
 
     my $search_info = Trog::Data->new($conf);
 
+    my $title = $query->{title} // $Theme::default_title // 'tCMS';
+
     # Handle link "unfurling" correctly
+    my ($default_tags, $meta_desc, $meta_tags) = _build_social_meta($query,$title);
+
+    #Do embed content
+    my $tmpl = $query->{embed} ? 'embed.tx' : 'index.tx';
+    return $render_cb->( $tmpl, {
+        code           => $query->{code},
+        user           => $query->{user},
+        search_lang    => $search_info->lang(),
+        search_help    => $search_info->help(),
+        route          => $query->{route},
+        domain         => $query->{domain},
+        theme_dir      => $td,
+        content        => $content,
+        title          => $title,
+        htmltitle      => _pick_processor("templates/$htmltitle" ,$processor,$t_processor)->render($htmltitle,$query),
+        midtitle       => _pick_processor("templates/$midtitle"  ,$processor,$t_processor)->render($midtitle,$query),
+        rightbar       => _pick_processor("templates/$rightbar"  ,$processor,$t_processor)->render($rightbar,$query),
+        leftbar        => _pick_processor("templates/$leftbar"   ,$processor,$t_processor)->render($leftbar,$query),
+        footbar        => _pick_processor("templates/$footbar"   ,$processor,$t_processor)->render($footbar,$query),
+        category_links => _pick_processor("templates/categories.tx", $processor,$t_processor)->render("categories.tx",$query),
+        stylesheets    => \@styles,
+        show_madeby    => $Theme::show_madeby ? 1 : 0,
+        embed          => $query->{embed} ? 1 : 0,
+        embed_video    => $query->{primary_post}{is_video},
+        default_tags   => $default_tags,
+        meta_desc      => $meta_desc,
+        meta_tags      => $meta_tags,
+    });
+}
+
+sub _build_social_meta ($query,$title) {
+    return (undef,undef,undef) unless $query->{social_meta};
     my $default_tags = $Theme::default_tags;
     $default_tags .= ','.join(',',@{$query->{primary_post}->{tags}}) if $default_tags && $query->{primary_post}->{tags};
 
@@ -269,7 +303,6 @@ sub index ($query,$render_cb, $content = '', $i_styles = []) {
     my $primary_route =  "https://$query->{domain}/$query->{route}";
     $primary_route =~  s/[\/]+/\//g;
 
-    my $title = $query->{title} // $Theme::default_title // 'tCMS';
     my $display_name = $Theme::display_name // 'Another tCMS Site';
 
     my $extra_tags ='';
@@ -297,33 +330,7 @@ sub index ($query,$render_cb, $content = '', $i_styles = []) {
     $meta_tags .= $extra_tags if $extra_tags;
 
     print STDERR "WARNING: Theme misconfigured, social media tags will not be included\n$@\n" unless $meta_tags;
-
-    my $tmpl = $query->{embed} ? 'embed.tx' : 'index.tx';
-    return $render_cb->( $tmpl, {
-        code           => $query->{code},
-        user           => $query->{user},
-        search_lang    => $search_info->lang(),
-        search_help    => $search_info->help(),
-        route          => $query->{route},
-        domain         => $query->{domain},
-        theme_dir      => $td,
-        content        => $content,
-        title          => $title,
-        htmltitle      => _pick_processor("templates/$htmltitle" ,$processor,$t_processor)->render($htmltitle,$query),
-        midtitle       => _pick_processor("templates/$midtitle"  ,$processor,$t_processor)->render($midtitle,$query),
-        rightbar       => _pick_processor("templates/$rightbar"  ,$processor,$t_processor)->render($rightbar,$query),
-        leftbar        => _pick_processor("templates/$leftbar"   ,$processor,$t_processor)->render($leftbar,$query),
-        footbar        => _pick_processor("templates/$footbar"   ,$processor,$t_processor)->render($footbar,$query),
-        category_links => _pick_processor("templates/categories.tx", $processor,$t_processor)->render("categories.tx",$query),
-        stylesheets    => \@styles,
-        show_madeby    => $Theme::show_madeby ? 1 : 0,
-        embed          => $query->{embed} ? 1 : 0,
-        embed_video    => $query->{primary_post}{is_video},
-        default_tags   => $default_tags,
-        meta_desc      => $meta_desc,
-        meta_tags      => $meta_tags,
-        indexable      => 1,
-    });
+    return ($default_tags, $meta_desc, $meta_tags);
 }
 
 =head1 ADMIN ROUTES

+ 1 - 2
www/server.psgi

@@ -142,8 +142,7 @@ my $app = sub {
     $query->{route}        = $env->{REQUEST_URI};
     $query->{route}        =~ s/\?\Q$env->{QUERY_STRING}\E//;
     $query->{scheme}       = $env->{'psgi.url_scheme'} // 'http';
-    $query->{og_type}      = 'website';
-    $query->{twitter_type} = 'summary';
+    $query->{social_meta}  = 1;
     $query->{primary_post} = {};
 
     my $output =  $routes{$path}{callback}->($query, \&_render);

+ 2 - 2
www/templates/header.tx

@@ -5,15 +5,15 @@
         <meta charset="utf-8" />
         <link rel="icon" type="image/vnd.microsoft.icon" href="<: $theme_dir :>/img/icon/favicon.ico" />
 
-        : if ($indexable) {
+        : if ($meta_desc) {
         <meta name="description" content="<: $meta_desc :>"/>
+        : }
         : if ($default_tags) {
         <meta name="tags" content="<: $default_tags :>" />
         : }
         : if ($meta_tags) {
         <: $meta_tags | mark_raw :>
         : }
-        : }
 
         <meta name="viewport" content="width=device-width">
         <link rel="stylesheet" type="text/css" href="/styles/structure.css" />