Select your language

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

More
10 years 1 month ago - 10 years 1 month ago #5926 by
Долго объяснять, проще показать все изменения в файле:
jlcomments.php
Code:
<?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: 10 years 1 month ago by .

Please Log in to join the conversation.

More
10 years 1 month ago #5927 by
А чем отличается от оригинала, кроме того, что вы вынесли в хидер некоторые стлили?

Please Log in to join the conversation.

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

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

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

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


Так было бы заметней когда я правлю и ссылки на изменение проще писать.
а так по изменениям
Code:
$doc->addCustomTag('<script src="https://apis.google.com/js/plusone.js" type="text/javascript">/* {lang: "'.$fb_lang.'"} */</script>');
Code:
$scriptPage = <<<HTML <div style="clear:both">&nbsp;</div><div id="jlcomments_container"><ul class="nav nav-tabs" id="plgjlcomments1"> HTML;
Code:
<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;
Code:
<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>
Code:
<script type='text/javascript'> /* <![CDATA[ */ VK.Widgets.Comments('jlcomments', {limit: $comLimit, width: '$widthvk', attach: '$attach', autoPublish: $autoPublish, norealtime: $norealtime},$pagehash); /* ]]> */ </script>
Code:
<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>
Code:
<script type="text/javascript"> /* <![CDATA[ */ jQuery(document).ready(function(){ jQuery('#plgjlcomments1 a:first').tab('show'); }); /* ]]> */ </script>
Code:
} 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;
Code:
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: 10 years 1 month ago by .

Please Log in to join the conversation.

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

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

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

Кстати у них уже изменения
Code:
<!-- 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
То есть должно быть:
Code:
$doc->addScript("//vk.com/js/api/openapi.js?127");
Last edit: 10 years 1 week ago by .

Please Log in to join the conversation.

Time to create page: 0.187 seconds
Powered by Kunena Forum
    • Как на кнопку Сбросить фильтр повесить Ajax?
    • Чтобы применить фильр нажимаем Применить фильтр и срабатывает Ajax изменеия на странице. Но чтобы сбросить фильтр, нужно сперва нажать Сбросить фильтр и потом повторно нажть Применить фильтр. Логичее было бы сделать при нажатии Сбросить фильтр, чтобы срабатывал сброс фильтра и Ajax. Как это сделать, не поможете?
    • In Modules Joomline / JL Content Fields Filter
    • JL Like 5.3.0. Очень редко срабатывает кнопка pint...
    • Давно пользуюсь JL Like, лет 8-10, с кнопкой pinterest проблем не было, кроме новой версии JL Like 5.3.0: сейчас при 9 запросах из 10, система пишет:Произошла ошибка JSON.parse: unexpected character at line 1 column 1 of the JSON dataДругие кнопки, например AddToAny pinterest – работаю на 100%.Можно сделать патч и поправить кнопкой pinterest в JL Like 5.3.0!?
    • In Plugins Joomline / JL Like / JL Like PRO