Новости Joomla

Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0

Метод registerListeners() в CMSPlugin в плагинах  планируется удалить в Joomla 7.0

👩‍💻 Метод registerListeners() в CMSPlugin в плагинах планируется удалить в Joomla 7.0.Этот метод регистрирует устаревшие слушатели событий в диспетчере, имитируя работу плагинов Joomla! 3.x и ниже для Joomla 4+. По умолчанию этот метод ищет все общедоступные методы, название которых начинается с on. Он регистрирует лямбда-функции (замыкания), которые пытаются преобразовать аргументы отправленного события в аргументы вызова метода и вызвать ваш метод on<Что-то>. Результат передаётся обратно событию в его аргумент result.Теперь этот слой совместимости с устаревшей Joomla 3 помечен к удалению в Joomla 7.0, которая должна выйти осенью 2027 года. Это означает, что те уникальные расширения от Joomla 2.5 / Joomla 3, которые ещё работали на Joomla 4-6 скорее всего окончательно перестанут работать на Joomla 7. Предполагается, что активные разработчики планомерно и постепенно избавляются от технического долга и обновляют свои расширения. @joomlafeed#joomla #разработка #php

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

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Добрый вечер!
мож кто сможет помочь
Есть 2х язычный сайт на котором работает FLEXIcontent
и все бы замечательно с поддержкой жум фиша, НО

этот компонент позволяет переключатся между версиями статей только через меню
не позволяя переводить статьи находясь в них

Хотелось бы сделать следующее чтобы если находишся в статье,
линки на флагах менялись (подменялись) ссылками из внешней таблицы в которой прописаны соответствия
статьи на русском и английском

может кто сталкивался с такой проблемой, прошу помощи
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
не совсем понятно написано.
смущает слово "переводить".
ты имеешь в виду, что, зайдя с фронтэнда в статью хотелось бы, чтобы на флаге висела сылка на ту же статью на другом языке?
если да, то можно сделать, я думаю. но придётся забивать таблицу соответствий. и если статей будет много, то есть вероятность проседания производительности подобного решения.
допустим, для контента такое сделать не сложно, но рыба же не только его может переводить. есть ещё всякие там контакты и прочие, у которых другие параметры компонентов.
и тогда можт получиться не совсем красиво. на статьях будет работать, а в других местах пулять на главную.
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
что, зайдя с фронтэнда в статью хотелось бы, чтобы на флаге висела ссылка на ту же статью на другом языке - именно !
про таблицу соответствий это понятно, и она будет от нее никуда не деться. я только начал изучать и разбирать Joomla, а потому не очень могу себе представить как правильно реализовать это что бы не было проседания производительности.

буду очень признателен за любую помощь в реализации данного решения
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
ну, если топором порешать, то можно просто сделать модуль, который будет брать id материала, и из таблицы соотвествий вытягивать ссылки и вешать их на флажки.
если есть представления о программировании, то вот тема,которая может пригодиться
http://joomlaforum.ru/index.php/topic,67278.new.html
можно даже модуль не писать, а поэкспериментировать в рамках шаблона flexi, для начала, а таблицу сооствествий в виде массива сделать прямо в коде шаблона.
если на неделе время будет, поставлю себе рыбу и поэкспериментирую, может чего полезное и выйдет )
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
СПАСИБО буду очень признателен
и спасибо за ссылку )

жду эксперимента )
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
да кстати по поводу использования самого шаблона для этого я уже и сам думал, тока почему т решил что иак не получится )))
я думал так типо создать поле текст куда забить id itemа перевода, а во время загрузки если открывается именно item брать из этого поля номер и генерить ссылки
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
аааааа
моя плакать.
открываю секрет тысячелетия:

оказывается, переключатель языков в модуле создаётся ВСЕГДА. просто, исходя из какой-то логики, в некторых случаях скрывается простым присвоением главному обёрточному div'у свойства
visibility: hidden;

решение: в нужном нам шаблоне отображения (\modules\mod_jflanguageselection\tmpl\)
правим строки (пример для шаблона rawimages.php (языки флажками отображаются))

$outString = '<div id="jflanguageselection" style="visibility: visible !important;"><div class="rawimages">';

можно сделать более изящно, "ломая" логику показа только для компонента flexi, c помощью условия.

 $outString = тут то что и было в шаблоне;

$option = JRequest::getVar('option', null);
if ($option=="com_flexicontent") $outString = '<div id="jflanguageselection" style="visibility: visible !important;"><div class="rawimages">'; // переназначили вывод. для каждого шаблона код будет разный!

*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
вот ещё полезная ссылка
http://www.flexicontent.org/forum/index.php?f=23&t=710&start=0&hilit=autoselectlang&rb_v=viewtopic
там какой-то плагин для корректной работы описан (уж не в курсе, актуальный или нет, но... + решение текущей проблемы другим способом :) )
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Спасибо! за помощь но пока вопрос остается открытым !

Цитировать
оказывается, переключатель языков в модуле создаётся ВСЕГДА. просто, исходя из какой-то логики, в некторых случаях скрывается простым присвоением главному обёрточному div'у свойства
visibility: hidden;

а ты не знал ? да он их просто прячет при помощи CSS

по поводу ссылки на плагин, сделал поставил но пока все тоже и также, вообщем буду плагин копать мож из него ченить да выйдет

а к тебе вопросик, может знаешь, составить URL для подстановки в флаг я может и криво но сделал, но вот как получить массив данных (а лучше полей) которые выводятся в <jdoc:include type="component" /> и формируются при помощи FLEXIcontent (Item)
не могу найти, а так бы сделал поле для указания перевода и потом из массива взял да и генернул, а в JFactory::getDocument таких данных не вижу, или если таких данных нет мож как нить запросом сиквела вытащить нужное поле с значением, как думаешь, или походу придется все таки мутить таблицу отдельную и делать компонент для вноса соответствий и потом или php или плагин который будет менять значение, и последнее мож чет не понимаю с этим кодом плагина, он пулачается пытается поменять ItemID чтоли (еще не хватает познаний (((((((((((((((((( но я учусь ) )
Код
$mainframe->registerEvent('onAfterRoute', 'botAutoSelectLang');

function botAutoSelectLang( $args ) {
   if (JRequest::getVar('option') == 'com_flexicontent') {
      if ($aid = JRequest::getInt('id', 0)) {
         global $mainframe;
         $lang = $mainframe->getUserState('application.lang');

         $db =& JFactory::getDBO();
         $query = 'SELECT j.id, ie.language'
         . ' FROM #__content AS i'
         . ' INNER JOIN #__content AS j ON i.alias = j.alias AND i.catid = j.catid AND i.state = 1'
         . ' LEFT JOIN #__flexicontent_items_ext AS ie ON ie.item_id = j.id'
         . ' WHERE i.id = ' .(int) $aid
         ;
         $db->setQuery($query);
         $items = $db->loadObjectList();
   
         foreach($items as $item) {
            if(substr($item->language, 0, 2) == substr($lang, 0, 2)) {
               JRequest::setVar('id', $item->id);
               break;
            }
         }
      }
   }
}

*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
да и с меня тебе + за помощь реальную )
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
а зачем это всё?
я так понял, плагин+открытие флагов решают проблему с генерацией ссылок? или в чм там косяк?
просто вопрос там изначально наш земляк задавал, его в ту тему перенаправили и он написал что всё ок
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
ссылки на Денвере сделаны

косяк вот в чем
флаги скрывают по тому что на них генерируются одинаковые ссылки, отличаются они только концовкой RU или EN
http://cck2.ru/index.php?option=com_flexicontent&view=items&cid=2:vse-proekty&id=4:12&Itemid=28&lang=nl
http://cck2.ru/index.php?option=com_flexicontent&view=items&cid=2:vse-proekty&id=4:12&Itemid=28&lang=ru
вот, но при этом id остается тот-же самый, а Flexi при создании перевода делает новый item (документ) у которого id=5
http://cck2.ru/index.php?option=com_flexicontent&view=items&cid=2:vse-proekty&id=5:21&Itemid=28&lang=nl

вот у нужно чтобы нормально работал перевод с флажков в item изменить немного ссылку
надеюсь толково объяснил )
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
дополнение:
если просто отобразить флаги и щелкать по ним, при этом поля flexi, меню и все остальное переводится напрямую в JoomFish и получаем картину маслом, весь сайт на английском например в том числе поля flexi, а значения полей по русски поскольку берутся они из документа с неправильным ID
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
да еще
отображение флагов при просмотре статьи можно включать и отключать в компоненте Flexi -> Global Configuration -> Disable language selector
так вот вопрос про плагин что он все таки делает по коду, я не совсем понимаю (знаний не хватает), ссылки на флагах до него и после не поменялись !
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
SQL код нужен для того чтобы миновать этап установки плагина через админку
SEF не пробовал, ща затестим
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
SEF попробовал что с ним что без него одинаково
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
SQL код нужен для того чтобы миновать этап установки плагина через админку
так там вроде его и нету в готовом виде.
ты где-то взял зип?
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
в папке темп делаешь папку и в нее кладешь 2 файла, в пункте установить удалить указываешь ее и Joomla сама устанавливает плагин, то есть прописывает этот самый sql запрос сама )
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
по ходу зря ты на свой способ положился :)
если я правильно понимаю, в xml
<install version="1.5.0" type="plugin" group="content">
а в запросе
'System - Auto language Selection', 'autoselectlang', 'system',
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
+ 1 не доглядел ща гляну
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
ну не хочет он работать, НЕ хочет этот плагин, хотя протестил я его немного если руками поменять эту строку
JRequest::setVar('id', $item->id); на
JRequest::setVar('id', 5);
то получаем страницу на русском с данными из английской
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
подскажи ты не знаешь какой функцией взять массив данных которые в основной фрейм выводятся
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
MrVirus, я не программер :)

по поводу вопроса - имхо, ты где-то косячишь.
специально всё сделал по инструкции.
по шагам:
а) ставим джумфиш
б) включаем её поддержку во флекси
в) ставим плагин отсюда                   http://www.flexicontent.org/forum/index.php?f=23&t=710&start=0&hilit=autoselectlang&rb_v=viewtopic
г) создаём и публикуем материал на русском во флекси
д) создаём и публикуем в том же разделе/категории материал на другом языке (в управлении материалами во flexi выбираем нужный нам флаг), с тем же алиасом, что и оригинал

собственно, всё


"Also, for anyone else having problems with getting the content item to show up, be sure the default display setting in the JoomFish parameters is set to "The original content." Pulled my hair out for three days trying to figure that one out."
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
Цитировать
я не программер
жаль)
и после установки по шагам у тебя ссылки на флагах с разными цифрами ?
*

MrVirus

  • Осваиваюсь на форуме
  • 22
  • 0 / 0
оч интересно, перелопатил тут койчего вроде чет стало получатся, чуть позже отпишу
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
да чего ты прицепился к этим цифрам?
всё одинаково, кроме en/ru
остальное съедается роутером и прячется нафиг.
а плагин как раз и формирует правильные ассоциации - без него подмены на уровне материала не происходит.
*

effrit

  • Moderator
  • 10132
  • 1118 / 13
  • effrit.com
злобные администраторы опять заполнили собой весь аплоад :)
выложил на буржуинском форуме в виде zip-инсталлятора плагин, а то при ручном создании файлов могут грабли возникнуть - если лишние пробелы попадут в файл, то будет трабла с логином потом, так что проще скачать файл и установить без танцев с бубном
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

FLEXIcontent не отрабатывает 404 ошибку?

Автор romagromov

Ответов: 6
Просмотров: 4640
Последний ответ 20.02.2017, 18:22:33
от voland
Автоматическая генерация мета-тегов Joomla 3 + FLEXIcontent

Автор VladimirVoice

Ответов: 2
Просмотров: 5455
Последний ответ 22.09.2016, 23:00:01
от serjik
Кнопки ПЕЧАТЬ в FLEXIcontent

Автор moltchan

Ответов: 2
Просмотров: 4615
Последний ответ 21.09.2016, 15:18:25
от moltchan
Модуль вывода материалов от Raketa

Автор raketa

Ответов: 85
Просмотров: 34854
Последний ответ 14.12.2015, 05:56:57
от sysczs
KunenaDiscuss + FLEXIcontent

Автор VladimirVoice

Ответов: 0
Просмотров: 4614
Последний ответ 29.11.2015, 08:45:48
от VladimirVoice