コード例 #1
0
ファイル: item.php プロジェクト: CloudHotelier/com_jkit
 /**
  * Get the item
  * 
  * @param int $item_id id of the item to be loaded
  * @param bool $prepare_content apply content plugins to item body and intro
  * 
  * @return object
  */
 public function getItem($item_id = null, $prepare_content = true)
 {
     if (isset($this->item)) {
         return $this->item;
     }
     // helpers
     $db = $this->_db;
     $imageHelper = new JKitHelperImage(JComponentHelper::getParams('com_jkit'));
     // determine item id
     $id = $item_id ? $item_id : JRequest::getInt('id');
     // get the item
     $query_item = $db->getQuery(true)->select('a.*')->from('#__jkit_items AS a')->where("a.id = {$id}")->where('a.state = 1');
     $query_item->select('c.title AS category')->leftJoin('#__categories AS c ON c.id = a.catid');
     $query_item->select('u.title AS user, u.alias AS user_alias')->leftJoin('#__jkit_users AS u ON u.id = a.user_id');
     $this->item = $db->setQuery($query_item)->loadObject();
     // check item
     if (!$this->item) {
         if (!$item_id) {
             // component view
             throw new Exception(JText::_('COM_JKIT_ERROR_ITEM_NOT_FOUND'), 404);
         } else {
             // item loaded by a module
             return null;
         }
     }
     // set item params and image
     $this->item->params = $this->item ? json_decode($this->item->params) : array();
     $this->item->image = $imageHelper->getImage($id, 'items');
     // get the item images
     $query_images = $db->getQuery(true)->select('*')->from('#__jkit_images')->where("item_id = {$id}")->where('state = 1')->order('ordering');
     $images = $db->setQuery($query_images)->loadObjectList();
     foreach ($images as $image) {
         $image->params = json_decode($image->params);
         if (isset($image->params->tags)) {
             $image->params->tags = array_keys(get_object_vars($image->params->tags));
         }
     }
     $this->item->images = $images;
     // get the item tags
     $query_tags = $db->getQuery(true)->select('a.id, a.title, a.alias')->from('#__jkit_tags AS a')->innerJoin('#__jkit_tags_item AS t ON t.tag_id = a.id')->where("a.state = 1")->where("t.item_id = {$id}")->order('a.id');
     $this->item->tags = $db->setQuery($query_tags)->loadObjectList();
     // get item translation
     $lang = $db->quote(JFactory::getLanguage()->getTag());
     $query_translation = $db->getQuery(true)->select('*')->from('#__jkit_translations')->where("ref_table = 'items'")->where("lang = {$lang}")->where("ref_id = {$id}");
     $translation = $db->setQuery($query_translation)->loadObject();
     if ($translation) {
         $this->item = JKit::applyTranslation($this->item, $translation);
     }
     // get tags translations
     $tags_ids = array();
     $tags_translations = array();
     foreach ($this->item->tags as $tag) {
         $tags_ids[] = $tag->id;
     }
     if ($tags_ids) {
         $query_tags_translations = $db->getQuery(true)->select('*')->from('#__jkit_translations')->where("ref_table = 'tags'")->where("lang = {$lang}")->where("ref_id IN (" . implode(',', $tags_ids) . ")");
         $tags_translations = $db->setQuery($query_tags_translations)->loadObjectList();
     }
     if ($tags_translations) {
         foreach ($this->item->tags as $i => $tag) {
             foreach ($tags_translations as $tag_translation) {
                 if ($tag->id == $tag_translation->ref_id) {
                     $this->item->tags[$i]->title = $tag_translation->title;
                     $this->item->tags[$i]->alias = $tag_translation->alias;
                 }
             }
         }
     }
     // prepare content
     if ($prepare_content) {
         $this->item->intro = JHtml::_('content.prepare', $this->item->intro);
         $this->item->body = JHtml::_('content.prepare', $this->item->body);
     }
     return $this->item;
 }
コード例 #2
0
    ?>
		<h1 class="uk-heading-large"><?php 
    echo $this->data->title . $subheading;
    ?>
</h1>
	<?php 
}
?>

    <!-- controls -->
	<?php 
if ($this->item->tags) {
    ?>
		<ul id="jkit-gallery-controls" class="uk-subnav uk-subnav-pill uk-margin">
			<li class="uk-active" data-uk-filter=""><a href="#"><?php 
    echo JKit::text('all');
    ?>
</a></li>
			<?php 
    foreach ($this->item->tags as $tag) {
        ?>
				<li data-uk-filter="tag-<?php 
        echo $tag->id;
        ?>
"><a href="#"><?php 
        echo $tag->title;
        ?>
</a></li>
			<?php 
    }
    ?>
コード例 #3
0
							<h3><a href="<?php 
    echo $link;
    ?>
"><?php 
    echo $item->title;
    ?>
</a></h3>
							<p>
								<?php 
    echo $item->info;
    ?>
								<br><a class="uk-button uk-button-mini uk-margin-small" href="<?php 
    echo $link;
    ?>
"><?php 
    echo JKit::text('readmore');
    ?>
 <i class="uk-icon-angle-right"></i></a>
							</p>
						</div>
					</li>

				<?php 
}
?>

			</ul>

		</div>

		<div class="uk-flex uk-flex-center uk-margin">
コード例 #4
0
ファイル: jkit_item.php プロジェクト: CloudHotelier/com_jkit
    ?>
		</p>	
	<?php 
}
?>

	<?php 
if ($item->tags) {
    ?>
		
		<hr class="uk-article-divider">
		
		<div class="jkit-post-tags">
			<p>
				<?php 
    echo JKit::text('tagged');
    ?>
:
				<?php 
    foreach ($item->tags as $tag) {
        ?>
					<a class="jkit-item-tag" href="<?php 
        echo JRoute::_('index.php?option=com_jkit&view=items&tag=' . $tag->alias);
        ?>
"><?php 
        echo $tag->title;
        ?>
</a>
				<?php 
    }
    ?>
コード例 #5
0
ファイル: items.php プロジェクト: CloudHotelier/com_jkit
 /**
  * Search for translations and override items strings
  * 
  * @param array $items
  * 
  * @return array
  */
 private function loadTranslations($items)
 {
     // get translations lang
     $lang = $this->_db->quote(JFactory::getLanguage()->getTag());
     // get items translations
     $qids = implode(',', $this->items_ids);
     $query = $this->_db->getQuery(true)->select('*')->from('#__jkit_translations')->where("ref_table = 'items'")->where("lang = {$lang}");
     $query->where("ref_id IN ({$qids})");
     $translations = $this->_db->setQuery($query)->loadObjectList();
     // get tags translations
     $translations_tags = array();
     if ($this->tags_ids) {
         $tids = implode(',', $this->tags_ids);
         $query_tags = $this->_db->getQuery(true)->select('*')->from('#__jkit_translations')->where("ref_table = 'tags'")->where("lang = {$lang}");
         $query_tags->where("ref_id IN ({$tids})");
         $translations_tags = $this->_db->setQuery($query_tags)->loadObjectList();
     }
     // check there are translations to apply
     if (!$translations && !$translations_tags) {
         return $items;
     }
     // apply translations
     foreach ($items as $item) {
         // apply items translations
         foreach ($translations as $translation) {
             if ($item->id == $translation->ref_id) {
                 $item = JKit::applyTranslation($item, $translation);
             }
         }
         // apply tags translations
         foreach ($translations_tags as $translation) {
             foreach ($item->tags as $tag) {
                 if ($tag->id == $translation->ref_id) {
                     $tag->title = $translation->title;
                     $tag->alias = $translation->alias;
                 }
             }
             // reorder item tags
             usort($item->tags, array('JKitModelItems', 'reorderTranslatedTags'));
         }
     }
     // assign tags translation
     // TODO: merge in the first loop, no need for 2 loops
     if (!$this->tags || !$translations_tags) {
         return $items;
     }
     foreach ($this->tags as $tag) {
         foreach ($translations_tags as $translation) {
             if ($tag->id == $translation->ref_id) {
                 $tag->title = $translation->title;
                 $tag->alias = $translation->alias;
             }
         }
     }
     // reorder translation tags
     usort($this->tags, array('JKitModelItems', 'reorderTranslatedTags'));
     return $items;
 }