อยากรู้วิธีใส่ Google Structure ใน Joomla ว่าใส่ตำแหน่งไหนและแก้ตรงไหนบ้างครับ

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Before Dong
PHP VIP Members
PHP VIP Members
โพสต์: 1030
ลงทะเบียนเมื่อ: 26/06/2017 10:11 am

อยากรู้วิธีใส่ Google Structure ใน Joomla ว่าใส่ตำแหน่งไหนและแก้ตรงไหนบ้างครับ

โพสต์โดย Before Dong » 21/09/2017 2:20 pm

อยากรู้วิธีใส่ Google Structure ใน Joomla ว่าใส่ตำแหน่งไหนและแก้ตรงไหนบ้างครับ ใน file index.php และ file content/article/default.php

Code Google Structure

โค้ด: เลือกทั้งหมด

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://google.com/article"
  },
  "headline": "Article headline",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "datePublished": "2015-02-05T08:00:00+08:00",
  "dateModified": "2015-02-05T09:20:00+08:00",
  "author": {
    "@type": "Person",
    "name": "John Doe"
  },
   "publisher": {
    "@type": "Organization",
    "name": "Google",
    "logo": {
      "@type": "ImageObject",
      "url": "https://google.com/logo.jpg"
    }
  },
  "description": "A most wonderful article"
}
</script>


file index.php

โค้ด: เลือกทั้งหมด

<?php
/**
 * @package     Joomla.Site
 * @subpackage  Templates.protostar
 *
 * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/** @var JDocumentHtml $this */

$app  = JFactory::getApplication();
$user = JFactory::getUser();

// Output as HTML5
$this->setHtml5(true);

// Getting params from template
$params = $app->getTemplate(true)->params;

// Detecting Active Variables
$option   = $app->input->getCmd('option', '');
$view     = $app->input->getCmd('view', '');
$layout   = $app->input->getCmd('layout', '');
$task     = $app->input->getCmd('task', '');
$itemid   = $app->input->getCmd('Itemid', '');
$sitename = $app->get('sitename');

if ($task === 'edit' || $layout === 'form')
{
   $fullWidth = 1;
}
else
{
   $fullWidth = 0;
}

// Add JavaScript Frameworks
JHtml::_('bootstrap.framework');

// Add template js
JHtml::_('script', 'template.js', array('version' => 'auto', 'relative' => true));

// Add html5 shiv
JHtml::_('script', 'jui/html5.js', array('version' => 'auto', 'relative' => true, 'conditional' => 'lt IE 9'));

// Add Stylesheets
JHtml::_('stylesheet', 'template.css', array('version' => 'auto', 'relative' => true));

// Use of Google Font
if ($this->params->get('googleFont'))
{
   JHtml::_('stylesheet', '//fonts.googleapis.com/css?family=' . $this->params->get('googleFontName'));
   $this->addStyleDeclaration("
   h1, h2, h3, h4, h5, h6, .site-title {
      font-family: '" . str_replace('+', ' ', $this->params->get('googleFontName')) . "', sans-serif;
   }");
}

// Template color
if ($this->params->get('templateColor'))
{
   $this->addStyleDeclaration('
   body.site {
      border-top: 3px solid ' . $this->params->get('templateColor') . ';
      background-color: ' . $this->params->get('templateBackgroundColor') . ';
   }
   a {
      color: ' . $this->params->get('templateColor') . ';
   }
   .nav-list > .active > a,
   .nav-list > .active > a:hover,
   .dropdown-menu li > a:hover,
   .dropdown-menu .active > a,
   .dropdown-menu .active > a:hover,
   .nav-pills > .active > a,
   .nav-pills > .active > a:hover,
   .bg-top {
      background-color: ' . $this->params->get('templateColor') . ';
   }');
}

// Check for a custom CSS file
JHtml::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));

// Check for a custom js file
JHtml::_('script', 'user.js', array('version' => 'auto', 'relative' => true));

// Load optional RTL Bootstrap CSS
JHtml::_('bootstrap.loadCss', false, $this->direction);

// Adjusting content width
if ($this->countModules('position-7') && $this->countModules('position-8'))
{
   $span = 'span6';
}
elseif ($this->countModules('position-7') && !$this->countModules('position-8'))
{
   $span = 'span9';
}
elseif (!$this->countModules('position-7') && $this->countModules('position-8'))
{
   $span = 'span9';
}
else
{
   $span = 'span12';
}

// Logo file or site title param
if ($this->params->get('logoFile'))
{
   $logo = '<img src="' . JUri::root() . $this->params->get('logoFile') . '" alt="' . $sitename . '" />';
}
elseif ($this->params->get('sitetitle'))
{
   $logo = '<span class="site-title" title="' . $sitename . '">' . htmlspecialchars($this->params->get('sitetitle'), ENT_COMPAT, 'UTF-8') . '</span>';
}
else
{
   $logo = '<span class="site-title" title="' . $sitename . '">' . $sitename . '</span>';
}
?>

<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
   <link rel="stylesheet" href="user.css" />
   <meta name="viewport" content="width=device-width, initial-scale=1" />
   
   <jdoc:include type="head" />
</head>
<body>
   <div class="container-fluid">
   <div class="navbar bg-top">
   
         <div class="container">
            <div class="row">
               <div class="span4">
                  <div class="logotop"> <?php echo $logo; ?> </div>
               </div>
               <div class="span8">
                  <div class="searchtop"><jdoc:include type="modules" name="search-top" style="none"/> </div>
               </div>
            </div>
            </div>
         </div>
         

            <div class="container">
               <div class="row">
                  <div class="navbar">
                     <div class="span12">
                        <nav class="navigation" role="navigation">
                           <div class="navbar pull-left">
                              <a class="btn btn-navbar collapsed" data-toggle="collapse" data-target=".nav-collapse">
                                 <span class="element-invisible"><?php echo JTEXT::_('TPL_PROTOSTAR_TOGGLE_MENU'); ?></span>
                                 <span class="icon-bar"></span>
                                 <span class="icon-bar"></span>
                                 <span class="icon-bar"></span>
                              </a>
                           </div>
                           <div class="nav-collapse">
                              <div class="menu-nav-top">
                              <div class="navbar">
                              <div class="navbar-inner">
                              <ul class="nav">
                                 <li><jdoc:include type="modules" name="menu-top" style="none" /></li>
                               </ul>
                               </div>
                              </div>
                              </div>
                           </div>
                        </nav>
                     </div>
                  </div>
               </div>
            </div>
         
      <div class="container nav-path">
         <div class="nav-collapse pull-left">
               <jdoc:include type="modules" name="pathway" style="none" />
         </div>
      </div>
         
      <div class="container">
         <div class="row">
            <div class="span12 ">
               <jdoc:include type="modules" name="pic-slide-home" style="none" />
            </div>
         </div>
      </div>
      

         <div class="container">
         <div class="row-fluid">
            <div class="<?php echo ($this->countModules('right-menu')) ? 'span9' : 'span12' ; ?>" >
                  <jdoc:include type="component" />
            </div>
            <?php if ($this->countModules('right-menu')) : ?>
            <div class="span3"> <div class="right"> <jdoc:include type="modules" name="right-menu" style="xhtml" /> </div></div>
            <?php endif; ?>
         </div>
         </div>
   
      
      <div class="bg-conten-home">
      <div class="container">      
         <div class="row">
            <div class="span12 ">
               <jdoc:include type="modules" name="content-home" style="none" />
            </div>
         </div>
      </div>
      </div>   
      
      <div class="bg-top">
      <div class="container">
               <div class="row" >                  
                     <div class="span3">   
                        <jdoc:include type="modules" name="footer-1" style="none" />
                     </div>
                     <div class="span3" >
                        <jdoc:include type="modules" name="footer-2" style="none" />
                     </div>   
                     <div class="span3" >
                        <jdoc:include type="modules" name="footer-3" style="none" />
                     </div>   
                     <div class="span3" >
                        <jdoc:include type="modules" name="footer-4" style="none" />
                     </div>   
               </div>
      </div>      
      </div>
      
      <div class="container">      
               <div class="row">                  
                     <div class="span12">   
                        <jdoc:include type="modules" name="footer-bottom" style="none" />
                     </div>
               </div>
      </div>
   </div>
</body>
</html>


file content/article/default.php

โค้ด: เลือกทั้งหมด

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// Create shortcuts to some parameters.
$params  = $this->item->params;
$images  = json_decode($this->item->images);
$urls    = json_decode($this->item->urls);
$canEdit = $params->get('access-edit');
$user    = JFactory::getUser();
$info    = $params->get('info_block_position', 0);

// Check if associations are implemented. If they are, define the parameter.
$assocParam = (JLanguageAssociations::isEnabled() && $params->get('show_associations'));
JHtml::_('behavior.caption');

?>
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="https://schema.org/Article">
   <meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*') ? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
   <?php if ($this->params->get('show_page_heading')) : ?>
   <div class="page-header">
      <h1> <?php echo $this->escape($this->params->get('page_heading')); ?> </h1>
   </div>
   <?php endif;
   if (!empty($this->item->pagination) && $this->item->pagination && !$this->item->paginationposition && $this->item->paginationrelative)
   {
      echo $this->item->pagination;
   }
   ?>

   <?php // Todo Not that elegant would be nice to group the params ?>
   <?php $useDefList = ($params->get('show_modify_date') || $params->get('show_publish_date') || $params->get('show_create_date')
   || $params->get('show_hits') || $params->get('show_category') || $params->get('show_parent_category') || $params->get('show_author') || $assocParam); ?>

   <?php if (!$useDefList && $this->print) : ?>
      <div id="pop-print" class="btn hidden-print">
         <?php echo JHtml::_('icon.print_screen', $this->item, $params); ?>
      </div>
      <div class="clearfix"> </div>
   <?php endif; ?>
   <?php if ($params->get('show_title') || $params->get('show_author')) : ?>
   <div class="page-header">
      <?php if ($params->get('show_title')) : ?>
         <h2 itemprop="headline">
            <?php echo $this->escape($this->item->title); ?>
         </h2>
      <?php endif; ?>
      <?php if ($this->item->state == 0) : ?>
         <span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
      <?php endif; ?>
      <?php if (strtotime($this->item->publish_up) > strtotime(JFactory::getDate())) : ?>
         <span class="label label-warning"><?php echo JText::_('JNOTPUBLISHEDYET'); ?></span>
      <?php endif; ?>
      <?php if ((strtotime($this->item->publish_down) < strtotime(JFactory::getDate())) && $this->item->publish_down != JFactory::getDbo()->getNullDate()) : ?>
         <span class="label label-warning"><?php echo JText::_('JEXPIRED'); ?></span>
      <?php endif; ?>
   </div>
   <?php endif; ?>
   <?php if (!$this->print) : ?>
      <?php if ($canEdit || $params->get('show_print_icon') || $params->get('show_email_icon')) : ?>
         <?php echo JLayoutHelper::render('joomla.content.icons', array('params' => $params, 'item' => $this->item, 'print' => false)); ?>
      <?php endif; ?>
   <?php else : ?>
      <?php if ($useDefList) : ?>
         <div id="pop-print" class="btn hidden-print">
            <?php echo JHtml::_('icon.print_screen', $this->item, $params); ?>
         </div>
      <?php endif; ?>
   <?php endif; ?>

   <?php // Content is generated by content plugin event "onContentAfterTitle" ?>
   <?php echo $this->item->event->afterDisplayTitle; ?>

   <?php if ($useDefList && ($info == 0 || $info == 2)) : ?>
      <?php echo JLayoutHelper::render('joomla.content.info_block', array('item' => $this->item, 'params' => $params, 'position' => 'above')); ?>
   <?php endif; ?>

   <?php if ($info == 0 && $params->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
      <?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>

      <?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
   <?php endif; ?>

   <?php // Content is generated by content plugin event "onContentBeforeDisplay" ?>
   <?php echo $this->item->event->beforeDisplayContent; ?>

   <?php if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '0')) || ($params->get('urls_position') == '0' && empty($urls->urls_position)))
      || (empty($urls->urls_position) && (!$params->get('urls_position')))) : ?>
   <?php echo $this->loadTemplate('links'); ?>
   <?php endif; ?>
   <?php if ($params->get('access-view')) : ?>
   <?php echo JLayoutHelper::render('joomla.content.full_image', $this->item); ?>
   <?php
   if (!empty($this->item->pagination) && $this->item->pagination && !$this->item->paginationposition && !$this->item->paginationrelative) :
      echo $this->item->pagination;
   endif;
   ?>
   <?php if (isset ($this->item->toc)) :
      echo $this->item->toc;
   endif; ?>
   <div itemprop="articleBody">
      <?php echo $this->item->text; ?>
   </div>

   <?php if ($info == 1 || $info == 2) : ?>
      <?php if ($useDefList) : ?>
         <?php echo JLayoutHelper::render('joomla.content.info_block', array('item' => $this->item, 'params' => $params, 'position' => 'below')); ?>
      <?php endif; ?>
      <?php if ($params->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
         <?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
         <?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
      <?php endif; ?>
   <?php endif; ?>

   <?php
   if (!empty($this->item->pagination) && $this->item->pagination && $this->item->paginationposition && !$this->item->paginationrelative) :
      echo $this->item->pagination;
   ?>
   <?php endif; ?>
   <?php if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '1')) || ($params->get('urls_position') == '1'))) : ?>
   <?php echo $this->loadTemplate('links'); ?>
   <?php endif; ?>
   <?php // Optional teaser intro text for guests ?>
   <?php elseif ($params->get('show_noauth') == true && $user->get('guest')) : ?>
   <?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
   <?php echo JHtml::_('content.prepare', $this->item->introtext); ?>
   <?php // Optional link to let them register to see the whole article. ?>
   <?php if ($params->get('show_readmore') && $this->item->fulltext != null) : ?>
   <?php $menu = JFactory::getApplication()->getMenu(); ?>
   <?php $active = $menu->getActive(); ?>
   <?php $itemId = $active->id; ?>
   <?php $link = new JUri(JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId, false)); ?>
   <?php $link->setVar('return', base64_encode(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language))); ?>
   <p class="readmore">
      <a href="<?php echo $link; ?>" class="register">
      <?php $attribs = json_decode($this->item->attribs); ?>
      <?php
      if ($attribs->alternative_readmore == null) :
         echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
      elseif ($readmore = $attribs->alternative_readmore) :
         echo $readmore;
         if ($params->get('show_readmore_title', 0) != 0) :
            echo JHtml::_('string.truncate', $this->item->title, $params->get('readmore_limit'));
         endif;
      elseif ($params->get('show_readmore_title', 0) == 0) :
         echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
      else :
         echo JText::_('COM_CONTENT_READ_MORE');
         echo JHtml::_('string.truncate', $this->item->title, $params->get('readmore_limit'));
      endif; ?>
      </a>
   </p>
   <?php endif; ?>
   <?php endif; ?>
   <?php
   if (!empty($this->item->pagination) && $this->item->pagination && $this->item->paginationposition && $this->item->paginationrelative) :
      echo $this->item->pagination;
   ?>
   <?php endif; ?>
   <?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
   <?php echo $this->item->event->afterDisplayContent; ?>
</div>

ภาพประจำตัวสมาชิก
P'Eak
PHP Jr. Member
PHP Jr. Member
โพสต์: 14
ลงทะเบียนเมื่อ: 27/05/2017 10:31 pm

Re: อยากรู้วิธีใส่ Google Structure ใน Joomla ว่าใส่ตำแหน่งไหนและแก้ตรงไหนบ้างครับ

โพสต์โดย P'Eak » 26/09/2017 2:03 pm

ใส่ในหน้าที่ต้องการ เช่น override component content ก็ใสนนั่น

ภาพประจำตัวสมาชิก
Before Dong
PHP VIP Members
PHP VIP Members
โพสต์: 1030
ลงทะเบียนเมื่อ: 26/06/2017 10:11 am

Re: อยากรู้วิธีใส่ Google Structure ใน Joomla ว่าใส่ตำแหน่งไหนและแก้ตรงไหนบ้างครับ

โพสต์โดย Before Dong » 26/09/2017 3:17 pm

P'Eak เขียน:ใส่ในหน้าที่ต้องการ เช่น override component content ก็ใสนนั่น

ขอบคุณครับ


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 2 และ บุคคลทั่วไป 0 ท่าน