Форум русской поддержки Joomla!® CMS
03.12.2016, 15:36:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Вставить код модуля в код Joomla

 (Прочитано 481 раз)
0 Пользователей и 1 Гость смотрят эту тему.
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« : 18.04.2016, 19:18:04 »

Суть в том, что я хочу вставить модуль "похожие материалы" ВЫШЕ комментариев.
http://screenshot.su/show.php?img=5a928ef4930bd382869f5bc2aebf7941.jpg
как на скрине.

Я не программер, но как можно сделать это?
как вставить код в файл модуля комментариев, который находится сразу под материалом?

Использую шаблон "purity_iii".
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #1 : 18.04.2016, 19:23:57 »

Зачем так сложно заморачиваться, код модуля в код другого, нужно проще жить, позицию на вывод модуля сделать в нужном месте.
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #2 : 18.04.2016, 20:25:00 »

Зачем так сложно заморачиваться, код модуля в код другого, нужно проще жить, позицию на вывод модуля сделать в нужном месте.
дак сейчас так и сделано.. но вывод модуля происходит ниже плагина комментариев..а мне надо выше..сразу под материалом
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #3 : 18.04.2016, 22:09:56 »

Надо просто в шаблон материала вставить позицию модуля.
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #4 : 18.04.2016, 23:15:43 »

Надо просто в шаблон материала вставить позицию модуля.
если вы о том, что лежит
тут
/nashi-pozdravleniya.ru/www/components/com_content/views/article/tmpl

в фале default.pfp то каким образом туда вставить код позиции модуля я не знаю..

а если вы о файле index.php шаблона то я пробовал.. резуольтат описан выше.. похожие матеиалы выводятся ниже плагина соц каментов.
Записан
SmokerMan
Профи
********

Репутация: +692/-25
Offline Offline

Пол: Мужской
Сообщений: 5215



« Ответ #5 : 19.04.2016, 02:26:35 »

сначала надо определиться по какому событию работает плагин onContentPrepare или onContentAfterDisplay
может там есть настройка какая-то в нем
в 2-х словах его надо переделать на onContentAfterDisplay и тогда модуль надо вставлять до
Код:
<?php echo $this->item->event->afterDisplayContent; ?>
или как вариант модуль вставить в код плагина)
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #6 : 19.04.2016, 08:47:33 »

сначала надо определиться по какому событию работает плагин onContentPrepare или onContentAfterDisplay
может там есть настройка какая-то в нем
в 2-х словах его надо переделать на onContentAfterDisplay и тогда модуль надо вставлять до
Код:
<?php echo $this->item->event->afterDisplayContent; ?>
или как вариант модуль вставить в код плагина)
про события для меня сложно..
а вот про вставку модуля в код плагина прошу поподробнее ..

его код

Код:
<?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="border-top: 1px solid #eeeeee; padding-top:10px">
<b>Поделиться:</b><p> <script type="text/javascript" src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js" charset="utf-8"></script>
<script type="text/javascript" src="//yastatic.net/share2/share.js" charset="utf-8"></script>
<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir,gplus,twitter,viber,whatsapp" data-counter=""></div>
<div>




<br clear="all"><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">
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';
$scriptPage .= <<<HTML
<style>
#googlecomm * {width:$width_ !important;min-height:600px !important;}
</style>
<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')) { $scriptPage .= <<<HTML
<style>
.fb-comments,.fb-comments span,.fb-comments iframe {min-height: 300px!important; width:100%!important;}
.fb_hide_iframes iframe {left:0px !important;}
</style>

<li style="list-style-type: none;"><a href="#fbcomm" data-toggle="tab"><div><i class="jlico-facebook"></i> $jlcomments_fb (<fb:comments-count $article_url/> </fb:comments-count>)</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'>
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>(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">
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);
}

}
}
}
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #7 : 19.04.2016, 11:57:47 »


/nashi-pozdravleniya.ru/www/components/com_content/views/article/tmpl
да, вставить туда позицию модуля если вывод выполняется через него

в плагин, перед
Код
$scriptPage = <<<HTML
<div style="border-top: 1px solid #eeeeee; padding-top:10px">
вставьте позицию модуля
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #8 : 19.04.2016, 12:50:33 »

Parse error: syntax error, unexpected '<' in /home/u30016/nashi-pozdravleniya.ru/www/plugins/content/jlcomments/jlcomments.php on line 111

такая ошибка появляется
Записан
SmokerMan
Профи
********

Репутация: +692/-25
Offline Offline

Пол: Мужской
Сообщений: 5215



« Ответ #9 : 19.04.2016, 13:03:54 »

Цитировать
$document   =  JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
$position   = 'позиция модуля';
$scriptPage = $renderer->render($position, $options, null);


$scriptPage .= <<<HTML

<div style="border-top: 1px solid #eeeeee; padding-top:10px">   
....
Записан
shur
Давно я тут
****

Репутация: +49/-1
Offline Offline

Пол: Мужской
Сообщений: 238



« Ответ #10 : 19.04.2016, 13:38:06 »

Цитировать
или как вариант модуль вставить в код плагина)
Да уже есть несколько готовых плагинов которые добавляют позиции с модулями на стр. материала.

Вот к примеру плагин который может добавить до 3 позиций для вставки модулей на страницу с статьей.
Причем, позицию можно вывести после заголовка, после текста материала и даже внутри текста материала если нужно.
http://extensions.joomla.org/extensions/extension/style-a-design/modules-management/raxo-load-module-position


Цитировать
Суть в том, что я хочу вставить модуль "похожие материалы" ВЫШЕ комментариев.
...
Я не программер, но как можно сделать это?
Судя по всему, вам бы подошел этот плагин, в нем вам нужно использовать позицию "after-content" которая как раз выводится после текста, но перед комментариями.
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #11 : 19.04.2016, 17:30:27 »

Да уже есть несколько готовых плагинов которые добавляют позиции с модулями на стр. материала.

Вот к примеру плагин который может добавить до 3 позиций для вставки модулей на страницу с статьей.
Причем, позицию можно вывести после заголовка, после текста материала и даже внутри текста материала если нужно.
http://extensions.joomla.org/extensions/extension/style-a-design/modules-management/raxo-load-module-position

Судя по всему, вам бы подошел этот плагин, в нем вам нужно использовать позицию "after-content" которая как раз выводится после текста, но перед комментариями.

это то что мне нужно конечно, но он платный.. нафиг надо за 18 баксов его покупать
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #12 : 19.04.2016, 17:37:14 »

$document   =  JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
$position   = 'позиция модуля';
$scriptPage = $renderer->render($position, $options, null);

$scriptPage .= <<<HTML

<div style="border-top: 1px solid #eeeeee; padding-top:10px">   
....

Это тоже не проконало ((

Код:
               $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);
                  }

$document   =  JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
$position   = 'position-down';
$scriptPage = $renderer->render($position, $options, null);
$scriptPage = <<<HTML

<div style="border-top: 1px solid #eeeeee; padding-top:10px">
<b>Поделиться:</b><p> <script type="text/javascript" src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js" charset="utf-8"></script>
<script type="text/javascript" src="//yastatic.net/share2/share.js" charset="utf-8"></script>
<div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir,gplus,twitter,viber,whatsapp" data-counter=""></div>
<div>


Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #13 : 19.04.2016, 20:30:27 »

Это тоже не проконало ((
Что именно не проканало?
ну и версия движка какая?
Записан
SmokerMan
Профи
********

Репутация: +692/-25
Offline Offline

Пол: Мужской
Сообщений: 5215



« Ответ #14 : 19.04.2016, 22:12:42 »

Это тоже не проконало ((
естественно не проканало, потому что надо внимательно смотреть на то что пишут
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #15 : 20.04.2016, 22:10:13 »

естественно не проканало, потому что надо внимательно смотреть на то что пишут

Грешу невнимательностью. Но вроде бы все правильно сделал, лишь стиль вывода подредактировал, исправил на "T3Xhtml"
Укажите, что сделал не так, ибо модуль внизу матриала по прежнему не выводится(
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #16 : 20.04.2016, 23:06:22 »

Читать внимательно надо, Горыныч написал
сначала надо определиться по какому событию работает плагин onContentPrepare или onContentAfterDisplay
может там есть настройка какая-то в нем
в 2-х словах его надо переделать на onContentAfterDisplay и тогда модуль надо вставлять до
Код
<?php echo $this->item->event->afterDisplayContent; ?>
или как вариант модуль вставить в код плагина)
у вас в плагине
Код
public function onContentPrepare($context, &$article, &$params, $page = 0){
его надо менять
Записан
robotwerder
Давно я тут
****

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 204


« Ответ #17 : 21.04.2016, 00:00:00 »

Читать внимательно надо, Горыныч написалу вас в плагине
Код
public function onContentPrepare($context, &$article, &$params, $page = 0){
его надо менять

я конечно извиняюсь, долго пытался вникнуть в ваше повествование)).но я н специалист)... фразу
Цитировать
его надо менять
не понял.. кого его? не плагин же

Понял что необходимо изменить событие на onContentAfterDisplay.
Поэтому тупо заменил

   public function onContentPrepare($context, &$article, &$params, $page = 0){

на onContentAfterDisplay ($context, &$article, &$params, $page = 0){

что естественное результата не принесло).

Записан
robert
Профи
********

Репутация: +343/-11
Offline Offline

Пол: Мужской
Сообщений: 3567


« Ответ #18 : 21.04.2016, 00:24:09 »

deleted
« Последнее редактирование: 21.04.2016, 13:47:42 от robert » Записан
SmokerMan
Профи
********

Репутация: +692/-25
Offline Offline

Пол: Мужской
Сообщений: 5215



« Ответ #19 : 21.04.2016, 02:19:39 »

Точка
ну вот и внимательные нашлись  Smiley
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3525


« Ответ #20 : 21.04.2016, 11:00:49 »

Не помогает "тупой" копипаст  Smiley
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet