A

AVC

0
Репутация
0
Рейтинг
#1 Вставка php кода в HTML блок 18 июня 2018 в 17:56
Подскажите, каким образом можно вставить в текст определенного (только одного, пусть даже по ID) HTML блока
результат выполнения PHP файла, либо целиком статичного файла (который будет по крону изменяться PHP кодом)
?
Мне необходимо периодически изменять текст в определенном HTML блоке, который показывается на сайте.
#2 [ЕСТЬ РЕШЕНИЕ] плагин/модуль для поиска по тэгам 31 мая 2018 в 18:11


Val

спасибо. Решение же простое.
подправил template для search — и вот оно.
спасибо. Проблема закрыта
#3 [ЕСТЬ РЕШЕНИЕ] плагин/модуль для поиска по тэгам 31 мая 2018 в 17:59


К поиску по тегам ещё бы добавить главную страницу компонента тегов site.ru/tags со списком всех тегов сайта и аякс-фильтром по нему, как сделано в Админке — вот это было бы дело! 😊
P.S. @AVC, простите, что влез в Вашу тему со своей давней хотелкой. Не удержался. 😊

WebMan

так это тоже было бы классно
#1 [ЕСТЬ РЕШЕНИЕ] плагин/модуль для поиска по тэгам 29 мая 2018 в 12:23
На главной у меня есть общий поиск,
но необходим отдельный поиск именно по тэгам.
Есть ли такой модуль?
Рассмотрю и платное решение.
#5 InstantVideo2 - Предложения 29 мая 2018 в 12:13
— Поиск по плейлистам хорошо бы добавить. А то пришлось решать полуколхозным методом.
— Изменить / доработать менюшку работы с плейлистом при редактировании/загрузке ролика. Она сейчас практически никакая.
Если плейлистов много — замучаешься искать. Приходится опять колхозить.
#6 [ЕСТЬ РЕШЕНИЕ] поиск в iVideo2 29 мая 2018 в 12:09
да! :)
спасибо. Я протормозил.

P.S. см. мою аватарку.
#1 [ЕСТЬ РЕШЕНИЕ] поиск в iVideo2 28 мая 2018 в 12:36
Поиск ищет только в названиях роликов.
Есть ли возможность его расширить, чтобы он искал слова и в описании ролика?

Если это платно — сколько это может стоить?
#8 плейлисты в компоненте iVideo2 17 мая 2018 в 16:31
тут файл прикрепить нельзя, поэтому — на yandex.disk:
yadi.sk/d/8SsakJFE3W5GD6

там архив,
в файле настроено так, что поиском могут воспользоваться только залогиненные пользователи
#1 плейлисты в компоненте iVideo2 17 мая 2018 в 13:31
По просьбам выкладываю свой опыт изменения шаблона движка полуколхозным методом. :)
------------------------
При просмотре канала
/channels/имя_канала
показываются все ролики этого канала
сверху есть встроенная штатная менюшка:

в которой можно выбрать просмотр списка плейлистов этого канала.
Плейлисты можно только отсортировать. Если плейлистов немного — то этого, в целом, хватает.
А вот если плейлистов несколько сотен, и они будут прибывать (как в моем случае), то необходим поиск хотя бы по названию плейлиста.

Встроенный поиск в движке iCMS не ищет в названиях плейлистов. Да, и, в случае глобального поиска могут вылезти тысячи роликов — пойди, сыщи между ними плейлист.

Итак, шаблон, ответственный за вывод именно списка плейлистов находится здесь:
templates/default/controllers/channels/playlists.tpl.php
для начала придется добавить элементы интерфейса — поле ввода и кнопочку:
ищем (примерно 31 строка) код вида:
  1.  
  2. <div class="filter-panel gui-panel channel_sorting_panel">
  3. <div class="field">
  4. <div class="title"><?php echo LANG_SORTING; ?></div>
  5. <div class="control sort">
  6. <?php echo html_select('sort', $sortings, $sort); ?>
  7. </div>
  8. </div>
  9. </div>
  10.  
добавляем к нему свою часть, получается в итоге вот это:
  1.  
  2. <div class="filter-panel gui-panel channel_sorting_panel">
  3. <div class="field">
  4. <div class="title"><?php echo LANG_SORTING; ?></div>
  5. <div class="control sort">
  6. <?php echo html_select('sort', $sortings, $sort); ?>
  7. </div>
  8. </div>
  9. <?php if($user->is_admin){?>
  10. <div class="field" style="margin-left:10px">
  11. <div class="title">поиск</div>
  12. <div class="control search">
  13. <input type="text" value=""><button class="search">поиск</button>
  14. </div>
  15. </div>
  16. <?php } ?>
  17. </div>
  18.  
в данном случае, поле будет видно только администратору сайта:
  1.  
  2. <?php if($user->is_admin){?>
  3.  
если есть необходимость можно заменить на:
  1.  
  2. <?php if($user->is_logged){?>
  3.  
т.е. для всех залогиненных пользователей, или заменить на true для вообще всех.
С простейшим интерфейсом закончили, должна появиться вот такая формочка при просмотре страницы:

далее, сразу после этого кода вставляем этот кусок:
  1.  
  2. <?php
  3. $search_string = '';
  4. !empty($_GET['search']) && $user->is_logged && ($search_string=$_GET['search']);
  5. ?>
я решил не заморачиваться и поиск сделал через параметр GET['search'] (можно сделать через POST, чтобы не портить сортировку, например).
далее, вставляем JS для отработки интерфейса (также, сразу после кода выше):
  1. <script type="text/javascript">
  2. $(function(){
  3. $('div.control.search input[type=text]').val(<?php var_export($search_string);?>);
  4. $('div.control.search input[type=text]').keypress(function(e) {
  5. if(e.which == 13) {
  6. $(this).blur();
  7. $('div.control.search button.search').focus().click();
  8. }
  9. });
  10. $('div.control.search button.search').on('click', function(){
  11. window.location.href = '?search=' + $('div.control.search input[type=text]').val();
  12. });
  13. });
  14. </script>
  15.  
ловим Enter на поле ввода (пустое тоже надо — когда хочется "посмотреть всех"), кнопочка для дублирования — вдруг кому-то мышкой нажать захочется.
По клику перезагружает всю страницу с параметром search=чего_ищем.

С обработкой интерфейса закончили, теперь перейдем к фильтрации плейлистов.
Чуть ниже по оригинальному коду идет строка:
  1.  
  2. <div class="playlists_list">
  3. <?php if($playlists) { ?>
  4.  
$playlists — в нем уже есть массив плейлистов этого выбранного канала.
Но этот плейлист содержит только часть от всех (вывод постраничный). А значит, придется все плейлисты (этого канала, или вообще все, как в моем случае) выдергивать заново.
( движок ранее плейлисты записал в переменную $playlists (она глобальная) в одном из классов, там же отсортировал и обрезал "пагинатором" по переменным $page, $perpage и $total )
Формируем свой $playlists
Для этого сразу после вышуеказанного оригинального кода вставляем свой:
  1. <?php.
  2. if ( trim($search_string) ) {
  3. $playlists = cmsCore::getModel('video')->getPlaylists();
  4. $playlists = array_filter( $playlists, function($a) use ($search_string) {
  5. return strpos( mb_strtolower($a['title']), mb_strtolower($search_string) )===false ? false:true;
  6. });
  7. $total = count($playlists);
  8. $perpage = $total;
  9. $page = 1;
  10. }
  11. ?>
  12.  
( насколько я помню, "use" уже с PHP 5.3). И mb_ модуль конечно, должен быть включен в PHP (ну это понятно, что у вас UTF-8).
В данном случае, я беру вообще все плейлисты
  1. cmsCore::getModel('video')->getPlaylists()
У меня всего один канал, а вот для плейлистов именно выбранного канала придется вызывать filter по номеру канала $channel_id .
Далее, по коду: оставляем в массиве только те элементы, которые содержат в ['title'] необходимое слово (в $search_string).
для пагинатора меняем $total,$ perpage и $page — пусть все найденные выводятся валом в одну страницу — их в общем случае не будет много. Короче, пагинатор таким образом выключаем :)

Если $search_string пустой, то $playlists остается оригинальным (каким его построил движок), и все будет как обычно.
Это все.

В данном примере я не рассматривал фильтрацию по номеру канала, не рассматривал проблему исключения остальных параметров GET при поиске, не рассматривал CSS стили для интерфейса кнопок и поля.

Самого движка я не знаю, лишь примерно представляю как он работает. Доку еще толком не читал, занимаюсь iCMS совсем недавно.

P.S. перед изменением шаблона, скопируйте его оригинал.
#10 [ЕСТЬ РЕШЕНИЕ] компонент iVideo2 16 мая 2018 в 21:40
сделал я поиск по плейлистам.
если кому интересно, могу описать.
#11 [ЕСТЬ РЕШЕНИЕ] компонент iVideo2 16 мая 2018 в 12:35


Поиска по имени плейлиста нет.
Какая проблема?

Fuze

"поиска по имени плейлиста нет"
это и есть проблема.
я понял, поиска нет.
Ладно, счас сделаем.
#1 компонент iVideo2 16 мая 2018 в 12:06
при добавлении ролика, и/или при его редактировании, есть мелкая (?) менюшка для добавления его в соответствующий плейлист

менюшка эта какая-то сырая и видать, сделана наспех. В ней нет никаких инструментов.
во-первых, когда плейлистов в канале очень много, становится очень трудно найти нужный, и вообще, увидеть, может он уже отмечен.
нет сортировки, нет поиска.
Я немного подшаманил в шаблоне, сделал чуть пошире слой, сделал сортировку (может потом поиск сделаю, но сортировки пока хватает). И сделал вывод отмеченных плейлистов наверх списка:


где это правится:
templates/default/controllers/video/list_playlists.tpl.php
строка 17:
  1. <?php foreach($playlists as $playlist){ ?>
меняем на:
  1. <?php usort($playlists,function($a,$b){return strcmp($a['title'],$b['title']);}); foreach($playlists as $playlist){ ?>
это будет сортировка списка по алфавиту заголовков.
далее, правим JS.
сделаем чуть пошире слой со списком, для этого укажем свойство:
(строка 41 в неименованной функции, можно прямо первой строчкой)
  1. $('#addto_playlist_wrap').css('max-width','600px');
далее, строка 65 в этой же неименованной функции.
вставляем следующие строчки:
  1.  
  2. var t = $('#playlists_list').find('li.selected_list');
  3. if(t.length) $('#playlists_list').find('li:first').after(t);
  4.  
это перенесет строки с отмеченными плейлистами наверх (если они есть)

вроде все.
#1 [ЕСТЬ РЕШЕНИЕ] компонент iVideo2 16 мая 2018 в 11:42
каталог видеоканалов -> имя канала -> плейлисты канала

если каналов очень много, то появляется проблема в поиске по имени.
Общий поиск ищет только в названии ролика

Может в настройках где-то надо поставить соответствующую опцию, но я не нашел, где.

Есть вообще такая проблема, или я просто не докопался до решения?
#14 [ЕСТЬ РЕШЕНИЕ] Файл конфигурации темы недоступен для записи 22 марта 2018 в 17:45

Все настройки шаблона сохраняются в YAML формате в файле по пути /system/config/theme_НАЗВАНИЕ-ШАБЛОНА.yml если файла нет, то директория /system/config/ должна быть доступна для записи

Fuze

спасибо. Проблема решена.
#1 [ЕСТЬ РЕШЕНИЕ] Файл конфигурации темы недоступен для записи 22 марта 2018 в 16:40

все права на директории прописаны правильно, chown и chmod все сделал как в инструкции.
CMS только запустил. Все вроде работает — полез изменить лого. Тут же обнаружил, что вообще в этой вкладке изменить не могу.
Разумеется, я — админ.
изменял права на файлы на 666
все равно так же.

что это может быть и кто с таким сталкивался?
И как называется этот файл? Может такое быть, что его вообще нет? Что тогда делать? Вроде ничего не удалял.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.