ช่วยแนะนำรูปแบบการเขียน Google Structured ของ joomla

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

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

ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16022
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

ช่วยแนะนำรูปแบบการเขียน Google Structured ของ joomla

โพสต์ที่ยังไม่ได้อ่าน โดย eange08 »

อยากจะขอตัวอย่างหรือแนะนำรูปแบบการเขียน Google Structured ของ joomla เพื่อไปศึกษาได้ไหมค่ะ
ปกติจะเห็นเป็นแบบ javascript สมมติว่าถ้าจะเพิ่ม author จะต้องเขียนแบบไหนค่ะ

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

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2015 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');
require_once JPATH_ROOT . '/templates/mindphp/helpers/mtemplatehelper.php';

$doc = JFactory::getDocument();
$doc->addScript(JUri::root() . 'templates/mindphp/js/prism.js');
$doc->addStyleSheet(JUri::root() . 'templates/mindphp/css/prism.css');

// 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);
JHtml::_('behavior.caption');

?>
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="http://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 MTemplateHelper::getTitleForPagination($this->item->pagination, $this->item->prev, $this->item->next);
	}
	?>

	<?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') );
	?>
                <?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">
			<h1 itemprop="name">
				<?php if ($params->get('show_title')) : ?>
					<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->id, $this->item->catid, $this->item->language)); ?>">
						<?php echo $this->escape($this->item->title); ?>
					</a>
				<?php endif; ?>
			</h1>
			<?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 if ($useDefList && ($info == 0 || $info == 2)) : ?>
		<?php echo JLayoutHelper::render('joomla.content.info_block.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
	if (!$params->get('show_intro')) : echo $this->item->event->afterDisplayTitle;
	endif;
	?>
	<?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 if (isset($images->image_fulltext) && !empty($images->image_fulltext)) : ?>
			<?php $imgfloat = (empty($images->float_fulltext)) ? $params->get('float_fulltext') : $images->float_fulltext; ?>
			<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image"> <img
				<?php
				if ($images->image_fulltext_caption):
					echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_fulltext_caption) . '"';
				endif;
				?>
					src="<?php echo htmlspecialchars($images->image_fulltext); ?>" alt="<?php echo htmlspecialchars($images->image_fulltext_alt); ?>" itemprop="image"/> </div>
			<?php endif; ?>
			<?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 class="mindphp-article-item" itemprop="articleBody">
			<?php echo $this->item->text; ?>
		</div>

		<?php if ($useDefList && ($info == 1 || $info == 2)) : ?>
			<?php echo JLayoutHelper::render('joomla.content.info_block.block', array ('item' => $this->item, 'params' => $params, 'position' => 'below')); ?>
			<?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 MTemplateHelper::getTitleForPagination($this->item->pagination, $this->item->prev, $this->item->next);
			?>
		<?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 $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(JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language), false))); ?>
			<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 = $this->item->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 MTemplateHelper::getTitleForPagination($this->item->pagination, $this->item->prev, $this->item->next);
		?>
	<?php endif; ?>
	<?php echo $this->item->event->afterDisplayContent; ?>
</div>
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41131
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ช่วยแนะนำรูปแบบการเขียน Google Structured ของ joomla

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

Google Structured เป็นการเพิ่ม สองแบบ เพิ่มแบบ โค้ด script json ไว้ที่ส่วนหัวของเอกสารแต่ละหน้าก็ได้

ตัวอย่าง

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

<script type="application/ld+json"> 
    {
    "@context": "http://schema.org",
    "@type": "SoftwareApplication",
    "name": "Temperature convector",
    "image": "https://www.mindphp.com/images/info/mindphp-logo-v40.png",
    "description": "โปรแกรมคำนวณแปลงอุณหภูมิ",
    "operatingSystem": "Windows 7",
    "applicationCategory": "http://schema.org/GameApplication",
    "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.0",
    "ratingCount": "6510"
    }
    }
</script>
เปลี่ยน type และ โครงสร้าง ข้อมูลอื่นๆ ให้ตรงตาม content type ของเรา
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 49