• avatar paic
  • 0
Спасибо! Помогло тем, что у меня в голове появилась связь между внешним видом настроек фильтра и плагином eFilterHelper — он у меня был выключен за ненадобностью. Приношу извинения за глупый вопрос.
  • avatar webber
  • 1
Иногда бывает так, что «что-то случилось с file_get_contents» на хостинге и лечение выглядит в замене MODX_SITE_URL на MODX_BASE_PATH в плагине eFilterHelper тут.
  • avatar gk71
  • 0
После обновления не работает DLglossary. Выводится ошибка 404. До обновления все работало
  • avatar paic
  • 0
Спасибо!
Пользуясь случаем, глядя на Ваш скриншот, еще спрошу — у меня такой вид настройки фильтра почему-то не отображается. Сначала при установки появился именно такой, а потом «съехал» на старый вид, какой был ранее до стилизации, я даже не заметил, после каких изменений на сайте это случилось.
  • avatar webber
  • 1
Убрать птичку «ссылка» в настройке фильтра, если она не нужна. Сейчас оно генерирует ссылку на страницу с id=1 (значение чекбокса) — это, видимо, и есть главная.

  • avatar paic
  • 0
Добрый день, подскажите, возник такой вопрос.
Есть ТВ типа чекбокс, возможное значение вида: Проверенный специалист==1. Так вот фильтр в этом случае оборачивает название в ссылку и выводит так
<a href="/">Проверенный специалист</a>

В результате при клике на чекбокс все ок, фильтр срабатывает, а при клике по названию — перебрасывает на главную.
Порылся в параметрах — вроде ничего подходящего не присмотрел, вылечил тем, что в файле eFilter.class.php удалил строки 235-237:
if ($filters[$tv_id]['href'] == '1' && is_int($k)) {
   $tv_val_name = '<a href="' . $this->modx->makeUrl($k) . '">' . $tv_val_name . '</a>';
}

Но решил спросить, как правильно в таких случаях поступать.
Спасибо.

P.S. Чекбоксы у меня стилизованные, в конфиге прописаны так (может, из-за этого)
$tplRowCheckbox = '
	<div class="checkbox-custom checkbox-success">
		<input type="checkbox" id="[+tv_id+]_[+iteration+]" name="f[[+tv_id+]][]" value="[+value+]" [+selected+] [+disabled+]>
		<label for="[+tv_id+]_[+iteration+]" class="[+disabled+]"> [+name+] 
			<span class="fltr_count">[+count+]</span>
		</label>
	</div>
';
Да, я уже протестировал пару вариантов подобных запросов, которые позволяют сначала посмотреть дубли, чтобы понять, какие лишние (чтобы ненароком не удалить нужные записи).

Ну а потом удалить ненужные дубли.

Я это всё уже проделал, и как раз на эту тему и напишу статью в помощь тем, кто, возможно, столкнулся.
Да, все верно. Дубли можно удалить запросом:

DELETE t1 FROM modx_site_tmplvar_contentvalues t1 INNER JOIN    modx_site_tmplvar_contentvalues t2 WHERE t1.id < t2.id AND t1.contentid = t2.contentid  AND t1.tmplvarid = t2.tmplvarid;
У меня недавно выявилась связанная с этим проблема.

В site_tmplvar_contentvalues появились дубли из-за того, что я сначала обновил ДокЛистер, потом сайт поработал, значения ТВ-параметров писались в таблицу в виде дублей, так как уникального индекса не было.

А потом я уже обновил MODx, а уникальный индекс не создался из-за дублей.

Это и сейчас так? для версий EVO до 1.3.4 нужно сначала обновлять MODx, и только потом ДокЛистер? Если да, то я статейку на эту тему опубликую, чтобы никто на мои грабли не наступил.
Там уже пара пожеланий есть, главное не перегрузить, не переусложнить параметрами простой сниппет, а то человек сразу и не поймет, что к чему :)

Как руки дойдут — сделаю отключение кольца.
  • avatar tiptop
  • 0
А можно ввести еще параметр
&fill=`0` &fill=`1`
1 — при отсутствии нужного количества предшественников или последователей у крайних документов, добирать с противоположной стороны.
0 — не добирать

Но это уже совсем заморочки ))
  • avatar tiptop
  • 0
Хороший вопрос )) Тоже над этим думал.
С точки зрения верстки/дизайна/продвижения, лучше первый вариант, т.е. если место отведено под 4 ссылки, то вынь да положь 4.
Но с точки зрения реализации, второй вариант мне кажется гораздо проще сделать.
Решение за автором.
Или еще вариант:
— самая свежая новость (1-я): на 2 последующих (более старых),
— 2-я по свежести: на 1-ю (предыдущую) и на 2 последующих,
— 3-я по свежести: на 2 предыдущих и на 2 последующих.
Тогда давайте все-таки определимся с четким ТЗ. Представим, что у нас в вызове DLSiblings установлены след. параметры:

&prevQty=`2`
&nextQty=`2`
&noRing=`1` // Отмена кольца


Куда будут идти ссылки для таких новостей?

— самая свежая новость (1-я): на 4 последующих (более старых),
— 2-я по свежести: на 1-ю (предыдущую) и на 3 последующих,
— 3-я по свежести: на 2 предыдущих и на 2 последующих.

Так вы хотели сделать? Если нет, напишите, как именно.
  • avatar tiptop
  • 0
Но тогда все остальные новости, выпавшие за этот интервал так же выпадают из перелинковки.
Т.е. самый разумный вариант — это именно отмена цикла.
  • avatar tiptop
  • 0
Т.е. у всех будут выводиться только предшественники.
Нет, я не так хотел )) Мне нравится, что выводятся именно и предшественники и последователи. Просто у самой свежей новости при закольцовывании начинают цепляться старые новости. Для блога это хорошо, для новостной ленты нет.
Задача в принципе решается установкой временного интервала, чтобы дата создания/публикации была в пределах установленного интервала и вычислялась автоматически от текущей даты.
У самой старой ничего не выведется. У самой свежей выведется 4 прошлых. Но ведь вы так и хотели.
  • avatar tiptop
  • 0
Т.е. у самой свежей новости ничего не выведется.
Это если вы не используете отложенную публикацию. А если используете, то можно попробовать включить «Включить фильтры» (в конфиге) и использовать такую страшную конструкцию в addWhereList :)

[[DocLister?
&idType=`parents`
&parents=`[*parent*]`
&tpl=`@CODE:<p><a href=[+url+]>[+pagetitle+]</a> от [+date+]</p>`
&addWhereList=`if(pub_date=0,createdon,pub_date) < [*pub_date:ifempty=[*createdon*]*]`
&dateSource=`pub_date`
&dateFormat=`%d-%m-%Y`
&display=`4`
]]


Или же вместо этого просто написать обертку для вызова ДокЛистера.
Вот так (исправил) более универсально, и еще @CODE в шаблоне забыл в прошлом примере.

[[DocLister?
&idType=`parents`
&parents=`[*parent*]`
&tpl=`@CODE:<a href=[+url+]>[+pagetitle+] от [+date+]</a><br>`
&addWhereList=`c.createdon < [*createdon*]`
&dateSource=`createdon`
&dateFormat=`%d-%m-%Y`
&display=`4`
]]


Блин, 5 раз не мог нормально код сюда вставить ))