Доработка приведение кода в нормальный вид

More
7 years 11 months ago - 7 years 11 months ago #5926 by Aoki Daisuke
Долго объяснять, проще показать все изменения в файле:
jlcomments.php
<?php
/**
 * JLcomments
 *
 * @version 2.6
 * @author Kunitsyn Vadim (vadim@joomline.ru), Artem Jukov (artem@joomline.ru)
 * @copyright (C) 2011 by Kunitsyn Vadim(http://www.joomline.ru)
 * @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
 **/
 
// no direct access
defined('_JEXEC') or die;
 
jimport('joomla.plugin.plugin');
 
class plgContentJlcomments extends JPlugin
{
 
	public function onContentPrepare($context, &$article, &$params, $page = 0){
		if($context == 'com_content.article'){
		if (strpos($article->text, '{jlcomments-off}') !== false) {
			$article->text = str_replace("{jlcomments-off}","",$article->text);
			return true;
		}
 
		if (strpos($article->text, '{jlcomments}') === false && !$this->params->def('autoAdd')) {
			return true;
		}
 
		$exceptcat = is_array($this->params->def('categories')) ? $this->params->def('categories') : array($this->params->def('categories'));
		if (!in_array($article->catid,$exceptcat)) {
			$view = JRequest::getCmd('view');
			if ($view == 'article') {
				$doc = JFactory::getDocument();
				$uri = JURI::getInstance();
				$base = $uri->toString(array('scheme', 'host', 'port'));
				$article_url = $base.JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->catslug));
 
 
				$apiId 			= $this->params->def('apiId');
				$widthvk 		= $this->params->def('widthvk');
				$widthfb 		= $this->params->def('widthfb');
				$widthgoogle 	= $this->params->def('widthgoogle');
				$comLimit 		= $this->params->def('comLimit');
				$attach 		= $this->params->def('attach');
				$autoPublish	= $this->params->def('autoPublish');
				$norealtime 	= $this->params->def('norealtime');
				$fbId 			= $this->params->def('fbId');
				$fbadmin 		= $this->params->def('fbadmin');
				$fb_lang 		= $this->params->def('fb_lang');
				$typeviewerjq 	= $this->params->def('typeviewerjq');
				$typeviewerbs 	= $this->params->def('typeviewerbs');
				$typeviewernojq = $this->params->def('typeviewernojq');
				$typeviewercss	= $this->params->def('typeviewercss');
				$link 			= $this->params->def('link');
				$colorscheme 	= $this->params->def('colorscheme');
				$order_by_fb	= $this->params->def('orderbyfb');
				$linknone		= '';
				$lang = JFactory::getLanguage();
				$lang->load('plg_content_jlcomments', JPATH_ADMINISTRATOR);
				$jlcomments_comments = JText::_('PLG_JLCOMMENTS_COMMENTS');
				$jlcomments_vk = JText::_('PLG_JLCOMMENTS_VK');
				$jlcomments_fb = JText::_('PLG_JLCOMMENTS_FB');
				$jlcomments_google = JText::_('PLG_JLCOMMENTS_GOOGLE');
 
				$script = "VK.init({apiId: $apiId, onlyWidgets: true});";
				$doc->addCustomTag('<meta property="fb:admins" content="'.$fbadmin.'"/>');
				$doc->addCustomTag('<meta property="fb:app_id" content="'.$fbId.'"/>');
				$doc->addScript("//vk.com/js/api/openapi.js?95");
				$doc->addCustomTag('<script src="https://apis.google.com/js/plusone.js" type="text/javascript">/* {lang: "'.$fb_lang.'"} */</script>');
				$doc->addScriptDeclaration($script);
				$pagehash = $article->id;
				$orders = explode(",",$this->params->def('orders'));
				if (($this->params->def('googleid')!='')&&($this->params->def('googleplus'))){
					$doc->addCustomTag('<link rel="author" href="https://plus.google.com/'. $this->params->def('googleid') .'/">');
				}
				else {}
 
				if ($link==0){
					$linknone = 'display:none;';
					}
				else {}
 
				If ($typeviewerjq==1) {
					$doc->addCustomTag('<script src="http://yandex.st/jquery/1.9.1/jquery.min.js"></script>');
					}
				If ($typeviewercss==1) {
					$doc->addStyleSheet("/plugins/content/jlcomments/css/jlcomtabs.css");
					}
				If ($typeviewerbs==1) {
					$doc->addCustomTag('<script src="http://yandex.st/bootstrap/2.3.0/js/bootstrap.min.js"></script>');
					}
				If ($typeviewernojq==1) {
					$doc->addCustomTag ('<script type="text/javascript">var jqjlcomm = jQuery.noConflict();</script>');
					}
				else {}
 
                $comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
                  if (file_exists($comments)) {
                    require_once($comments);
                    $options['object_id'] = $pagehash;
                    $options['object_group'] = 'com_content';
                    $options['published'] = 1;
                    $count = JCommentsModel::getCommentsCount($options);
                  }
 
	$scriptPage = <<<HTML
		<div style="clear:both">&nbsp;</div><div id="jlcomments_container"><ul class="nav nav-tabs" id="plgjlcomments1">
HTML;
 
 
 
	foreach ($orders as $order) {
		switch($order) {
			case 1:	if ($this->params->def('showjcomments')) { $scriptPage .= <<<HTML
				<li style="list-style-type: none;" class="active"><a href="#jcommentscomm" data-toggle="tab"><i class="jlico-comments"></i> $jlcomments_comments ($count)</a></li>
HTML;
			} else {$scriptPage .='';$showjcomments='-1';} break;
			case 2:	if ($this->params->def('showvkontakte')) { $scriptPage .= <<<HTML
				<script type="text/javascript">
					/* <![CDATA[ */
					jQuery(document).ready(function(){
					jQuery.ajax({
					url: "https://api.vk.com/method/widgets.getComments.json?widget_api_id=$apiId&page_id=$pagehash",
					dataType: 'jsonp',
					success: function(data){
					jQuery('#vk_count').text(data.response.count); 
					},
					error: function(data){
					console.log(data);
					}
					}); 
					});
					/* ]]> */
				</script>
				<li style="list-style-type: none;"><a href="#vkcomm" data-toggle="tab"><i class="jlico-vk"></i> $jlcomments_vk (<span id="vk_count"></span>)</a></li>
HTML;
			} else {$scriptPage .='';} break;
			case 3:	if ($this->params->def('googleplus')) {
				$width_ = $widthgoogle.'px';
				$doc = JFactory::getDocument();
				$style1 = '#googlecomm * {width:$width_ !important;min-height:600px !important;}';
				$doc->addStyleDeclaration( $style1 );
				$scriptPage .= <<<HTML
					<li style="list-style-type: none;"><a href="#googlecomm" data-toggle="tab"><i class="jlico-google"></i> $jlcomments_google</a></li>
HTML;
			} else {$scriptPage .='';} break;
			case 4:	if ($this->params->def('showfacebook')) {$doc = JFactory::getDocument();
				$style2 = '.fb-comments,.fb-comments span,.fb-comments iframe {min-height: 300px!important; width:100%!important;} .fb_hide_iframes iframe {left:0px !important;}';
				$doc->addStyleDeclaration( $style2 );
			$scriptPage .= <<<HTML
 
				<li style="list-style-type: none;"><a href="#fbcomm" data-toggle="tab"><div><i class="jlico-facebook"></i> $jlcomments_fb (<span class="fb-comments-count" data-href="$article_url"></span>)</div></a></li>
HTML;
			} else {$scriptPage .='';} break;
			}			
			}
 
		$scriptPage .= <<<HTML
			</ul>
			<div class="tab-content">
HTML;
	foreach ($orders as $order) {		
		switch($order) {		
			case 1: if ($this->params->def('showjcomments')) { $scriptPage .= <<<HTML
				<div class="tab-pane active" id="jcommentscomm">
					{jcomments}
				</div>
HTML;
			} else {$scriptPage .='';$showjcomments='-1';} break;
			case 2: if ($this->params->def('showvkontakte')) { $scriptPage .= <<<HTML
				<div class="tab-pane" id="vkcomm">
					<div id='jlcomments'></div>
						<script type='text/javascript'>
						/* <![CDATA[ */
							VK.Widgets.Comments('jlcomments', {limit: $comLimit, width: '$widthvk', attach: '$attach', autoPublish: $autoPublish, norealtime: $norealtime},$pagehash);
						/* ]]> */
						</script>
				</div>
 
HTML;
			} else {$scriptPage .='';} break;	
			case 3: if ($this->params->def('googleplus')) { 
 
				$scriptPage .= <<<HTML
 
 
 
					<div class="tab-pane" id="googlecomm">		
 
						<div class="g-comments"
							data-href="$article_url"
							data-width="$widthgoogle"
							data-first_party_property="BLOGGER"
							data-view_type="FILTERED_POSTMOD">
						</div>
					</div>
HTML;
			} else {$scriptPage .='';} break;						
			case 4: if ($this->params->def('showfacebook')) { $scriptPage .= <<<HTML
                <div class="tab-pane" id="fbcomm">
						<script type="text/javascript">/* <![CDATA[ */(function(d, s, id) {
						var js, fjs = d.getElementsByTagName(s)[0];
						if (d.getElementById(id)) return;
						js = d.createElement(s); js.id = id;
						js.src = "//connect.facebook.net/$fb_lang/all.js#xfbml=1&version=v2.0";
						fjs.parentNode.insertBefore(js, fjs);
						}(document, 'script', 'facebook-jssdk'));/* ]]> */</script>
					<div class="fb-comments" data-href="$article_url" data-num-posts="$comLimit" data-width="$widthfb" data-colorscheme="$colorscheme" data-order-by="$order_by_fb"></div>
				</div>				
 
 
HTML;
			} else {$scriptPage .='';} break;
		}
	}
	$scriptPage .= <<<HTML
		 </div>	
	</div>
		<script type="text/javascript">
			/* <![CDATA[ */
			jQuery(document).ready(function(){
			jQuery('#plgjlcomments1 a:first').tab('show');
			});
			/* ]]> */
		</script>
	<div style="text-align: right; $linknone;">
		<a style="text-decoration:none; color: #c0c0c0; font-family: arial,helvetica,sans-serif; font-size: 5pt; " target="_blank" href="http://www.38i.ru">www.38i.ru</a>
	</div>
HTML;
 
		if ($this->params->def('autoAdd') == 1) {
			$article->text .= $scriptPage;
			} else {
				$article->text = str_replace("{jlcomments}",$scriptPage,$article->text);
				}
 
			}
		} else {
				$article->text = str_replace("{jlcomments}","",$article->text);
			}
 
		}
	}
}
данный код рабочий и проходит по валидации
Last edit: 7 years 11 months ago by Aoki Daisuke.

Please Log in or Create an account to join the conversation.

More
7 years 11 months ago #5927 by JoomLine
А чем отличается от оригинала, кроме того, что вы вынесли в хидер некоторые стлили?

Please Log in or Create an account to join the conversation.

More
7 years 11 months ago - 7 years 11 months ago #5928 by Aoki Daisuke
Для начало неплохо было бы залить скрипт на github.com, как у JoomlaWorks сделано:
github.com/joomlaworks/allvideos

Эту модификацию я делал:
github.com/lev99/mod_amoney

социальные кнопки тоже делал, но так и не пригодилось не для одного проекта :evil:

GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. Основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc (ранее Logical Awesome).


Так было бы заметней когда я правлю и ссылки на изменение проще писать.
а так по изменениям
$doc->addCustomTag('<script src="https://apis.google.com/js/plusone.js" type="text/javascript">/* {lang: "'.$fb_lang.'"} */</script>');
$scriptPage = <<<HTML
		<div style="clear:both">&nbsp;</div><div id="jlcomments_container"><ul class="nav nav-tabs" id="plgjlcomments1">
HTML;
<li style="list-style-type: none;"><a href="#fbcomm" data-toggle="tab"><div><i class="jlico-facebook"></i> $jlcomments_fb (<span class="fb-comments-count" data-href="$article_url"></span>)</div></a></li>

HTML;
				<script type="text/javascript">
					/* <![CDATA[ */
					jQuery(document).ready(function(){
					jQuery.ajax({
					url: "https://api.vk.com/method/widgets.getComments.json?widget_api_id=$apiId&page_id=$pagehash",
					dataType: 'jsonp',
					success: function(data){
					jQuery('#vk_count').text(data.response.count); 
					},
					error: function(data){
					console.log(data);
					}
					}); 
					});
					/* ]]> */
				</script>
						<script type='text/javascript'>
						/* <![CDATA[ */
							VK.Widgets.Comments('jlcomments', {limit: $comLimit, width: '$widthvk', attach: '$attach', autoPublish: $autoPublish, norealtime: $norealtime},$pagehash);
						/* ]]> */
						</script>
              <div class="tab-pane" id="fbcomm">
						<script type="text/javascript">/* <![CDATA[ */(function(d, s, id) {
						var js, fjs = d.getElementsByTagName(s)[0];
						if (d.getElementById(id)) return;
						js = d.createElement(s); js.id = id;
						js.src = "//connect.facebook.net/$fb_lang/all.js#xfbml=1&version=v2.0";
						fjs.parentNode.insertBefore(js, fjs);
						}(document, 'script', 'facebook-jssdk'));/* ]]> */</script>
					<div class="fb-comments" data-href="$article_url" data-num-posts="$comLimit" data-width="$widthfb" data-colorscheme="$colorscheme" data-order-by="$order_by_fb"></div>
				</div>
		<script type="text/javascript">
			/* <![CDATA[ */
			jQuery(document).ready(function(){
			jQuery('#plgjlcomments1 a:first').tab('show');
			});
			/* ]]> */
		</script>
		} else {$scriptPage .='';} break;
			case 3:	if ($this->params->def('googleplus')) {
				$width_ = $widthgoogle.'px';
				$doc = JFactory::getDocument();
				$style1 = '#googlecomm * {width:$width_ !important;min-height:600px !important;}';
				$doc->addStyleDeclaration( $style1 );
				$scriptPage .= <<<HTML
					<li style="list-style-type: none;"><a href="#googlecomm" data-toggle="tab"><i class="jlico-google"></i> $jlcomments_google</a></li>
HTML;
case 4:	if ($this->params->def('showfacebook')) {$doc = JFactory::getDocument();
				$style2 = '.fb-comments,.fb-comments span,.fb-comments iframe {min-height: 300px!important; width:100%!important;} .fb_hide_iframes iframe {left:0px !important;}';
				$doc->addStyleDeclaration( $style2 );

приблизительно всё
ваш
jsfiddle.net/buxwfs5b/
мой
jsfiddle.net/53k4qkts/

забыл добавить, результат данных изменений, скрипт стал подгружаться быстрее, а значит лучше работать!
Last edit: 7 years 11 months ago by Aoki Daisuke.

Please Log in or Create an account to join the conversation.

More
7 years 10 months ago - 7 years 10 months ago #6032 by Aoki Daisuke
не могу там править, доступа может нет
bitbucket.org/joomline/jl-comments/

Ещё пару изменений пока не забыл
$doc->addCustomTag('<script src="https://apis.google.com/js/plusone.js" type="text/javascript" async="async">/* {lang: "'.$fb_lang.'"} */</script>');
$doc->addCustomTag('<script src="//yandex.st/bootstrap/2.3.0/js/bootstrap.min.js" async="async"></script>');

Есть конфликт вк и фб, как это можно увидеть, поменяйте строку:
$doc->addScript("//vk.com/js/api/openapi.js?95");
на эту
$doc->addCustomTag('<script src="//vk.com/js/api/openapi.js?95" async="async"></script>');
похоже Обычная инициализация - не подходит, должна быть Асинхронная инициализация
vk.com/dev/openapi

Кстати у них уже изменения
<!-- Put this script tag to the <head> of your page -->
<script type="text/javascript" src="//vk.com/js/api/openapi.js?127"></script>
vk.com/dev/Comments
То есть должно быть:
$doc->addScript("//vk.com/js/api/openapi.js?127");
Last edit: 7 years 10 months ago by Aoki Daisuke.

Please Log in or Create an account to join the conversation.

Powered by Kunena Forum

Last from the forum

    • Достигните новых высот в карьере
    • Купить диплом ВятГСХА. В современном мире многие люди стремятся получить высшее образование, но не всегда у них есть возможность поступить в учебное заведение и успешно его закончить. В таком случае им может прийти в голову мысль о покупке диплома, чтобы иметь возможность устроиться на работу или продолжить обучение. Одним из вузов, дипломы которого можно купить, является ВятГСХА – Высшая школа аграрного дела. Это учебное заведение имеет хорошую репутацию и предлагает качественное образование в сфере сельского хозяйства. Поэтому диплом этого вуза будет ценным и полезным при поиске работы. Купить диплом ВятГСХА можно у специализированных организаций, которые занимаются изготовлением документов высшего образования. Они предлагают своим клиентам широкий выбор дипломов различных университетов, включая и ВятГСХА. При этом можно выбрать не только специальность и уровень образования, но и форму обучения – дневное, заочное или вечернее. Покупка диплома ВятГСХА является легким и быстрым способом получить нужный документ без лишних хлопот и затрат времени. Для этого достаточно обратиться к специалистам, ознакомиться с условиями сотрудничества и оформить заказ. В результате вам будет предоставлен официальный диплом, который ничем не будет отличаться от настоящего. Приобретение диплома ВятГСХА может быть полезным для тех, кто уже имеет определенный опыт работы, но хочет получить дополнительное образование для карьерного роста. Такой документ поможет вам увеличить свои шансы на получение желаемой должности и повысить свой профессиональный уровень. Кроме того, покупка диплома ВятГСХА может быть полезной для тех, кто столкнулся с проблемами при обучении в университете и не смог успешно его закончить. В этом случае такой документ станет отличным способом исправить ситуацию и получить желаемое образование. Таким образом, покупка диплома ВятГСХА может быть хорошим решением для тех, кто хочет улучшить свои карьерные перспективы и получить необходимое образование. Главное помнить, что важно выбирать проверенные организации, которые гарантируют качество услуг и конфиденциальность данных клиентов.
    • In Общий форум / Новости Joomline
    • Thread private label powder supplements
    • Our technical expertise is matched by our commitment to exceptional customer care. We believe in long-term partnership based on transparency, trust and mutual success. Our dedicated account managers will provide you with support and guidance during the entire process - from the initial consultation through to delivery. Our flexible production schedules combined with competitive pricing make it possible for you scale your business effectively. Experience unmatched innovation, quality and service when you choose us to manufacture your powder supplements. We will help your brand reach new heights. 
    • In English Forum / Component
    • Prison Cell Design
    •  Our prison cells were designed with safety as the primary consideration in mind. Our cells are built with robust materials and cutting-edge technologies to provide unmatched durability and resistance against tampering and escape attempts. Features like reinforced steel doors and windows that are shatterproof, as well as tamper proof locking mechanisms, ensure the safety of both staff and inmates. Our also incorporate integration points for seamless surveillance, further improving the overall security infrastructure.
    • In English Forum / Modules
© 2010- JoomLine
The Joomla!® name is used under a limited license from Open Source Matters in the United States and other countries. joomline.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.

email: This email address is being protected from spambots. You need JavaScript enabled to view it.