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

3618

Привет!

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

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




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

Что нового:

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

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

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

Вот так теперь выглядит форма опций:
Виджет \"Случайная запись\" еще одно ОБНОВЛЕНИЕ!

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

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

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


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

UPD: Перезалил пакеты. Оказалось в них не хватало картинки-индикатора загрузки контента. Он должен появляться вместо кнопки "Обновить" во время ajax-запроса. Делал, делал фичу..., а ее не видно=( было.
Виджет "Случайная запись" ОБНОВЛЕНИЕ! | Компонент "Избранное" для InstantCMS 2.x
Комментарии (41)
akhasanov 2 ноября 2014 в 05:16 0
Как берется случайная запись? ORDER BY RAND() LIMIT x?
Val 2 ноября 2014 в 14:37 +1
Сначала делается выборка записей по заданным в опциях условиям (контент, категории, фильтры + отсев скрытых записей и др. которые не положено смотреть пользователю которому делается вывод), затем записи перемешиваются, "отрезаются" лишние, снова перемешиваются и рендерятся.
akhasanov 3 ноября 2014 в 00:59 0
Я спросил про другое. Как берется случайная запись? Как вы их перемешиваете? С помощью ORDER BY RAND()?
Val 3 ноября 2014 в 01:06 +4
Записи берутся не случайно, а все (за вычетом лишних), а потом:
Код PHP:
  1.  
  2.  
Александр 2 ноября 2014 в 05:27 0
А для первой версии не будет? в теории
Val 2 ноября 2014 в 14:37 +3
К сожалению, пока не планировал, но загадывать не буду))
Александр 3 ноября 2014 в 00:33 0
спасибо все равно! + , будем надеяться, что когда то будет и на первой)) раньше чем все мы решим уже переходить на вторую ^^
nmsk 2 ноября 2014 в 10:37 0
Спасибо, нужно будет потестировать, хочется реализовать на первой страницы вывод людей которых скажем так, ищут...
Click 2 ноября 2014 в 10:45 0
После установки, при выборе показа случайных записей из постов, при открытии страницы виджет показывает записи нормально, однако при нажатии на кнопку виджета "Обновить" (или при включении в настройках автообновления) показ картинок из постов прекращается - поле картинок чистое, хотя "картинки для привлечения внимания" в самих постах присутствуют. После перезагрузки страницы картинки в виджете опять появляются, но при обновлении снова пропадают.
При выборе показа случайных записей из других типов контента виджет работает без замечаний.
Val 2 ноября 2014 в 14:39 +1
интересно.... надо разобраться... Попробую потестировать, если получится воспроизвести описанную ошибку, обязательно исправлю
Лоginov 2 ноября 2014 в 13:23 0
А для ИнстантМапс2 сделать такое?
Val 2 ноября 2014 в 14:40 +1
для этого надо покупать InstantMaps )). А что конкретно вы бы хотели рандомизировать в картах???
Лоginov 2 ноября 2014 в 23:00 0
Новости объектов
Val 2 ноября 2014 в 23:09 +2
у меня нет InstantMaps, но r2 говорил что объекты там сделаны типом контента. Попробуйте что да как там?
Ильгиз 7 ноября 2014 в 13:38 0
Виджет может вывести объекты мапса, но вот новости или отзывы, к сожалению, не может.
Мне бы тоже очень понадобилась возможность вывода новостей объектов.
Alexprofi 2 ноября 2014 в 22:19 0
Интересно, а можно рандомно показывать не случайные записи, а указать какие именно? Например выводить премиум объявления?
Или это как-то через слайдер лучше делать?
Val 2 ноября 2014 в 23:07 +3
как вариант реализовать это через наборы фильтров? Премиум объявления наверное отличаются каким либо полем от не премиум объявлений. Вот по этому полю и фильтровать...
Alexprofi 3 ноября 2014 в 00:59 0
Надо будет попробовать...
nmsk 7 ноября 2014 в 12:11 0
Выбрал тип контента фотоальбомы, категорию город, но к сожалению показываются только обложки альбомов, а хотелось бы что бы показывались фотографии. К тому же показываются "личные фотальбомы", а они не нужны в записи...
nmsk 7 ноября 2014 в 12:16 0
Было бы не плохо добавить ещё и навигацию.. назад, вперёд...
MegaRostov 17 ноября 2014 в 15:46 0
Почему может не работать кнопка ОБНОВИТЬ?? А так хороший виджет!
Val 17 ноября 2014 в 19:48 +1
Проверьте правильность установки виджета в целом. Все файлы на месте? доступ к папкам правильный настроен? js-скрипт загружается корректно? ну и последнее, jQuery запущен?))
MegaRostov 18 ноября 2014 в 19:46 0
А где прочесть РЕДМИ??
MegaRostov 19 ноября 2014 в 13:43 +1
Все на месте Но "Обновить" не работает! Или как и где "Обновить" УБРАТЬ?
Val 19 ноября 2014 в 22:06 +1
Очень странно((( Вы можете скинуть мне ссылку (можно через личку) на ваш сайт? Я постараюсь глянуть, может что прояснится...
Если хочется избавится от кнопки "Обновить" закомментируйте 66-ую строку (число то какое злополучное zlo )) ) в файле ..\system\controllers\content\widgets\random\widget.php
Код PHP:
  1. // $this->links .= LANG_WD_CONTENT_RANDOM_REFRESH...
...но тогда пропадает основная изюминка))
Евгений 28 ноября 2014 в 17:29 0
Здравствуйте! В виджете randomWidget_v1.2 "Случайная запись" для CMS 2.1.2 при нажатии на кнопку "обновить" в новостях, обновляется нормально с изображениями, но в блогах - обновляется уже без картинок ! Как решить эту проблему? Пример тут
Val 28 ноября 2014 в 20:13 +1
Здравствуйте. Попробуем разобраться. Очень для меня странно и непонятно, что в одном случае виджет отрабатывает, а в другом нет! Хотя по коду, абсолютно без разницы какой тип контента ему скармливают...
SpAyN 17 января 2015 в 13:55 +1
День добрый! Я так понял Вы разобрались как исправить проблемы в роботе "обновить", но может Вы все же напишете общее решения для всех.. Так как у меня тоже не работает эта кнопка...
Val 18 января 2015 в 15:56 +1
Проверьте права на файлы и папки виджета (+ не забудьте глянуть права на ..\system\controllers\content\actions\item_random.php)
jorgovich 20 декабря 2014 в 13:57 +1
Val, Спасибо пригодился, есть предложение модифицировать виджет - Пользователи - в случайные пользователи по аналогии, такая необходимость тоже возникает, когда какую то группу надо отобразить но в случайном порядке
Val 22 декабря 2014 в 08:17 +2
jorgovich, в принципе сделать как вы говорите не проблема)), если есть еще люди которым бы это пригодилось можно переделать виджет))
Sergon 17 января 2015 в 17:37 0
да, про группы тоже интересно!
nmsk 28 января 2015 в 19:17 0
Обновления нет случайно? v
Val 28 января 2015 в 20:49 +3
пока занимаюсь написанием другого компонента... smile
Sergon 11 ноября 2015 в 07:07 0
Val, после обновления на 2.3.0 не обнавляется контент
Val 11 ноября 2015 в 17:04 0
Похоже что-то поменялось в механизме парсинга url-адреса. Пока глубоко не разбирался...
Внесите изменения в файл ..\templates\default\controllers\content\widgets\random\random.tpl.php 70-ая строка (нужно убрать $ctype['name']):
Код PHP:
  1. data-url="<?php echo href_to('item_random'); ?>"
Также нашел баг: если в вернувшийся записи от сервера нет картинки, то так же не обновляется, но это косяк js-скрипта. И еще есть ряд моментов, которые надо переписать.
В общем как руки дойдут буду править все это дело.
IceBreaker 6 мая 2016 в 21:34 0
Приветствую, Очень нужная вещь, спасибо за дополнение, обнаружена непонятка
Сайт petergof.online, iCMS 251, вывел показ случайного объекта из одной из категорий, всё классно, только у меня в категориях объекты в названиях которых есть кавычки, Например объект называется - Фонтан "Солнце" - кавычки, что интересно иногда выводятся кавычками а иногда и &QUOT попробовал скопировать в админке кавычки, которые показываются нормально во все остальные объекты - не прокатило..... Сейчас их стало меньше, но не знаю как окончательно побороть.... С кодировками на сайте вроде как всё нормально проблем не было...

Спасибо
Val 6 мая 2016 в 23:32 0
Здравствуйте. Посмотрите в каком виде у вас сохраняются эти заголовки в БД - таблица 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!
IceBreaker 12 мая 2016 в 03:08 0
Спасибо за совет, в базе в графе title, всё нормально, в кавычках, интересно то, что после того как прописал изменения в файле которые вы приложили выше, кавычки во всех записях выводятся QUOT.... Можно еще что-то сделать? Компонент очень хорош добить бы :)

Спасибо
Val 12 мая 2016 в 09:22 0
Кажется определил проблему...
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(...)
IceBreaker 28 мая 2016 в 03:50 0
Спасибо большое, заработало !!!