Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 139 Ответов
  • 25277 Просмотров
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Суть такая:
1. Загружается страница сайта.
2. После загружается отдельный элемент (например модуль меню)
3. Пользователь видит этот модуль.
4. А в исходном коде этих строк нету.

Зачем это надо.
Очень удобно использовать на сайте такие элементы как облако тегов, топ товара (статей), последние комментарии и т.д.
Но по этим ссылкам утекает вес страницы, что негативно сказывается на продвижении сайта в ПС (SEO)

Перекопал кучу сайтов, но ответа не нашел, уже не первый месяц бьюсь над проблемой. Если местные гуру дадут ответ, предела моему счастью не будет.
П.С. Как это сделать без Joomla я знаю, и делается это в течении нескольких минут.
Я знаю только то, что ничего не знаю
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Re: Подгрузка модулей в шаблон AJAX
« Ответ #1 : 12.04.2012, 15:26:03 »
Если я правильно понял, то это типа вот такого? Если не подходит, то почему?
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #2 : 12.04.2012, 15:55:33 »
Это единственная информация по этой теме, но там то ли не доработка, то ли... (я не про в этом), но она не работает как на примере.
Сам скрипт не корректен. Был еще рус сайт по этой теме, но там так же метод благополучно не работает (
« Последнее редактирование: 12.04.2012, 16:01:01 от NortonFox »
Я знаю только то, что ничего не знаю
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #3 : 13.04.2012, 08:44:52 »
Не ужели некто не знает ответ, этот вопрос.... очень актуальный. Только представьте, что вы полностью контролируете утекаемый вес со страницы, при этом все обычные элементы сайта для удобства пользователя для осуществления навигации остаются.
 
Я знаю только то, что ничего не знаю
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #4 : 13.04.2012, 10:46:27 »
Да всё можно. Делал и постзагрузку модулей, и постзагрузку позиций. С модулями муторней, потому расскажу, как сделать постзагрузку позиций...
1. Вставляем в index.php шаблона в нужные места пустые блоки для каждой позиции подгружаемой:
Код: html4strict
<div id="ajax_r"></div>
<div id="ajax_l"></div>
<div id="ajax_t"></div>

2. Собственно, сам скрипт. Mootools. Писал года полтора назад, не особо изящно накодено, но работает. Можно на Джей переделать, будет ещё проще. Открываем index.php шаблона и добавляем скрипт:
Код: javascript
$this->addScriptDeclaration("
     window.addEvent('domready', function() {

var container_l = $('ajax_l'); //здесь я обозначил блоки, в которые будут грузицо соответствующие позиции
var container_r = $('ajax_r');
var container_t = $('ajax_t');

var url_l = '/index.php?tmpl=ajax_mod&mod_pos=mod_l'; //Формирую запрос.
var url_r = '/index.php?tmpl=ajax_mod&mod_pos=mod_r'; //tmpl=ajax_mod - это для вызова отдельного шаблона компонента. Подробнее ниже
var url_t = '/index.php?tmpl=ajax_mod&mod_pos=mod_t'; //mod_pos=mod_t - а это параметр для обозначения подгружаемой позиции

var preloader = '<div class="ajax_loader"></div>'; // крутилка-прелоадер. бэкграундом гифка. Сгерите без проблем в сети.

//тут я делаю ТРИ запроса. Можно всё собрать в один, если у вас много будет позиций. Это уже сами.
new Ajax(url_l, {
onRequest: function(response) {container_l.setHTML(preloader);}, //запрос пошёл. Пока показывем крутилку
onComplete: function(response) {container_l.setHTML(response);} //ответ пришёл. Заменили крутилку на контент. Всё.
}).request();
new Ajax(url_r, {
onRequest: function(response) {container_r.setHTML(preloader);},
onComplete: function(response) {container_r.setHTML(response);}
}).request();
new Ajax(url_t, {
onRequest: function(response) {container_t.setHTML(preloader);},
onComplete: function(response) {container_t.setHTML(response);}
}).request();
     });
");

3. Создаём в папке шаблона файл ajax_mod.php:
Код: php
<?php defined('_JEXEC') or die;
$mod_pos = JRequest::getVar('mod_pos'); // получаем имя подгружаемой позиции.
?>
<jdoc:include type="modules" name="<?php echo $mod_pos;?>" /> <!--и выводим её.-->
Всё.
p.s. Можно и модули конкретные выводить. Только тут джейинклюбом не получицо, нужно вызывать отдельно рендерер и передавать два обязательных параметра: тип модуля и имя. Наприме mod_menu, mainmenu.
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #5 : 13.04.2012, 10:48:32 »
Не ужели некто не знает ответ, этот вопрос.... очень актуальный. Только представьте, что вы полностью контролируете утекаемый вес со страницы, при этом все обычные элементы сайта для удобства пользователя для осуществления навигации остаются.
Неужели вы не заметили, что "Неужели никто не знает?" - самый популярный пост форума, и его написание положительно не влияет на оперативность помощи со стороны форумчан? ;)
p.s. Для рендеринга отдельных модулей достаточно и одного параметра - типа, удобно, когда модуль реально один, например поисковая форма. А вот для менюшек уже не годицо. Нужно так же передавать айдишник или имя модуля.
« Последнее редактирование: 13.04.2012, 10:52:33 от Shustry »
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #6 : 13.04.2012, 15:58:04 »
Извиняюсь за "Неужели никто не знает?" - буду знать.
Поставил все как вы написали, но модуль не подгрузился.
В файл шаблона вставил скрипт. (смотрел через баербаг - скрипт подцепился)
Создал файл ajax_mod.php с вашим текстом и кинул его в корень шаблона.
Поставил блоки для вывода подгружаемого элемента.
В модуль прописал позицию (сначала поставил ajax_l), потом перепробовал все, что подходит как позиция, но модуль не подгрузился.
п.с. в яве я почти 0, очень вероятно, что то делаю не так.
Я знаю только то, что ничего не знаю
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #7 : 13.04.2012, 16:03:50 »
Пробовали в строке браузера напрямую забить http://сайт/index.php?tmpl=ajax_mod&mod_pos=mod_l ?
Где mod_l - позиция, в которой опубликован хотя бы один модуль.
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #8 : 13.04.2012, 17:43:54 »
Попробовал, модуль выводиться (кастом модуль с произвольным текстом), но без заголовка
« Последнее редактирование: 13.04.2012, 17:56:42 от NortonFox »
Я знаю только то, что ничего не знаю
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: Подгрузка модулей в шаблон AJAX
« Ответ #9 : 13.04.2012, 17:52:04 »
2. Собственно, сам скрипт. Mootools. Писал года полтора назад, не особо изящно накодено, но работает. Можно на Джей переделать, будет ещё проще. Открываем index.php шаблона и добавляем скрипт:
не будет он работать в Joomla 1.6+, т.к. данный код для Mootools v.1.1
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #10 : 13.04.2012, 18:28:44 »
Честно говоря, последний раз что-то на Moo делал на J1.5 и довольно давно. Сейчас jQuery только юзаю. Хз, что там нового в свежих релизах Moo.
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #11 : 13.04.2012, 19:02:04 »
А есть возможность сделать то же самое на jQuery для Joomla 2.5? Если это вас сильно не затруднит. На мой взгляд очень актуальная тема.
Я знаю только то, что ничего не знаю
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #12 : 13.04.2012, 19:14:06 »
Код: javascript
$(document).ready(function(){

var url_l = '/index.php?tmpl=ajax_mod&mod_pos=mod_l';

$.ajax({
url: url_l,
dataType : "html",
success: function(html){
$("#ajax_l").append(html);
}
});

});
Проверить не на чем. О результате отпишитесь пожалуйста.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Подгрузка модулей в шаблон AJAX
« Ответ #13 : 13.04.2012, 19:43:29 »
Код: javascript
     window.addEvent('domready', function() {

var container_l = $('ajax_l'); //здесь я обозначил блоки, в которые будут грузицо соответствующие позиции
var container_r = $('ajax_r');
var container_t = $('ajax_t');

var url_l = 'tmpl=ajax_mod&mod_pos=mod_l'; //Формирую запрос.

var preloader = '<div class="ajax_loader"></div>'; // крутилка-прелоадер. бэкграундом гифка. Сгерите без проблем в сети.

//тут я делаю ТРИ запроса. Можно всё собрать в один, если у вас много будет позиций. Это уже сами.
new Request({
                url: 'index.php',
                data: url_l,
                method: 'get',
onRequest: function() {container_l.setHTML(preloader);}, //запрос пошёл. Пока показывем крутилку
onSuccess: function(response) {container_l.setHTML(response);} //ответ пришёл. Заменили крутилку на контент. Всё.
}).send();

     });

На новых мутулзах такой код должен работать.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #14 : 14.04.2012, 09:45:59 »
Насколько я понял, оба кода не работают, хотя опять же есть возможность, что я что то делаю не так ((
Я знаю только то, что ничего не знаю
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Подгрузка модулей в шаблон AJAX
« Ответ #15 : 14.04.2012, 14:09:45 »
А как я понял - никто не проверял эти коды в действии, возможно там ошибки, FireBug - лучший друг, все расскажет, все покажет.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #16 : 14.04.2012, 15:00:31 »
Насколько вижу, оба способа рабочие.
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #17 : 15.04.2012, 07:31:17 »
Что бы точно не ошибиться я опишу процесс.
1. Система win7 64б
2. Для создания локального сервера используется denwer
3. joomla 2.5.4 (взята с офф сайта)
4. Для эксперимента берется шаблон beez_20, из этого шаблона все благополучно удаляется. Остается только: templateDetails.xml, index.php, html/modules.php, css/template.css, index.html (в двух папках и в корне), favicon.ico.
5. Добавляю в корень шаблона файл ajax_mod.php с текстом:
Код: php
<?php defined('_JEXEC') or die;
$mod_pos = JRequest::getVar('mod_pos');
?>
<jdoc:include type="modules" name="<?php echo $mod_pos;?>" />
6. Файл index.php – из него все удаляется (код шаблона), и вписывается следующий код:
Код: php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/beez_20/css/template.css" type="text/css" />
<script>
window.addEvent('domready', function() {
var container_l = $('ajax_l');
var container_r = $('ajax_r');
var container_t = $('ajax_t');
var url_l = 'tmpl=ajax_mod&mod_pos=mod_l';
var preloader = '<div class="ajax_loader"></div>';
new Request({
url: 'index.php',
data: url_l,
method: 'get',
onRequest: function() {container_l.setHTML(preloader);},
onSuccess: function(response) {container_l.setHTML(response);}
}).send();
});
</script>
</head>
<body>
<div id="ajax_l"></div>
<div id="ajax_r"></div>
<div id="ajax_t"></div>
</body>
</html>
7. Создаю модуль Custom HTML с текстом – 22222222, присваиваю позицию mod_l, обращаюсь к нему по ссылке /index.php?tmpl=ajax_mod&mod_pos=mod_l , модуль выводиться на экран.
8. Обращаюсь к файлу index.php (запускаю сайт), модуль не выводиться.
9. Пробую код в пункте 6, заменить на этот:
Код: php
$(document).ready(function(){
var url_l = '/index.php?tmpl=ajax_mod&mod_pos=mod_l';
$.ajax({
url: url_l,
dataType : "html",
success: function(html){
$("#ajax_l").append(html);
}
});
});
Так же нечего не происходит.
« Последнее редактирование: 15.04.2012, 07:38:13 от NortonFox »
Я знаю только то, что ничего не знаю
*

noname-dev

  • Захожу иногда
  • 281
  • 17 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #18 : 15.04.2012, 08:29:19 »
Код
$(document).ready(function(){
var url_l = '/index.php?tmpl=ajax_mod&mod_pos=mod_l';
$.ajax({
url: url_l,
dataType : "html",
success: function(html){
$("#ajax_l").append(html);
}
});
});
Это уже jquery и просто так работать не будет, нужно подгрузить библиотеку
Код
<script src="http://code.jquery.com/jquery-latest.js"></script>
И не забываем про возможный конфликт moo и jquery
В итоге нужно сделать примерно так
Код
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){
var url_l = '/index.php?tmpl=ajax_mod&mod_pos=mod_l';
jQuery.ajax({
url: url_l,
dataType : "html",
success: function(html){
jQuery("#ajax_l").append(html);
}
});
});
</script>
« Последнее редактирование: 15.04.2012, 08:33:10 от noname-dev »
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #19 : 15.04.2012, 08:39:22 »
Отключить мутулз можно так:
Код: php
unset(	$this->_scripts[$this->baseurl.'/media/system/js/mootools-core.js'], 
$this->_scripts[$this->baseurl.'/media/system/js/mootools-more.js'],
$this->_scripts[$this->baseurl.'/media/system/js/core.js'],
$this->_scripts[$this->baseurl.'/media/system/js/caption.js'],
$this->_scripts[$this->baseurl.'/media/system/js/validate.js']
);
$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #20 : 15.04.2012, 08:48:18 »
Ура ! подгрузился, не вериться просто )) несколько месяцев поисков решения проблемы ))) спасибо всем кто участвовал в данном обсуждении.
Сопутствующий вопрос.
В подгружающем модуле нету заголовка, по ссылке /index.php?tmpl=ajax_mod&mod_pos=mod_l его так же нету.
В настройках модуля стоит - Показывать заголовок: Показать
Я знаю только то, что ничего не знаю
*

noname-dev

  • Захожу иногда
  • 281
  • 17 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #21 : 15.04.2012, 08:52:39 »
<jdoc:include type="modules" name="<?php echo $mod_pos;?>" style="xhtml" /> - выделил что нужно дописать чтобы был заголовок модуля
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #22 : 15.04.2012, 09:07:32 »
Поспешил с вопросом, решил проблему... пока писал, был написан ответ, да именно так сделал, все отобразилось !
Еще раз всем спасибо, радости моей нет предела... и не случайно. Сейчас постараюсь объяснить важность данного решения.
Я не силен в программировании (хтмл знаю на 5+), зато у меня не плохо получается продвигать сайты в ПС (SEO).
Есть такой человек - Александр Люстик, автор программы Key Collector, один из его проектов - сео блог http://seom.info/ очень интересный и познавательный ресурс (кому интересно), в одной из статей, а так же на megaindex он выступает с темой - "Как организовать перелинковку для поднятия НЧ запросов" ( http://www.megaindex.tv/programs/seo_instrumenty/kak_organizovat_perelinkovku_dlya_podnyatiya_nch_zaprosov/ ) палиться интересная фишка, для кого то конечно это будет не ново, а для кого то прозрение. А так же упоминается вопрос, как ограничить утекаемый вес со страницы, он рекомендует выносить блоки и ссылки сайта в сторонние документы (тема поста).
Кто сильно занимается продвижением, меня поймет, было бы хорошо эту тему закрепить.
« Последнее редактирование: 02.05.2012, 22:59:29 от NortonFox »
Я знаю только то, что ничего не знаю
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Подгрузка модулей в шаблон AJAX
« Ответ #23 : 15.04.2012, 09:49:06 »
А ченить типа <!--noindex-->модуль<!--/noindex--> не пойдет?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Shustry

  • Moderator
  • 6434
  • 745 / 3
Re: Подгрузка модулей в шаблон AJAX
« Ответ #24 : 15.04.2012, 09:52:54 »
Насколько знаю, поисковики уже научились индексировать подгружаемый контент, не? Польза решения - скорость загрузки страницы. Т.е., если есть тяжёлые модули, то их можно повесить в постзагрузку.
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #25 : 15.04.2012, 10:47:18 »
<!--noindex-->модуль<!--/noindex--> не подходит совершенно, текст между этими тегами не участвует в ранжировании, и не передает вес, но вес со страницы уходит, то есть теряем наш драгоценный вес, который можно направить в нужное русло.
Насколько знаю, поисковики уже научились индексировать подгружаемый контент, не? Польза решения - скорость загрузки страницы. Т.е., если есть тяжёлые модули, то их можно повесить в постзагрузку.
Насколько я знаю не научились, это трудоемкий процесс, и вряд ли в скором времени научаться это делать.
Александр Люстик четко говорит, что надо делать с не нужными для поисковика блоками, а на мой взгляд ему можно верить.
Я знаю только то, что ничего не знаю
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Подгрузка модулей в шаблон AJAX
« Ответ #26 : 15.04.2012, 12:02:46 »
мне вот тоже кажется что поисковики понимают что исходная страница все сильнее отличается от той которую отображает браузер после отработки скриптов и стилей...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

eclipseggg

  • Захожу иногда
  • 410
  • 32 / 2
Re: Подгрузка модулей в шаблон AJAX
« Ответ #27 : 15.04.2012, 12:10:02 »
вот и посмотрим на сайт автора , проиндексирует ли модуль Google)))либо все же хак удался=)
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #28 : 15.04.2012, 12:11:06 »
Я думаю они это понимали изначально, тут как посмотреть на это все. Если в такие блоки подгружать продажные ссылки, то толку с них нету, так как они не индексируются, от сюда и покупать их не будут, можно положить рекламу, но опять же она будет не навязчива (не прыгает по экрану, не скачет).
В конечном итоге, если поисковик научиться читать такие блоки, то он увидит совершенно не запрещенный текст (меню, теги, комментарии и тд), сайту это не навредит точно, а вот помочь может не слабо.
Я склоняюсь к правильному написании, не вижу смыла обманывать пользователей, такие проекты долго не живут, лучше работать на перспективу.
Я знаю только то, что ничего не знаю
*

NortonFox

  • Захожу иногда
  • 441
  • 43 / 0
Re: Подгрузка модулей в шаблон AJAX
« Ответ #29 : 15.04.2012, 12:22:16 »
Не надо далеко ходить, что бы проверить это на деле.
Как я и писал выше, есть сайт http://seom.info/ (автор Александр Люстик). Пройдя на сайт мы увидим правую колонку, содержащую следующие блоки - меню, Популярные статьи, Перейдем на личности, О чем мы тут болтаем и Polls, открыв сайт в исходном коде, мы увидим, только - меню и Polls, остальных блоков там нет. Идем дальше, нам надо понять, индексирует все таки Яндекс не достающие блоки или нет, для этого открываем копию сайта http://hghltd.yandex.net/yandbtm?text=http%3A%2F%2Fseom.info%2F&url=http%3A%2F%2Fseom.info%2F&fmode=inject&mime=html&l10n=ru&sign=70b63090d27d64368e62d5ad0644c416&keyno=0 и видим чудо, не нужных блоков там нету !
Я знаю только то, что ничего не знаю
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать свой шаблон quickstart?

Автор saiskyi

Ответов: 3
Просмотров: 5147
Последний ответ 19.02.2020, 19:29:01
от Bozhkov2
Ширина модулей в зависимости от количества опубликованных позиций (Решение)

Автор Fedor Vlasenko

Ответов: 17
Просмотров: 9179
Последний ответ 07.01.2020, 14:46:05
от Progressive
Как настроить шаблон?

Автор tromba

Ответов: 2
Просмотров: 2871
Последний ответ 15.08.2018, 15:29:56
от tromba
Как загрузить шаблон, и сделать его только для одной страницы?

Автор Ирина Поехали

Ответов: 5
Просмотров: 1665
Последний ответ 05.06.2017, 21:15:42
от effrit
Как вставить рекламу в мобильный шаблон ja_edenite?

Автор gorbi_U

Ответов: 3
Просмотров: 1441
Последний ответ 02.06.2017, 08:43:26
от gorbi_U