Новости Joomla

Joomla REST API без прав суперадминистратора. RBAC в Joomla

Joomla REST API без прав суперадминистратора. RBAC в Joomla

👩‍💻 Joomla REST API без прав суперадминистратора. RBAC в Joomla.На канале известного французского разработчика и специалиста по Joomla REST API Alexandre ELISÉ вышло новое видео.RBAC (Role-Based Access Control) - это управление доступом на основе ролей, метод управления доступом к ресурсам, основанный на назначении ролей пользователям. Вместо назначения прав каждому пользователю точечно права доступа группируются по ролям, а пользователи получают доступ к ресурсам уже в зависимости от своей роли. В контексте Joomla и REST API он может даже мешать работе: без авторизованного пользователя вы не можете даже показать контент. В видео показано как решить данную проблему. Создаётся "технический пользователь", которому разрешается просматривать контент, но не разрешено создавать, редактировать, удалять и т.д. И все запросы к REST API идут с использованием его токена. [fr-FR] Services Web API Joomla SANS être Super Admin RBAC natif avec Joomla@joomlafeed #joomla #разработка #rest

InterLinked - плагин автоматической внутренней перелинковки для Joomla

InterLinked - плагин автоматической внутренней перелинковки для Joomla

👩‍💻 InterLinked - плагин автоматической внутренней перелинковки для Joomla.Несвязанные статьи - это молчаливый убийца привлекательности вашего сайта на Joomla, который заставляет читателей сворачивать работу и подрывает эффективность вашего SEO. Content - InterLinked - это бесплатный, проверенный в боях плагин, который кладет конец этой бессмыслице, автоматически генерируя ссылки на основе ключевых слов между статьями на вашем сайте Joomla 5. Он создает сеть связей, используя ключевые слова статей (metakey) и ассоциации категорий, с настраиваемыми всплывающими подсказками, целевыми объектами ссылок и классами CSS, сохраняя при этом существующие ссылки и повышая производительность за счет кэширования. Кроме того, ссылки со временем меняются по мере того, как в новых статьях используются ключевые слова, что делает ваш контент свежим и актуальным.Возможности.- автоматическая перелинковка на основе значения meta-keywords материалов- встроенная поддержка материалов Joomla- пользовательские ассоциации категорий для создания ссылок (например "Блог" к "Учбеникам")- показ всплывающих подсказок к автоматическим ссылкам (опционально)- настраиваемый атрибут target для ссылок.- указание CSS класса для стилизации ссылок- кэширование совпадений ключевых слов и их ассоциаций- учёт существующих тегов <a> во избежание дублирующих ссылок- автоматическое добавление новых ссылок при появлении новых ассоциаций- веб-доступность: ARIA для ссылок с target="_blank".Плагин бесплатный. Заявлена поддержка Joomla 4 и Joomla 5.Joomla Extensions DirectoryСтраница расширенияСкачать@joomlafeed#joomla #расширения #seo

joomLab Gallery - плагин галереи изображений для Joomla

👩‍💻 joomLab Gallery - плагин галереи изображений для Joomla.Плагин joomLab Gallery позволит Вам добавлять в любой материал неограниченное количество галерей, а главное удобно управлять файлами и эффектами в каждой галерее.Плагин использует популярны скрипты Swiper.js и FancyBox. Первый для крутой организации и эффектов галерей, а второй для красивого и функционального показа оригинальных изображений на Вашем сайте.На данный момент плагин имеет 10 макетов вывода - это 10 различных эффектов галерей и Вы можете совмещать все 10 в 1 материале.Плагин позволяет гибко настраивать индивидуально каждую галерею в материале. Вы можете выбрать макет, эффекты и даже можете управлять функциями всплывающего окна изображения.Недостатки.Такой вид реализации не предусматривает выбор изображения на сервере. Т.е. Вы не можете выбрать уже добавленное фото, только загружать заново. Плагин не предоставляет возможности доступа к медиа-менеджеру.Плагин бесплатный. Разработчик - участник нашего сообщества Александр Новиков (@pro-portal).Страница расширения@joomlafeed#joomla #расширения

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

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Пытаюсь разобраться со стандартным роутером адсменеджера, сделать урлы вида
site.r/город/категория/id46546
Но почему то когда ставлю в роутере в русские буквы(site.ru/Москва/id46546), ссылки меняются на просто корень сайта,
а если использую английские(site.ru/Moskow/id46546), то работает нормально.

Подскажите как сделать чтобы русские буквы в урлах формировались нормально.
До этого я роутеры ещё не переделывал, поэтому плохо понимаю как они работают.
Пока просто тестирую
Код: php
			switch($v)
{
case "details":
[b] $segments[] = $query["регион"]."Москва";[/b]
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = $query["id"]."-".getAdsmanagerRouteContent($query["id"]);
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Кирилица в урл - как изменить router ?
« Ответ #1 : 15.02.2012, 15:43:07 »
дык UTF-8 батенька, а не ANSI (для начала)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #2 : 16.02.2012, 20:14:02 »
дык UTF-8 батенька, а не ANSI (для начала)

Спасибо, сохранил роутер в утф 8 - помогло. Теперь кирилица в урлах отображается нормально.
Но теперь почему то в опере, на самой странице, кирилица стала отображаться аброкадаброй - "Рё Московская РѕР±Р». Город".

Ещё пара вопросов по роутеру.
Хочу чтобы в урлах также были названия категорий на русском, для этого в функции
getAdsmanagerRouteCategory, я закомментировал строку $result= JFilterOutput::stringURLSafe($result);
Не опасно ли это ? в доках Joomla написанно что эта функция заменяет вырезает из строки символы утф 8.

Ещё в функции AdsmanagerBuildRoute
//$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]); -- закоменнтировал строку
$segments[] = getAdsmanagerRouteCategory($query["catid"]); // и поставил так

Чтобы в урлах выходило site.ru/Категория - вместо site.ru/3-Категория.

site.ru/Категория - стало показываться но переходы по категориям перестали работать, т.е. нажимаю на ссылку нужной категории, в урле правильная информация(site.ru/Категория), страница перегружается, но открывается та же самая страница на которой я и был.

Пока мне непонятна логика работы роутеров, может надо в функции AdsmanagerParseRoute тоже что то изменить ?
« Последнее редактирование: 16.02.2012, 20:17:24 от magistr_yoda »
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #3 : 19.02.2012, 05:47:41 »
Подскажите как сделать чтобы в урле были названия категорий(на русском) а не их id ?
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #4 : 22.02.2012, 08:59:40 »
Пришлось написать самому Томасу Папину - создателю адсменеджера, и он ответил

Цитировать
If you want to remove the catid, you will have to to change the router function to be able to get the id from the adsmanagercatname,.
Currently there is no SQL needed because the catid is in the request, but in your case, the catid is not present so a SQL query should be created to get it from the category name

Thomas


2012/2/20 magistr_yoda

Adsmanager cat name(only) in url - now ? - j2.5 ad2.6.5

Trying to set Joomla + AdsManager urls to this kind site.com/adsmanagercatname/
in adsmanager/router.php


 switch($v)
 {
 case "details":
// erase this lint $segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
 $segments[] = getAdsmanagerRouteCategory($query["catid"]); // add this line
....

but then urls looks like needed - site.com/adsmanagercatname/ links not worked - same page reloaded
 but if urls like this site.com/3-adsmanagercatname/ - then worked, but 3-(catid and -) not needed.

It my first work with routers - i can understand where this router get "3-" and how make this work without this.

How to make correct router to AdsManager ? Please help

Ладно посмотрим, как изменить, только пока не понимаю откуда роутер берёт эти параметры. $query["catid"]
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Re: Кирилица в урл - как изменить router ?
« Ответ #5 : 22.02.2012, 11:58:50 »
Цитировать
откуда роутер берёт эти параметры. $query["catid"]
выдерает из url! отключите SEF и посмотрите как выглядит ссылка и тогда станет понятно :)
как переделать Томас написал, думаю не сложно разобраться... Если не разберётесь - напишите, вместе попробуем!
« Последнее редактирование: 22.02.2012, 12:48:08 от Alex89 »
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #6 : 22.02.2012, 22:06:16 »
выдерает из url! отключите SEF и посмотрите как выглядит ссылка и тогда станет понятно :)
как переделать Томас написал, думаю не сложно разобраться... Если не разберётесь - напишите, вместе попробуем!

Да, так и есть, передаётся из урла вызовом функции
JRoute::_( "index.php?option=com_adsmanager&view=details&id=".$content->id."&catid=".$content->catid."&Itemid=".$this->Itemid);

Только теперь непонял надо будет везде где эти фунции(JRoute) вызываются ставить вместо catid, catname или можно как то роутер переделать чтобы он генерировал урлы для ссылок, сам вытаскивая из sql название категорий.

Блин пока не понимаю как этот роутер работает...
если урл будут(с sef) не такого вида catid=3, а вида site.ru/categoryname - т.е. без пары параметр=значение(catid=3) - то как он будет определять к какому параметру относится categoryname - т.е. что это именно параметр категории, а не какой нибудь другой параметр.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Кирилица в урл - как изменить router ?
« Ответ #7 : 22.02.2012, 22:25:54 »
ты должен обеспечить работу роутера таким образом, что бы получив из оригинальной ссылки А, SEF-ссылку B, роутер так же был способен адекватно сделать обратное преобразование из SEF-ссылки B в оригинальную ссылку A.
алгоритм преобразования A-->B и B-->A определяются исключительно разработчиком роутера
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Re: Кирилица в урл - как изменить router ?
« Ответ #8 : 23.02.2012, 00:47:31 »
Попробую "разжевать" всё как для школьника :)
К примеру, имеем ссылку вида index.php?option=com_adsmanager&view=details&id=5&catid=3&Itemid=120. После включения SEF ссылка разбивается на части (параметр=значение) и записывается в ассоциативный массив $query, где в качестве ключа выступает имя параметра, а в качестве значения - значение параметра соответственно. Т.о. после передачи ссылки в JRoute имеем массив:
$query["option"]=>"com_adsmanager"
$query["view"]=>"details"
$query["id"]=>"5"
$query["catid"]=>"3"
$query["Itemid"]=>"120"

Как раз с таким массивом Joomla предлагает работать разработчику роутера компонента! Для работы с SEF разработчику предлагаются 2 функции:
1. для построения (билдинга) ЧПУ-ссылки, имя функции имеет вид ComponentNameBuildRoute, где ComponentName - название компонента, в качестве аргумента для функции выступает вышеописанный массив $query. Возвращает движку массив $segments для построения новой "красивой" ссылки! Если пункт меню указывает на компонент и настроен aliac, то из новой ссылки автоматически уберутся параметры option и Itemid, а если включен mod_rewrite, то уберётся ещё и index.php
2. для разбора (парсинга) ЧПУ-ссылки, имя функции имеет вид ComponentNameParseRoute, в качестве аргумента для функции выступает полученный ранее массив $segments!
Возвращает движку массив $vars для возврата ссылки к исходному виду.

Но это всё только теория, давайте рассмотрим на конкретном примере с adsmanager'ом и категориями:
Открываем файл роутера и смотрим в функцию AdsmanagerBuildRoute(&$query) и видим строку преобразования категории
Код
$segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
Функция getAdsmanagerRouteCategory посылает запрос в БД на выборку имени категории по её id и возвращает это имя в "безопасном" виде (строка $result= JFilterOutput::stringURLSafe($result);), но нам не нужно транслитить имя категории, поэтому нужно либо переписать функцию stringURLSafe либо написать свою и заменить на неё вызов из класса JFilterOutput. Теперь удалим из ссылки id категории, т.е. приведём к виду
Код
$segments[] = getAdsmanagerRouteCategory($query["catid"]);
. Т.о. получаем красивую ссылку, но теперь функция AdsmanagerParseRoute не знает id категории и везде "перебрасывает" на "Все объявления", а чтобы получить id нужно написать функцию противоположную функции getAdsmanagerRouteCategory, т.е. по названию категории получить её id запросом к БД. Затем в функции AdsmanagerParseRoute заменить все
Код
$catid = explode( ':', $segments[0] );
$vars['catid'] = (int) $catid[0];
на
Код
$vars['catid'] = (int) Ваша_функция($segments[0]);

Таким же макаром делаем и для других параметров ссылки (если надо)! Надеюсь, что понятно изложил, аж замучился печатать :)
   
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #9 : 26.02.2012, 15:41:49 »
Так, кажется я допёр  ^-^
В функции AdsmanagerParseRoute - содержиться массив внутренних переменных, которые view компонента видят,
и не обязательно чтобы эти переменные передавались в урл. Т.е. урл в AdsmanagerBuildRoute можно делать каким
угодно, главоное чтобы AdsmanagerParseRoute - задать эти внутренние переменные.

До этого думал что придётся менять все view.html.php - чтобы они вытаскивали например id категории по её имени в урл,
думал а откуда Joomla узнает а какой параметр к чему(если урл без пара ключ=значение), но оказывается можно напихать каких угодно переменных
в AdsmanagerParseRoute и они будут видны компоненту.
$vars["view"] = "result";
$vars["view"] = "edit";
итд

В роутере сделал так
Код: php
			case "list":
if (isset($query["catid"])&&($query["catid"] != 0)) {
// $segments[] = $query["catid"]."-".getAdsmanagerRouteCategory($query["catid"]);
$segments[] = getAdsmanagerRouteCategory($query["catid"]);
}

Спасибо за помощь Alex89, userxp

Ещё пара вопросов,
1. В оригинале роутера, id категории вытаскивается так
      $catid = explode( ':', $segments[0] );
          $vars['catid'] = (int) $catid[0];
Но так как сейчас в урл не передаётся циферка категории, то нужно вытаскивать id категории из базы, по её имени из урла.
Но зачем делать лишний sql запрос к бд.
Может можно както передать(напрмер через какую то глобальную переменную)? из AdsmanagerBuildRoute в
AdsmanagerParseRoute так чтобы и овцы целы и волки сыты ? т.е. без циферки в урле и без запроса к бд ?

2. Роутер содержит функцию getAdsmanagerRouteCategory
В ней я закомментировал строку
// $result= JFilterOutput::stringURLSafe($result); - чтобы категории были на русском
иначе проходят названия категорий только на английском.
Так вот, не опасно ли чтобы компонент работал без этой функции JFilterOutput::stringURLSafe ?
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Re: Кирилица в урл - как изменить router ?
« Ответ #10 : 26.02.2012, 19:51:38 »
1. Без дополнительного запроса никак... точнее, скорей всего, можно сделать, но по производительности получится тоже самое, что и с запросом
2. Если все названия категории состоят только из букв (не содержат пробелов и прочих специфических для url символов), то можно и оставить строку закомментированной, а если нет, то нужно написать либо функцию-аналог JFilterOutput::stringURLSafe без транслитерации, либо исправить уже существующую
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Кирилица в урл - как изменить router ?
« Ответ #11 : 26.02.2012, 20:43:42 »
лучше "загонять" вызов запроса в БД в статику или кэшировать блочно, что бы не обращаться каждый раз в БД по очередному урл-у, которых на странице может быть достаточно много
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #12 : 27.02.2012, 04:29:12 »
лучше "загонять" вызов запроса в БД в статику или кэшировать блочно, что бы не обращаться каждый раз в БД по очередному урл-у, которых на странице может быть достаточно много

Это как ? Можно пример ?
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #13 : 09.03.2012, 22:06:16 »
Подскажите пожалуйста, почему когда я запускаю отладку из файла роутера функцией exit - кирилица
выдаётся абракадаброй, например "Москва и Московская область" - выдаётся как РњРѕСЃРєРІР° Рё Московская РѕР±Р».

И ещё, непонимаю почему, но в роутере
когда подставляю значения страна,регион,город - взятые из БД, то урлы генерируются вида -
http://site.ru/index.php/ads/%20%20Москва-и-Московская-обл./Категория ?
а должно быть просто
http://site.ru/index.php/ads/Москва-и-Московская-обл./Категория
Т.е. откуда беруться эти знаки %20% и как их убрать ?

Если же просто, жёстко в роутере прописываю
$segments[]= "Москва-и-Московская-обл" - то отображается как надо.
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Re: Кирилица в урл - как изменить router ?
« Ответ #14 : 09.03.2012, 22:21:41 »
я уже говорил в предыдущем посте, но скажу ещё раз!
%20 - знак пробела... соответственно после выборки из базы нужно заменить пробелы, например, на тире!
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #15 : 10.03.2012, 08:17:11 »
я уже говорил в предыдущем посте, но скажу ещё раз!
%20 - знак пробела... соответственно после выборки из базы нужно заменить пробелы, например, на тире!

Так я делаю
$segments[]= str_replace(" ", "-", $country_name);
И эта %20 - всё равно выходит, может это какой то пробел в другой кодировке что его str_replace не берёт ?
*

Alex89

  • Давно я тут
  • 555
  • 198 / 1
  • Joomlaman :)
Re: Кирилица в урл - как изменить router ?
« Ответ #16 : 10.03.2012, 09:02:10 »
ну попробуйте написать так $segments[]= str_replace(" ", "-", trim($country_name));
а лучше заглянуть в базу и удалить эти пробелы
Увеличить посещаемость сайта помогут здесь - http://tinyurl.com/kpaprwy
Если помог, ткните "крестик" в репу!
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #17 : 10.03.2012, 15:21:01 »
ну попробуйте написать так $segments[]= str_replace(" ", "-", trim($country_name));
а лучше заглянуть в базу и удалить эти пробелы

О да, заработало. Спасибо.
Блин, мог бы сам догадаться.
*

lovivolnu

  • Захожу иногда
  • 323
  • 8 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #18 : 10.03.2012, 18:15:23 »
подскажите как сделать урлы типа "site.ru/Moskow/id46546"
ads2.6.5
*

magistr_yoda

  • Захожу иногда
  • 131
  • 2 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #19 : 10.03.2012, 22:24:44 »
подскажите как сделать урлы типа "site.ru/Moskow/id46546"
ads2.6.5

В нужном месте функции AdsmanagerBuildRoute вставить
$segments[] = "Moscow";

и в функции AdsmanagerParseRoute уже обрабатывать со смещением
если раньше по умолчанию было $vars['catid'] = (int) $catid[0];
то теперь будет $vars['catid'] = (int) $catid[1];
т.к. добавился дополнительный параметр Moscow в урл
*

lovivolnu

  • Захожу иногда
  • 323
  • 8 / 0
Re: Кирилица в урл - как изменить router ?
« Ответ #20 : 18.03.2012, 16:36:08 »
можете по подробней рассказать как избавиться от <Все%20объявления> т.к. я совсем не разбиваюсь в роутере)
спасибо.
ads 2.6.5
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Изменить категории в AdsManager 3.1.5

Автор Doc

Ответов: 2
Просмотров: 10070
Последний ответ 17.03.2019, 21:17:30
от Doc
Изменить страницу объявления

Автор Mick_20

Ответов: 0
Просмотров: 946
Последний ответ 26.05.2017, 12:08:42
от Mick_20
Изменить цвет в dropdown multiselect

Автор elipssp

Ответов: 0
Просмотров: 1170
Последний ответ 25.01.2017, 01:30:31
от elipssp
Изменить размер полей

Автор elipssp

Ответов: 10
Просмотров: 1428
Последний ответ 24.01.2017, 23:14:28
от elipssp
Как изменить месторассположение ссылки категории в adsmanager?

Автор serg2010

Ответов: 21
Просмотров: 4618
Последний ответ 19.01.2017, 07:43:09
от Doc