Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Дубликаты ЖШ
« : 08.04.2019, 11:48:48 »
Подскажите пожалуйска как избавиться от динамических ссылок вида /index.php?start=18
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #1 : 08.04.2019, 11:52:43 »
так от них вроде не надо избавляться.
типа, надо дописывать в заголовок -страница N + скрыть описание категории для последующих страниц
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Дубликаты ЖШ
« Ответ #2 : 08.04.2019, 12:42:15 »
JL No doubles
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Дубликаты ЖШ
« Ответ #3 : 08.04.2019, 12:58:55 »
JL No doubles
Читал на форуме, что этот плагин мешает метрику собирать.
А так-то уже обратился за лицензией, если ответят, то пообщаюсь с разработчиком
*

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Дубликаты ЖШ
« Ответ #4 : 08.04.2019, 13:01:57 »
так от них вроде не надо избавляться.
типа, надо дописывать в заголовок -страница N + скрыть описание категории для последующих страниц
я не силен в коде.
Disallow: /category в файле robots.txt?
а как дописывать дописывать в заголовок -страница N?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #5 : 08.04.2019, 13:27:18 »
не, роботс не трогайте.
в переопределенный шаблон категории
\templates\ВАШ_ШАБ\html\com_jshopping\category\category_default.php
Код
	$doc = JFactory::getDocument();	
$myTitle = $this->category->get('meta_title_ru-RU');
if ($myTitle=="") { // если поле title не заполнено
$myTitle = $this->category->name; // то берем название категории
}


if (!isset($_GET['start'])){ print $this->category->description; } // выводим описание категории только на первой странице
else { // добавляем счетчик в title
$pg = (int)((int)($_GET['start'])/12)+1; // вместо 12 ставим своё число товаров на странице
$myTitle .=", страница ".$pg;
}

$doc->setTitle($myTitle);
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #7 : 08.04.2019, 13:43:20 »
придумал сейчас такую штуку
\templates\ШАБЛОНИЙ\html\com_jshopping\list_products\block_pagination.php
Код
$this->pagination = str_replace("?start=0", "", $this->pagination);

что скажут умные люди?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дубликаты ЖШ
« Ответ #8 : 08.04.2019, 13:48:41 »
придумал сейчас такую штуку
обычно так именно и делаю, если не нужно прям отдельного плагина для пагинации, который будет подменять логику.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Дубликаты ЖШ
« Ответ #10 : 08.04.2019, 13:56:35 »
А не проще 301 редикерт сделать если в ссылке start=0
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #11 : 08.04.2019, 14:01:10 »
ну тут вопрос про то, нужен ли тебе постоянный редирект с первого пункта, когда можно его избежать?
+этот параметр может в каком-то ещё компоненте вылезти.
но напиши редирект, будет альтернативой. я в них не силен.
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Re: Дубликаты ЖШ
« Ответ #12 : 08.04.2019, 14:01:53 »
$this->pagination = str_replace("?start=0", "", $this->pagination);
Если только там не может быть ссылок вида:
/index.php?query=lalala&start=0
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дубликаты ЖШ
« Ответ #13 : 08.04.2019, 14:07:07 »
А не проще 301 редикерт сделать если в ссылке start=0
чем? :)

Если только там не может быть ссылок вида:
/index.php?query=lalala&start=0
ну напишите тогда
Код
$this->pagination = str_replace(array("?start=0", "&start=0"), "", $this->pagination);
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: Дубликаты ЖШ
« Ответ #14 : 08.04.2019, 15:28:40 »
чем?
Чтобы из индекса навреника убрать.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Дубликаты ЖШ
« Ответ #15 : 08.04.2019, 15:42:33 »
ну это если она там была :) так то да, редирект в общем то тоже не помешает. но и саму ссылку надо убрать, заменой
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Дубликаты ЖШ
« Ответ #17 : 08.04.2019, 18:04:18 »
придумал сейчас такую штуку
\templates\ШАБЛОНИЙ\html\com_jshopping\list_products\block_pagination.php
Код
$this->pagination = str_replace("?start=0", "", $this->pagination);

что скажут умные люди?
большое спасибо всем за отзывчивость!
*

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Дубликаты ЖШ
« Ответ #18 : 08.04.2019, 20:35:05 »
ну это если она там была :) так то да, редирект в общем то тоже не помешает. но и саму ссылку надо убрать, заменой
соориентируйте плз. Плагина каноничных ссылок + No Doubles достаточно? или не будет лишним прописать все эти рекомендации:
https://joomla.center/baza-joomla/seo-optimizatsiya-joomla/dubli-stranits-joomla
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #19 : 09.04.2019, 07:26:32 »
ну это уже за пределами данной темы. давайте не будем все вопросы по SEO сюда сваливать.

по редиректу на первую ссылку пагинации, вроде так работает
Код
# редирект с первой пагинации каталога на ссылку без параметра - убираем дубль
RewriteCond %{QUERY_STRING} ^start=0$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}? [R=301,L]
*

Edas

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Дубликаты ЖШ
« Ответ #20 : 09.04.2019, 07:55:38 »

ну это уже за пределами данной темы. давайте не будем все вопросы по SEO сюда сваливать.

по редиректу на первую ссылку пагинации, вроде так работает
Код
# редирект с первой пагинации каталога на ссылку без параметра - убираем дубль
RewriteCond %{QUERY_STRING} ^start=0$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}? [R=301,L]
это в htaccess прописывать?
а чем предыдущий вариант в block_pagination плох?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Re: Дубликаты ЖШ
« Ответ #21 : 09.04.2019, 08:08:15 »
1. да
2. если сайт ещё не проиндексирован - то можно не прописывать, а если проиндексирован, то дубли уже в поиске и вариант с пагинацией их не уберет из него
*

AlexK

  • Захожу иногда
  • 51
  • 3 / 0
  • Автор курсов по Joomla
Re: Дубликаты ЖШ
« Ответ #22 : 15.04.2019, 12:48:25 »
Для борьбы с дублями в JoomShopping есть парочка полезных бесплатных расширений:
https://joomla.center/baza-joomla/internet-magaziny-joomla-joomshopping/dubli-tovarov-kategorij-joomshopping
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться