Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
AdsManager старый 2.2

так как у меня на сайте недавно появилась перелинковка-"сортировка" ( по городам, по станциям метро) путем создании новой страницы.
Видел на каком то сайте и решил себе сделать.
Для этого выбрал кротчайший вариант -
ссылки вида
Код
/page=show_result&ad_metro=Китай-Город  
/page=show_result&ad_city=Москва

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

Для начала думал создать отдельную функцию под такие страницы, но что то там не срасталось в итоге исправил существующие.
 ( возможно не оптимальный вариант. Буду рад предложениям. ну какой созрел)

все добавления делаются в файлах lang.php и AdsManager.php

фаил lang.php добавляем

Код
//List CITY
DEFINE( "ADSMANAGER_LIST_CITY", "Недвижимость в городе ");

//List Metro
DEFINE( "ADSMANAGER_LIST_METRO", "Недвижимость у станции метро ");


фаил AdsManager.php добавляем и изменяем
в самом начале добавляем
Код
//keyword+discr
$ad_city            = mosGetParam( $_GET, 'ad_city', "" );
$ad_metro            = mosGetParam( $_GET, 'ad_metro', "");

чуть ниже добавляем аргументы $ad_metro, $ad_city, а в других 0 0( в противном случае будут ошибки, так как к show_all обращаются)
 в секциях switch ($page)

Код
case 'show_result':
//keywords - metro
 /*   if ((($ad_city !="")||($ad_metro !=""))&&(($catid == 0)||(!isset($catid))))
        show_result($option,$ad_city,$ad_metro,$order,$limitstart);
*////kew
/* else*/

//keyw 2 arg v konce
    if (($catid == 0)||(!isset($catid)))
show_all($option,$expand,$text_search,$order,$limitstart,$ad_city,$ad_metro);
else
show_category($catid,$option,$expand,$text_search,$order,$limitstart);
break;

  case 'show_all': {
//keyw 2 arg v konce
$cache->call( 'show_all',$option,$expand,$text_search,$order,$limitstart,0,0);

    break;
  }

case 'search': {
if ($catid == 0)
   //keyw 2 arg v konce
$cache->call( 'show_all',$option,$expand,$text_search,$order,$limitstart,0,0);
else
$cache->call( 'show_category',$catid,$option,$expand,$text_search,$order,$limitstart);
    break;
  
  }



тот же фаил функция show_all

было ( возможно некоторых пунктов у вас нет, так как функция уже менялась под поиск)
Код
function show_all($option,$expand,$text_search,$order,$limitstart)
{
global $mainframe,$database,$mosConfig_absolute_path,$mosConfig_live_site;

$itemid          = intval( mosGetParam( $_GET, 'Itemid', 0 ));
//Поиск по цене
$cenot = intval( mosGetParam( $_GET, 'pr_ot', 0 ));
$cendo = intval( mosGetParam( $_GET, 'pt_do', 0 ));

//Поиск по цене

//Поиск по общей площади
    $areaot = intval( mosGetParam( $_GET, 'area_ot', 0 ));
$areado = intval( mosGetParam( $_GET, 'area_do', 0 ));

//Поиск по площади участка
    $s_ot  = intval( mosGetParam( $_GET, 'site_ot', 0 ));
    $s_do  = intval( mosGetParam( $_GET, 'site_do', 0 ));

//



// Dynamic Page Title
$mainframe->SetPageTitle( ADSMANAGER_LIST_TEXT );

//Pathway
$database->setQuery( "SELECT c.id, c.name,c.parent ".
" FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");
$list = $database->loadObjectList();
getSubCatsList($list,0,$subcats,$itemid,$option,$order,$expand);
$paths[0]->text = ADSMANAGER_ROOT_TITLE;
$paths[0]->link = sefRelToAbs('index.php?option='.$option.'&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
adsmanager_html::show_subcats($subcats);

//List
if (isset($text_search))
$url_text_search = "&text_search=".$text_search;
$url ="index.php?option=$option&page=show_all".$url_text_search."&order=".$order."&area_ot=".$area_ot."&area_do=".$area_do."&site_ot=".$s_ot."&site_do=".$s_do."&pr_ot=".$cenot."&pr_do=".$cendo;//Пагинация поиска
adsList(ADSMANAGER_LIST_TEXT,"",$url,"show_all","1",$text_search,$expand,$order,0,$option,$limitstart);
}


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


Код


function show_all($option,$expand,$text_search,$order,$limitstart,$ad_city,$ad_metro)
{
global $mainframe,$database,$mosConfig_absolute_path,$mosConfig_live_site;

$itemid          = intval( mosGetParam( $_GET, 'Itemid', 0 ));
//Поиск по цене
$cenot = intval( mosGetParam( $_GET, 'pr_ot', 0 ));
$cendo = intval( mosGetParam( $_GET, 'pt_do', 0 ));

//Поиск по цене

//Поиск по общей площади
    $areaot = intval( mosGetParam( $_GET, 'area_ot', 0 ));
$areado = intval( mosGetParam( $_GET, 'area_do', 0 ));

//Поиск по площади участка
    $s_ot  = intval( mosGetParam( $_GET, 'site_ot', 0 ));
    $s_do  = intval( mosGetParam( $_GET, 'site_do', 0 ));

//
///модификация под метро и город
    if($ad_city){
     $title = ADSMANAGER_LIST_CITY . $ad_city;
     $keyw = ADSMANAGER_LIST_CITY . $ad_city . ", квартиры в городе " . $ad_city;
     $disc = ADSMANAGER_LIST_CITY . $ad_city . ". Все объекты недвижимости по продаже, покупке, аренде в городе " . $ad_city;

            }
    elseif($ad_metro) {
    $title = ADSMANAGER_LIST_METRO . $ad_metro;
    $keyw = ADSMANAGER_LIST_METRO . $ad_metro .", квартиры у станции " . $ad_metro;
    $disc = ADSMANAGER_LIST_METRO . $ad_metro .". Все объекты недвижимости находящиеся около метро " . $ad_metro;
}

    else  {
    $title = ADSMANAGER_LIST_TEXT;
    

}
// Dynamic Page Title
    $mainframe->SetPageTitle( $title );
    $mainframe->prependMetaTag( "description", $disc );
    $mainframe->prependMetaTag( "keywords" , $keyw );



//Pathway
$database->setQuery( "SELECT c.id, c.name,c.parent ".
" FROM #__adsmanager_categories as c ".
"WHERE c.published = 1 ORDER BY c.parent,c.ordering");
$list = $database->loadObjectList();
getSubCatsList($list,0,$subcats,$itemid,$option,$order,$expand);
$paths[0]->text = ADSMANAGER_ROOT_TITLE;
$paths[0]->link = sefRelToAbs('index.php?option='.$option.'&Itemid='.$itemid);
adsmanager_html::show_pathway($paths,$option);
adsmanager_html::show_subcats($subcats);

//List
if (isset($text_search))
$url_text_search = "&text_search=".$text_search;
$url ="index.php?option=$option&page=show_all".$url_text_search."&order=".$order."&area_ot=".$area_ot."&area_do=".$area_do."&site_ot=".$s_ot."&site_do=".$s_do."&pr_ot=".$cenot."&pr_do=".$cendo;//Пагинация поиска
adsList($title,$disc,$url,"show_all","1",$text_search,$expand,$order,0,$option,$limitstart);
}



Вот как то так.
Буду рад советам по оптимизации.
Может потом созрею на полное авто мета описание под сами объекты и категории.






« Последнее редактирование: 03.12.2014, 05:46:20 от AlexSims »
С фантазией плохо.
*

Grendy

  • Захожу иногда
  • 247
  • 26 / 0
Код
$title = ADSMANAGER_LIST_CITY . $ad_city;
$keyw = ADSMANAGER_LIST_CITY . $ad_city . ", квартиры в городе " . $ad_city;
$disc = ADSMANAGER_LIST_CITY . $ad_city . ". Все объекты недвижимости по продаже, покупке, аренде в городе " . $ad_city;

можно записать более коротко, раз данные повторяются

Код
$title = ADSMANAGER_LIST_CITY.$ad_city;
$keyw = "$title, квартиры в городе $ad_city";
$disc = "$title. Все объекты недвижимости по продаже, покупке, аренде в городе $ad_city";

А подобное

Код
$disc = ADSMANAGER_LIST_CITY . $ad_city . ". Все объекты недвижимости по продаже, покупке, аренде в городе " . $ad_city;

эстетичнее смотрелось бы и удобнее было бы редактировать, будь оно отформатировано с помощью той же функцией sprintf(). К тому же, вставлять в код произвольный текст - не комильфо.

Насчёт постраничной навигации, кому как, а я бы запретил такие страницы к индексации. Фактически они лишь мешают продвижению «главной» (первой страницы категории). А если уж сильно хочется втюхивать такие странички поисковикам, проверяем по переменной $limitstart, находимся ли мы на первой странице, и если находимся, выводим одно описание, в противном случае - другое либо добавляем через тире «страницы N».
Плюс в репутацию больше говорит о благодарности, чем слово "Спасибо" в теме, которую повторно, возможно, никогда уже не посетишь.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
Код
$title = ADSMANAGER_LIST_CITY . $ad_city;
$keyw = ADSMANAGER_LIST_CITY . $ad_city . ", квартиры в городе " . $ad_city;
$disc = ADSMANAGER_LIST_CITY . $ad_city . ". Все объекты недвижимости по продаже, покупке, аренде в городе " . $ad_city;

можно записать более коротко, раз данные повторяются

Код
$title = ADSMANAGER_LIST_CITY.$ad_city;
$keyw = "$title, квартиры в городе $ad_city";
$disc = "$title. Все объекты недвижимости по продаже, покупке, аренде в городе $ad_city";

А подобное

Код
$disc = ADSMANAGER_LIST_CITY . $ad_city . ". Все объекты недвижимости по продаже, покупке, аренде в городе " . $ad_city;

эстетичнее смотрелось бы и удобнее было бы редактировать, будь оно отформатировано с помощью той же функцией sprintf(). К тому же, вставлять в код произвольный текст - не комильфо.

Насчёт постраничной навигации, кому как, а я бы запретил такие страницы к индексации. Фактически они лишь мешают продвижению «главной» (первой страницы категории). А если уж сильно хочется втюхивать такие странички поисковикам, проверяем по переменной $limitstart, находимся ли мы на первой странице, и если находимся, выводим одно описание, в противном случае - другое либо добавляем через тире «страницы N».
- спасибо за подсказку ( я что то не додумался сократить так).
- со sprintf() надо еще разбираться _))

в последнем случае так и сделал - дописал слово Страница № и от переменной $limitstart номер получил.

С фантазией плохо.
*

Grendy

  • Захожу иногда
  • 247
  • 26 / 0
- со sprintf() надо еще разбираться _))

Код
DEFINE( "ADSMANAGER_LIST_CITY", "Недвижимость в городе %s. Все объекты недвижимости по продаже, покупке, аренде в городе %s.");

В результате выполнения

Код
sprintf(ADSMANAGER_LIST_CITY, $ad_city, $ad_city)

Получим вывод нужного текста с подставленными на места %s переменными $ad_city.

А можно ещё вот так:
Код
$ad_city            = mosGetParam( $_GET, 'ad_city', 'любой' );
$ad_metro            = mosGetParam( $_GET, 'ad_metro', 'любая станция');

Код
sprintf(ADSMANAGER_LIST_CITY, $ad_city, $ad_metro)

Код
DEFINE( "ADSMANAGER_LIST_CITY", "Город: %s. Все объекты недвижимости по продаже, покупке, аренде рядом с метро: %s.");

Так, если оба параметра могут присутствовать в адресе страницы, и станция учтена будет, и город :)
Плюс в репутацию больше говорит о благодарности, чем слово "Спасибо" в теме, которую повторно, возможно, никогда уже не посетишь.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
теперь осталось придумать как запихнуть эти новые ссылки в Xmap (sitemap), а то Яндекс не хочет индексировать их почему то.
С фантазией плохо.
*

AlexSims

  • Захожу иногда
  • 314
  • 38 / 0
  • кручу верчу
запихнул я эти ссылки ( метро + города, область)
проблема была еще в том что они идут через запятую в строке ( ее решил )
теперь осталось найти решение как:
- устранить "пробелы" после запятой которые указывали
- и с регистром букв разобраться ( так как много дублей может на создаваться)

Решение такое

в файле com_adsmanager.php ( что лежит в папке components/com_xmap/extensions )

в функции &getTree после кода
Код
[b] $params['include_ads'] = $include_ads;[/b]

добавляем ( это нужно чтоб можно было выбирать в какой форме выводить и приоритет и частоту сканирования поисковиком)
Спойлер
[свернуть]


далее в этом же файле в функции getCategories
после кода
Спойлер
[свернуть]

добавляем свой код - метро+город  ( долго не мог понять почему не работало, пока условие and category = $catid не добавил в запросе )

Спойлер
[свернуть]


в файле com_adsmanager.xml ( в той же папке )

добавляем

Код
<param name="include_ads_mc" type="list" default="1" label="metro-city" description="Should we include ads into the sitemap?">
                        <option value="0">Never</option>
                        <option value="1">Always</option>
                        <option value="2">In XML Sitemap Only</option>
                        <option value="3">In Site Sitemap Only</option>
</param>


и чуть ниже

Спойлер
[свернуть]




изначально было около 4600 ссылок в этой sitemape( объявы и категории)
теперь стало 5940 ( с городами и метро) - надо как-нибудь придумать как в отдельный фаил Sitemap их запихать


пробелы и точки вначале и конце каждого слова подрезал ( - 100 лишних ссылок)
« Последнее редактирование: 24.12.2014, 01:44:42 от AlexSims »
С фантазией плохо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль поиска - не сбрасываются результаты при переходе на другие страницы

Автор Ingener

Ответов: 9
Просмотров: 2353
Последний ответ 13.11.2016, 21:20:21
от moonaway
создание второй страницы с AdsManager

Автор SerGunSter

Ответов: 0
Просмотров: 1273
Последний ответ 14.01.2016, 16:42:23
от SerGunSter
AdsManager 2.8.0 Stable. Название родительских категорий в <title>

Автор lustoff

Ответов: 0
Просмотров: 1268
Последний ответ 07.01.2016, 12:15:27
от lustoff
Некорректное отображение страницы подачи нового объявления

Автор Lenko.A.N

Ответов: 0
Просмотров: 1072
Последний ответ 24.06.2015, 16:02:02
от Lenko.A.N
Добавление в title номера страницы

Автор Serafon

Ответов: 5
Просмотров: 2697
Последний ответ 24.07.2014, 14:17:19
от Serafon