Виджет "Случайная запись" еще одно ОБНОВЛЕНИЕ!

+44
4.52K

Привет!

После обновления инстанта до версии 2.1.2 виджет отказался показывать картинки. Это было связано с некоторым изменением механизма вывода этих самых картинок. Но проблема решена и пофиксена! И в связи с этим представляю вам очередное обновление виджета "Случайная запись".

Иллюстрация



Пересмотрел пожелания в комментариях к предыдущему топику виджета, и реализовал интересные предложения.

Что нового:

1. Добавлена возможность указания из какой категории выбирать записи, а также можно установить соответствующий фильтр из набора. В общем, рандомизация под контролем😊Фильтруем записи как нам захочется: "все", "последние", "предпоследние" и т.д.
2. Функция автообновления контента. Название говорит само за себя — можно указать интервал в секундах, через который виджет будет сам получать новую порцию данных от сервера.
3. Обновление записей теперь сопровождается анимацией. Картиночки плавно сменяют друг друга или "схлопывается" текст, если изображения не оказалось в записи. В сочетании с автообновлением получается интересная фича.
4. Появилась возможность указывать свои "дополнительные" ссылки в заголовке виджета. По началу думал что будет лишним, но народ требует!

Исправления:

1. Как было сказано в начале, исправлена ошибка показа изображений.
2. Также доработана функция обрезания длинного содержимого тизера.

Вот так теперь выглядит форма опций:
Иллюстрация

Сам виджет внешне не претерпел изменений, кроме внутренне-функциональных. Как и раньше внешний вид легко настраивается/адаптируется под ваш сайт и ваши потребности с помощью файла стилей random.css

Установка стандартная. Для обновления используйте файл .update (в принципе это тот же .install, только без записи в БД)

Всем спасибо, жду ваших отзывов в комментариях.




P.S. Для поддержания и развития этого виджета и других дополнений для InstantCMS буду рад вашей благодарности в виде "спасибо" на R396646181623, Z304069635163 или плюсика в карме =)

UPD: Перезалил пакеты. Оказалось в них не хватало картинки-индикатора загрузки контента. Он должен появляться вместо кнопки "Обновить" во время ajax-запроса. Делал, делал фичу..., а ее не видно=( было.
0
akhasanov akhasanov 9 лет назад #
Как берется случайная запись? ORDER BY RAND() LIMIT x?
+1
Val Val 9 лет назад #
Сначала делается выборка записей по заданным в опциях условиям (контент, категории, фильтры + отсев скрытых записей и др. которые не положено смотреть пользователю которому делается вывод), затем записи перемешиваются, "отрезаются" лишние, снова перемешиваются и рендерятся.
0
akhasanov akhasanov 9 лет назад #
Я спросил про другое. Как берется случайная запись? Как вы их перемешиваете? С помощью ORDER BY RAND()?
+4
Val Val 9 лет назад #
Записи берутся не случайно, а все (за вычетом лишних), а потом:
Код PHP:
0
Александр Александр 9 лет назад #
А для первой версии не будет? в теории
+3
Val Val 9 лет назад #
К сожалению, пока не планировал, но загадывать не буду))
0
Александр Александр 9 лет назад #
спасибо все равно! + , будем надеяться, что когда то будет и на первой)) раньше чем все мы решим уже переходить на вторую ^^
0
nmsk nmsk 9 лет назад #
Спасибо, нужно будет потестировать, хочется реализовать на первой страницы вывод людей которых скажем так, ищут...
0
Click Click 9 лет назад #
После установки, при выборе показа случайных записей из постов, при открытии страницы виджет показывает записи нормально, однако при нажатии на кнопку виджета "Обновить" (или при включении в настройках автообновления) показ картинок из постов прекращается - поле картинок чистое, хотя "картинки для привлечения внимания" в самих постах присутствуют. После перезагрузки страницы картинки в виджете опять появляются, но при обновлении снова пропадают.
При выборе показа случайных записей из других типов контента виджет работает без замечаний.
+1
Val Val 9 лет назад #
интересно.... надо разобраться... Попробую потестировать, если получится воспроизвести описанную ошибку, обязательно исправлю
0
Лоginov Лоginov 9 лет назад #
А для ИнстантМапс2 сделать такое?
+1
Val Val 9 лет назад #
для этого надо покупать InstantMaps )). А что конкретно вы бы хотели рандомизировать в картах???
0
Лоginov Лоginov 9 лет назад #
Новости объектов
+2
Val Val 9 лет назад #
у меня нет InstantMaps, но r2 говорил что объекты там сделаны типом контента. Попробуйте что да как там?
0
Ильгиз Ильгиз 9 лет назад #
Виджет может вывести объекты мапса, но вот новости или отзывы, к сожалению, не может.
Мне бы тоже очень понадобилась возможность вывода новостей объектов.
0
Alexprofi Alexprofi 9 лет назад #
Интересно, а можно рандомно показывать не случайные записи, а указать какие именно? Например выводить премиум объявления?
Или это как-то через слайдер лучше делать?
+3
Val Val 9 лет назад #
как вариант реализовать это через наборы фильтров? Премиум объявления наверное отличаются каким либо полем от не премиум объявлений. Вот по этому полю и фильтровать...
0
Alexprofi Alexprofi 9 лет назад #
Надо будет попробовать...
0
nmsk nmsk 9 лет назад #
Выбрал тип контента фотоальбомы, категорию город, но к сожалению показываются только обложки альбомов, а хотелось бы что бы показывались фотографии. К тому же показываются "личные фотальбомы", а они не нужны в записи...
0
nmsk nmsk 9 лет назад #
Было бы не плохо добавить ещё и навигацию.. назад, вперёд...
0
R161Net R161Net 9 лет назад #
Почему может не работать кнопка ОБНОВИТЬ?? А так хороший виджет!
+1
Val Val 9 лет назад #
Проверьте правильность установки виджета в целом. Все файлы на месте? доступ к папкам правильный настроен? js-скрипт загружается корректно? ну и последнее, jQuery запущен?))
0
R161Net R161Net 9 лет назад #
А где прочесть РЕДМИ??
+1
R161Net R161Net 9 лет назад #
Все на месте Но "Обновить" не работает! Или как и где "Обновить" УБРАТЬ?
+1
Val Val 9 лет назад #
Очень странно((( Вы можете скинуть мне ссылку (можно через личку) на ваш сайт? Я постараюсь глянуть, может что прояснится...
Если хочется избавится от кнопки "Обновить" закомментируйте 66-ую строку (число то какое злополучное zlo )) ) в файле ..\system\controllers\content\widgets\random\widget.php
Код PHP:
  1. // $this->links .= LANG_WD_CONTENT_RANDOM_REFRESH...
...но тогда пропадает основная изюминка))
0
Евгений Евгений 9 лет назад #
Здравствуйте! В виджете randomWidget_v1.2 "Случайная запись" для CMS 2.1.2 при нажатии на кнопку "обновить" в новостях, обновляется нормально с изображениями, но в блогах - обновляется уже без картинок ! Как решить эту проблему? Пример тут
+1
Val Val 9 лет назад #
Здравствуйте. Попробуем разобраться. Очень для меня странно и непонятно, что в одном случае виджет отрабатывает, а в другом нет! Хотя по коду, абсолютно без разницы какой тип контента ему скармливают...
+1
SpAyN SpAyN 9 лет назад #
День добрый! Я так понял Вы разобрались как исправить проблемы в роботе "обновить", но может Вы все же напишете общее решения для всех.. Так как у меня тоже не работает эта кнопка...
+1
Val Val 9 лет назад #
Проверьте права на файлы и папки виджета (+ не забудьте глянуть права на ..\system\controllers\content\actions\item_random.php)
+1
jorgovich jorgovich 9 лет назад #
Val, Спасибо пригодился, есть предложение модифицировать виджет - Пользователи - в случайные пользователи по аналогии, такая необходимость тоже возникает, когда какую то группу надо отобразить но в случайном порядке
+2
Val Val 9 лет назад #
jorgovich, в принципе сделать как вы говорите не проблема)), если есть еще люди которым бы это пригодилось можно переделать виджет))
0
Sergon Sergon 9 лет назад #
да, про группы тоже интересно!
0
nmsk nmsk 9 лет назад #
Обновления нет случайно? v
+3
Val Val 9 лет назад #
пока занимаюсь написанием другого компонента... smile
0
Sergon Sergon 8 лет назад #
Val, после обновления на 2.3.0 не обнавляется контент
0
Val Val 8 лет назад #
Похоже что-то поменялось в механизме парсинга url-адреса. Пока глубоко не разбирался...
Внесите изменения в файл ..\templates\default\controllers\content\widgets\random\random.tpl.php 70-ая строка (нужно убрать $ctype['name']):
Код PHP:
  1. data-url="<?php echo href_to('item_random'); ?>"
Также нашел баг: если в вернувшийся записи от сервера нет картинки, то так же не обновляется, но это косяк js-скрипта. И еще есть ряд моментов, которые надо переписать.
В общем как руки дойдут буду править все это дело.
0
IceBreaker IceBreaker 7 лет назад #
Приветствую, Очень нужная вещь, спасибо за дополнение, обнаружена непонятка
Сайт petergof.online, iCMS 251, вывел показ случайного объекта из одной из категорий, всё классно, только у меня в категориях объекты в названиях которых есть кавычки, Например объект называется - Фонтан "Солнце" - кавычки, что интересно иногда выводятся кавычками а иногда и &QUOT попробовал скопировать в админке кавычки, которые показываются нормально во все остальные объекты - не прокатило..... Сейчас их стало меньше, но не знаю как окончательно побороть.... С кодировками на сайте вроде как всё нормально проблем не было...

Спасибо
0
Val Val 7 лет назад #
Здравствуйте. Посмотрите в каком виде у вас сохраняются эти заголовки в БД - таблица cms_con_history (где cms - ваш префикс) столбец title. Строки заголовков хранятся в виде кавычек или вместо кавычек &quot;?
Вероятно перед сохранением или перед чтением записи виджетом заголовки уже проходят обработку функцией htmlspecialchars(), которая заменяет различные спец символы на html-символы.

Можете убрать повторное преобразование. Для этого в файле ..\templates\default\controllers\content\widgets\random\random.tpl.php (27 строка) пропишите так:
Код PHP:
  1. ...
  2. <div class="title">
  3. <a href="<?php echo $url; ?>"><?php echo $item['title']; ?></a>
  4. <?php if ($item['is_private']) { ?>
  5. <span class="is_private" title="<?php html(LANG_PRIVACY_PRIVATE); ?>"></span>
  6. <?php } ?>
  7. </div>
  8. ...
т.е. в сылке-заголовке прописываем <?php echo $item['title']; ?> вместо <?php html($item['title']); ?>

Но это безопасно только в случае если заголовок записи уже проверен ранее на htmlspecialchars!
0
IceBreaker IceBreaker 7 лет назад #
Спасибо за совет, в базе в графе title, всё нормально, в кавычках, интересно то, что после того как прописал изменения в файле которые вы приложили выше, кавычки во всех записях выводятся QUOT.... Можно еще что-то сделать? Компонент очень хорош добить бы :)

Спасибо
0
Val Val 7 лет назад #
Кажется определил проблему...
1. верните обратно html($item['title']); в ..\templates\default\controllers\content\widgets\random\random.tpl.php (27 строка). Т.е. откатите предыдущее исправление (см. выше).
2. в файле ..\templates\default\js\random.js исправьте 88 строку на
Код JAVASCRIPT:
  1. $('.title a', $(item)).html(result.items[indx].title);
т.е. text(...) замените на html(...)
0
IceBreaker IceBreaker 7 лет назад #
Спасибо большое, заработало !!!

Еще от автора

СтопХам - userscript для instantcms.ru
Всем привет! Презентую чужую разработку со своей небольшой доработкой .
Предпросмотр для InstantCMS 2
Всем привет!
Just4Fun - Аватарки!
Здравствуйте, любители InstantCMS 2.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.