Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

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

hensler

  • Захожу иногда
  • 60
  • 3 / 0
Второй раз сталкиваюсь с проблемой. После включения ЧПУ индексация замедляется и в выдаче поисковиков сайт проваливается за пределы видимости.

Первый раз (Joomla 1.0.08) просто отключил ЧПУ, т.к. проект был коммерческий и ждать когда сайт вернется в выдаче на свои места не мог. После отключения все восстановилось за пару недель.

Второй раз при переходе с Nuka на Joomla и переносе сайта с поддомена на домен 2 недели не включал ЧПУ и с индекацией и с выдачей потихоньку шло к старым результатам. Решил вклюить ЧПУ и честно дождаться полной переиндексации. Фиг. За 2 м-ца проиндексировано чуть больше 1000 страниц. Да и эта цифра то дойдет до 1500, то опять спустится. Если учесть 900 фотографий в галерее + форум + 10 новостей ежедневно + 400 старых статей + новые и т.д. - мало. Но даже проиндексированное, в выдаче ушло за горизонт.

Ни хрена не понимаю. Сайт yarcenter.ru
*

Batman

  • Новичок
  • 4
  • 0 / 0
при включении ЧПУ, получается что у вас одна и та же страница может быть доступна по двум адресам, н-р,

/joomla/index.php?option=com_content&task=blogsection&id=8&Itemid=43

и

/joomla/content/blogsection/8/43

это две абсолютно одинаковые страницы (не знаю правильно ли составил вид второй УРЛ, но главное - идея).

Как мне говорили, для оптимизации необходимо чтобы страница была уникальной в пределах данного сайта.
Возможно это и влечет такие странности?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
при включении ЧПУ, получается что у вас одна и та же страница может быть доступна по двум адресам
на самом деле, иногда получается что более чем две... это происходит потому, что поисковики, иногда, найдя ссылку типа /222/1/, проверяют сразу же ссылку /222/2/, а так как часто, в SEF-ссылках последним параметром идет именно Itemid (параметр фактически влияющий только на pathway), то получается, что поисковик запоминает довольно много ссылок на одну и ту же статью, но с разными Itemid. Обнаруживается это, как правило, случайно: когда пользователь открывает материал, а в pathway указана совсем другая категория (потому как Itemid «левый») или же при анализе проиндексированных страниц. Однако, несмотря на наличие таких дубликатов, я не раз видел весьма неплохо проиндексированные сайты на Joomla, использующие стандартный SEF.

А какие вы видите пути решения данной проблемы? Если честно мне не нравится такая фича в джумле. Несколько ссылок на один материал это бардак.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
А какие вы видите пути решения данной проблемы? Если честно мне не нравится такая фича в джумле. Несколько ссылок на один материал это бардак.
Например, отказаться от SEF или воспользоваться решениями сторонних разработчиков (например OpenSEF, хотя это и даст нагрузку на БД).

Можно попробовать написать свое решение для генерации SEF ссылок, тоже не сложно (я в свое время делал такое для www.n-admin.com).

Теоретически, можно написать системный мамбот, который будет отслеживать обращения к материалам (т.е. когда option=com_content и task=view) и проверять соотвествие Itemid, переданного параметром, реальному Itemid материала. И в случае неверного значения — делать редирект с 301 кодом ошибки. Если при этом граммотно задействовать механизм кэширования, то по идее нагрузка на БД будет небольшая.

Спасибо. Оба решения вроде понятны. Я пользуюсь OpenSEF но внутрь не залезал. Он дает возможность обрабатывать такого рода запросы и выдвать соответствующий хедер (например 404)?

На счет бота идея тоже интересная наверное буду ее реализовывать.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
На счет бота идея тоже интересная наверное буду ее реализовывать.
я думаю такое расширение наверняка будет полезно всему сообществу, поэтому если нужна будет какая-либо помощь — я помогу

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

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Вы бы немогли дать ссылок на любые стистемные маботы чтоб можно было по сорцам разобрася что к чему.
например мой мамбот OptimizeTables. Разница от обычных мамботов небольшая: используются события OnStart или OnAfterStart (можешь посмотреть где они вызываются в index.php), и им, в отличие от мамботов группы content, не передаются никакие параметры.

Судя по фрагменту кода из index.php, для нашей задачи логичнее использовать событие OnAfterStart:
Код
// trigger the onAfterStart events
$_MAMBOTS->trigger( 'onAfterStart' );

// checking if we can find the Itemid thru the content
if ( $option == 'com_content' && $Itemid === 0 ) {
$id = intval( mosGetParam( $_REQUEST, 'id', 0 ) );
$Itemid = $mainframe->getItemid( $id );
}
с таким расчетом, чтобы второй условный блок уже не отрабатывался (т.е. самому вычислять Itemid для материала и заносить его в глобальную переменную

Спасибо! Буду изучаать.

Кстати а как вы считаете какие дулжен действовать мамбот при несовпадении заданного Itemid и реального Itemid? Мне кажется будет достатчное
Код
header("HTTP/1.0 404 Not Found");
или лучше всетаки перенаправлять куданибудь?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
или лучше всетаки перенаправлять куданибудь?
я думаю следует сначала пытаться вычислить правильный, если вычислить получилось, то делать именно редирект на правильную копию с кодом 301 (Moved Permanently)

Написал по быстрому мамбот. Все вроде работает как надо.
Но вот меня смущает следующее:
1) нахрена в методае getItemid в том случие если после поиска Itemid в бд ничего не найдена он просто берет и возвращает Itemid из запроса.
2) тот же getItemid упорно нехочет находит Itemid если id == 0 . В сорцах дальше копатся нестал просто в сон клонит но всетаки странно.

А так все работает пользуйтесь кому надо (;

[вложение удалено Администратором]
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Написал по быстрому мамбот. Все вроде работает как надо.
есть несколько небольших замечаний и пожеланий:

1. помимо проверки option, надо проверять еще и task, бо иначе это будет отрабатываться не только для режима просмотра материала
2. строчка:
	
	
$request_itemid=mosGetParam($_REQUEST'Itemid'false);



весьма непонятна, зачем в качестве значения по умолчанию давать булевскую переменную, когда лучше дать 0 или null. Да и лучше в этом случае обернуть результат mosGetParam в intval - мы же точно знаем, что там должно быть число:
	
	
$request_itemid intvalmosGetParam$_REQUEST'Itemid') );



3. вместо строчки:

	
	
$url=$mosConfig_live_site.'/index.php?option='.$option.'&task='.$task.'&id='.$id.'&Itemid='.$real_itemid;


лучше написать так:

	
	
$url=sefRelToAbs('index.php?option='.$option.'&task='.$task.'&id='.$id.'&Itemid='.$real_itemid);


4. И еще, функция getItemid принимает дополнительный набор параметров, для снижения количества запросов к БД, поэтому наверное имеет смысл, строчку:

	
	
$real_itemid $mainframe->getItemid$id );



заменить на вот такую конструкцию:

	
	
$bs 
	
$mainframe->getBlogSectionCount();
	
	
$bc 
	
$mainframe->getBlogCategoryCount();
	
	
$gbs 
	
$mainframe->getGlobalBlogSectionCount();
	
	
$real_itemid $mainframe->getItemid$id00$bs$bc$gbs );



С замечаниями и пожелаиями полностью согласен, подправил (:
Внес изменения, тепеь все работает как надо. Спасибо за помощь.

[вложение удалено Администратором]
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
С замечаниями и пожелаиями полностью согласен, подправил (:
Внес изменения, тепеь все работает как надо. Спасибо за помощь.
все равно есть несколько недочетов:

1. после строчки

$id=intval(mosGetParam($_REQUEST'id'0));

переменная $id никогда не будет равна false, поэтому сравнение
if ( $id===false ) {

надо заменить на
if ( $id===) {


2. код:
	
	
	
	
return 
true;
	
	
	
	
exit();


приведет к завершению работы ВСЕГО скрипта, а не только одной функции, так что достаточно просто return true;

Да действительно... false убрал а проверку его забыл подпраить... на счет exit это да я поле отладки забыл убрать.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Да действительно... false убрал а проверку его забыл подпраить... на счет exit это да я поле отладки забыл убрать.
воот... теперь в предыдущих мессагах давай наверно прибьем старые версии, выложи новую, а я утром повешу анонс на joomlaportal.ru

Кстати вы еще упоминали о првоерке task... на предмет чего вы именно хотели делать проверку? $task=='view' ? или что иное?

И еще
Код
if ( $id===0 ) {
Такаое ветвление некоректно т.к id может быть равным нулю... недо просто првоерять пусто ли $id или нет. Вы согласны?
Тоесть
сделать
Код
$id=mosGetParam($_REQUEST, 'id', null);
Код
if ( $id===null ) {
« Последнее редактирование: 24.07.2006, 01:16:44 от pav »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Такаое ветвление некоректно т.к id может быть равным нулю...
пустым быть не может, после intval мы точно имеем integer... а нулевого значения у идентификатора статьи так же быть не может. Поэтому если там 0, это неверная ссылка, и значит надо или 404, или редирект на главную с кодом 301 (что тоже кстати допустимо)

Кстати вы еще упоминали о првоерке task... на предмет чего вы именно хотели делать проверку? $task=='view' ? или что иное?
да, в то же условие, где мы проверяем option... чтобы валидация Itemid производилась только для режима просмотра конкретного материала (ну нет смысла этого делать в блогах или таблицах категорий)

Цитировать
пустым быть не может, после intval мы точно имеем integer... а нулевого значения у идентификатора статьи так же быть не может. Поэтому если там 0, это неверная ссылка, и значит надо или 404, или редирект на главную с кодом 301 (что тоже кстати допустимо)
Почему? У меня вот есть ссылка рабочая index.php?option=com_content&task=blogsection&id=0&Itemid=9 здесь как вы видете id равен нулю.
Цитировать
ну нет смысла этого делать в блогах или таблицах категорий
Почему нет? Обоснуйте...
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Почему нет? Обоснуйте...
потому что эти страницы часто обновляются, и их содержимое не так важно, как содержимое самих материалов...

Так но фель создания мамбота в том чтобы для любых материалов на сайте была одна единая ссылка. Так? Если так то я думаю что все что связанно с com_content должно обрабатыватся мамботом.
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Так но фель создания мамбота в том чтобы для любых материалов на сайте была одна единая ссылка. Так? Если так то я думаю что все что связанно с com_content должно обрабатыватся мамботом.
но com_content обрабатывает не только материалы, но и категории и разделы, а мне кажется это уже второстепенная информация. на самом деле я не особо настаиваю на такой проверке, но мне кажется это было бы уместно с точки зрения оптимизации и снижения нагрузки на БД

Можно сделать чтоб пользователь сам задавал что конкретно из com_content подвергалось проверке в настройки мамбота.
« Последнее редактирование: 24.07.2006, 02:34:11 от pav »
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Можно сделать чтоб это опционально настраивалось из настройки мамбота.
учитывая тот факт, что в мамбот параметры извне не передаются, получение параметров мамбота потребует дополнительного запроса к БД, а это мне кажется излишне... мы выиграем не много... ладно, давай пока не будем ставить такую проверку, посмотрим что пользователи скажут...
*

hensler

  • Захожу иногда
  • 60
  • 3 / 0
...
и

/joomla/content/blogsection/8/43
...
С дублированием понятно, но может ли и еще один момент влиять - у меня все ссылки имеют слэш на конце.
/joomla/content/blogsection/8/43/

Т.е. если ссылка вида /joomla/index.php?option=com_content&task=blogsection&id=8&Itemid=43 ведет с точки зрения паука прямо к документу, то с ЧПУ в конце паука посылают поискать за слэшем пустоту. Во всяком случае судя по рекомендациям Рамблера (думаю и у Яндекса так же)
Цитировать
Следует также иметь в виду, что с точки зрения HTML записи типа:
<a href="directory" ...> и
<a href="directory/" ...> ("слэш" в конце href)
являются разными ссылками. Обычно при запросе по первой ссылке робот получит редирект на вторую, а значит извлечет сам документ при обращении к Вашему серверу только на следующем проходе. Тем самым Вы замедляете индексацию Вашего сайта.
http://www.rambler.ru/doc/recommendations.shtml
Или я уже на воду дую?

Жду окончательный вариант бота.
P.S. Сколько запросов бот добавит?
« Последнее редактирование: 24.07.2006, 02:49:45 от hensler »

Все на этом и порешим. Вот окончательный вариант... вроде (;

[вложение удалено Администратором]
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Или я уже на воду дую?
мне кажется да, потому как судя по рекомендациям, слеш в конце нужен... что и получаем мы в результате использования стандартного SEF

P.S. Сколько запросов бот добавит?
от 1 до 7 запросов, в зависимости от типа материала, и заполненности меню ссылками на категории и разделы... в следующую версию мамбота можно добавить поддержку кэширования, чтобы снизить нагрузку на БД
*

hensler

  • Захожу иногда
  • 60
  • 3 / 0
Поставил. Добавилось 4 запроса.
На данный момент проиндексировано  Яндексом: 2 092 - стандартно, 1068 - с учетом зеркал
Посмотрим, как изменится. ИМХО если все правильно, первая цифра должна или остановиться или расти вровень со второй (до момента обновления БД Яндекса), а потом всё равно сравняться. На другом сайте (без ЧПУ) они равны.
« Последнее редактирование: 24.07.2006, 04:03:21 от hensler »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться