Подскажите, каким образом можно вставить в текст определенного (только одного, пусть даже по ID) HTML блока
результат выполнения PHP файла, либо целиком статичного файла (который будет по крону изменяться PHP кодом)
?
Мне необходимо периодически изменять текст в определенном HTML блоке, который показывается на сайте.
AVC
0
Репутация
0
Рейтинг
Val
спасибо. Решение же простое.
подправил template для search — и вот оно.
спасибо. Проблема закрыта
К поиску по тегам ещё бы добавить главную страницу компонента тегов site.ru/tags со списком всех тегов сайта и аякс-фильтром по нему, как сделано в Админке — вот это было бы дело! 😊
P.S. @AVC, простите, что влез в Вашу тему со своей давней хотелкой. Не удержался. 😊
так это тоже было бы классно
На главной у меня есть общий поиск,
но необходим отдельный поиск именно по тэгам.
Есть ли такой модуль?
Рассмотрю и платное решение.
но необходим отдельный поиск именно по тэгам.
Есть ли такой модуль?
Рассмотрю и платное решение.
— Поиск по плейлистам хорошо бы добавить. А то пришлось решать полуколхозным методом.
— Изменить / доработать менюшку работы с плейлистом при редактировании/загрузке ролика. Она сейчас практически никакая.
Если плейлистов много — замучаешься искать. Приходится опять колхозить.
— Изменить / доработать менюшку работы с плейлистом при редактировании/загрузке ролика. Она сейчас практически никакая.
Если плейлистов много — замучаешься искать. Приходится опять колхозить.
да! :)
спасибо. Я протормозил.
P.S. см. мою аватарку.
спасибо. Я протормозил.
P.S. см. мою аватарку.
Поиск ищет только в названиях роликов.
Есть ли возможность его расширить, чтобы он искал слова и в описании ролика?
Если это платно — сколько это может стоить?
Есть ли возможность его расширить, чтобы он искал слова и в описании ролика?
Если это платно — сколько это может стоить?
тут файл прикрепить нельзя, поэтому — на yandex.disk:
yadi.sk/d/8SsakJFE3W5GD6
там архив,
в файле настроено так, что поиском могут воспользоваться только залогиненные пользователи
yadi.sk/d/8SsakJFE3W5GD6
там архив,
в файле настроено так, что поиском могут воспользоваться только залогиненные пользователи
По просьбам выкладываю свой опыт изменения шаблона движка полуколхозным методом. :)
------------------------
При просмотре канала
/channels/имя_канала
показываются все ролики этого канала
сверху есть встроенная штатная менюшка:
в которой можно выбрать просмотр списка плейлистов этого канала.
Плейлисты можно только отсортировать. Если плейлистов немного — то этого, в целом, хватает.
А вот если плейлистов несколько сотен, и они будут прибывать (как в моем случае), то необходим поиск хотя бы по названию плейлиста.
Встроенный поиск в движке iCMS не ищет в названиях плейлистов. Да, и, в случае глобального поиска могут вылезти тысячи роликов — пойди, сыщи между ними плейлист.
Итак, шаблон, ответственный за вывод именно списка плейлистов находится здесь:
templates/default/controllers/channels/playlists.tpl.php
для начала придется добавить элементы интерфейса — поле ввода и кнопочку:
ищем (примерно 31 строка) код вида:
добавляем к нему свою часть, получается в итоге вот это:
в данном случае, поле будет видно только администратору сайта:
если есть необходимость можно заменить на:
т.е. для всех залогиненных пользователей, или заменить на true для вообще всех.
С простейшим интерфейсом закончили, должна появиться вот такая формочка при просмотре страницы:
далее, сразу после этого кода вставляем этот кусок:
я решил не заморачиваться и поиск сделал через параметр GET['search'] (можно сделать через POST, чтобы не портить сортировку, например).
далее, вставляем JS для отработки интерфейса (также, сразу после кода выше):
ловим Enter на поле ввода (пустое тоже надо — когда хочется "посмотреть всех"), кнопочка для дублирования — вдруг кому-то мышкой нажать захочется.
По клику перезагружает всю страницу с параметром search=чего_ищем.
С обработкой интерфейса закончили, теперь перейдем к фильтрации плейлистов.
Чуть ниже по оригинальному коду идет строка:
$playlists — в нем уже есть массив плейлистов этого выбранного канала.
Но этот плейлист содержит только часть от всех (вывод постраничный). А значит, придется все плейлисты (этого канала, или вообще все, как в моем случае) выдергивать заново.
( движок ранее плейлисты записал в переменную $playlists (она глобальная) в одном из классов, там же отсортировал и обрезал "пагинатором" по переменным $page, $perpage и $total )
Формируем свой $playlists
Для этого сразу после вышуеказанного оригинального кода вставляем свой:
( насколько я помню, "use" уже с PHP 5.3). И mb_ модуль конечно, должен быть включен в PHP (ну это понятно, что у вас UTF-8).
В данном случае, я беру вообще все плейлисты
У меня всего один канал, а вот для плейлистов именно выбранного канала придется вызывать filter по номеру канала $channel_id .
Далее, по коду: оставляем в массиве только те элементы, которые содержат в ['title'] необходимое слово (в $search_string).
для пагинатора меняем $total,$ perpage и $page — пусть все найденные выводятся валом в одну страницу — их в общем случае не будет много. Короче, пагинатор таким образом выключаем :)
Если $search_string пустой, то $playlists остается оригинальным (каким его построил движок), и все будет как обычно.
Это все.
В данном примере я не рассматривал фильтрацию по номеру канала, не рассматривал проблему исключения остальных параметров GET при поиске, не рассматривал CSS стили для интерфейса кнопок и поля.
Самого движка я не знаю, лишь примерно представляю как он работает. Доку еще толком не читал, занимаюсь iCMS совсем недавно.
P.S. перед изменением шаблона, скопируйте его оригинал.
------------------------
При просмотре канала
/channels/имя_канала
показываются все ролики этого канала
сверху есть встроенная штатная менюшка:
в которой можно выбрать просмотр списка плейлистов этого канала.
Плейлисты можно только отсортировать. Если плейлистов немного — то этого, в целом, хватает.
А вот если плейлистов несколько сотен, и они будут прибывать (как в моем случае), то необходим поиск хотя бы по названию плейлиста.
Встроенный поиск в движке iCMS не ищет в названиях плейлистов. Да, и, в случае глобального поиска могут вылезти тысячи роликов — пойди, сыщи между ними плейлист.
Итак, шаблон, ответственный за вывод именно списка плейлистов находится здесь:
templates/default/controllers/channels/playlists.tpl.php
для начала придется добавить элементы интерфейса — поле ввода и кнопочку:
ищем (примерно 31 строка) код вида:
<div class="filter-panel gui-panel channel_sorting_panel"> <div class="field"> <div class="title"><?php echo LANG_SORTING; ?></div> <div class="control sort"> <?php echo html_select('sort', $sortings, $sort); ?> </div> </div> </div>
<div class="filter-panel gui-panel channel_sorting_panel"> <div class="field"> <div class="title"><?php echo LANG_SORTING; ?></div> <div class="control sort"> <?php echo html_select('sort', $sortings, $sort); ?> </div> </div> <?php if($user->is_admin){?> <div class="field" style="margin-left:10px"> <div class="title">поиск</div> <div class="control search"> <input type="text" value=""><button class="search">поиск</button> </div> </div> <?php } ?> </div>
<?php if($user->is_admin){?>
<?php if($user->is_logged){?>
С простейшим интерфейсом закончили, должна появиться вот такая формочка при просмотре страницы:
далее, сразу после этого кода вставляем этот кусок:
<?php $search_string = ''; ?>
далее, вставляем JS для отработки интерфейса (также, сразу после кода выше):
<script type="text/javascript"> $(function(){ $('div.control.search input[type=text]').keypress(function(e) { if(e.which == 13) { $(this).blur(); $('div.control.search button.search').focus().click(); } }); $('div.control.search button.search').on('click', function(){ window.location.href = '?search=' + $('div.control.search input[type=text]').val(); }); }); </script>
По клику перезагружает всю страницу с параметром search=чего_ищем.
С обработкой интерфейса закончили, теперь перейдем к фильтрации плейлистов.
Чуть ниже по оригинальному коду идет строка:
<div class="playlists_list"> <?php if($playlists) { ?>
Но этот плейлист содержит только часть от всех (вывод постраничный). А значит, придется все плейлисты (этого канала, или вообще все, как в моем случае) выдергивать заново.
( движок ранее плейлисты записал в переменную $playlists (она глобальная) в одном из классов, там же отсортировал и обрезал "пагинатором" по переменным $page, $perpage и $total )
Формируем свой $playlists
Для этого сразу после вышуеказанного оригинального кода вставляем свой:
<?php. $playlists = cmsCore::getModel('video')->getPlaylists(); }); $perpage = $total; $page = 1; } ?>
В данном случае, я беру вообще все плейлисты
cmsCore::getModel('video')->getPlaylists()
Далее, по коду: оставляем в массиве только те элементы, которые содержат в ['title'] необходимое слово (в $search_string).
для пагинатора меняем $total,$ perpage и $page — пусть все найденные выводятся валом в одну страницу — их в общем случае не будет много. Короче, пагинатор таким образом выключаем :)
Если $search_string пустой, то $playlists остается оригинальным (каким его построил движок), и все будет как обычно.
Это все.
В данном примере я не рассматривал фильтрацию по номеру канала, не рассматривал проблему исключения остальных параметров GET при поиске, не рассматривал CSS стили для интерфейса кнопок и поля.
Самого движка я не знаю, лишь примерно представляю как он работает. Доку еще толком не читал, занимаюсь iCMS совсем недавно.
P.S. перед изменением шаблона, скопируйте его оригинал.
сделал я поиск по плейлистам.
если кому интересно, могу описать.
если кому интересно, могу описать.
Поиска по имени плейлиста нет.
Какая проблема?
"поиска по имени плейлиста нет"
это и есть проблема.
я понял, поиска нет.
Ладно, счас сделаем.
при добавлении ролика, и/или при его редактировании, есть мелкая (?) менюшка для добавления его в соответствующий плейлист
менюшка эта какая-то сырая и видать, сделана наспех. В ней нет никаких инструментов.
во-первых, когда плейлистов в канале очень много, становится очень трудно найти нужный, и вообще, увидеть, может он уже отмечен.
нет сортировки, нет поиска.
Я немного подшаманил в шаблоне, сделал чуть пошире слой, сделал сортировку (может потом поиск сделаю, но сортировки пока хватает). И сделал вывод отмеченных плейлистов наверх списка:
где это правится:
templates/default/controllers/video/list_playlists.tpl.php
строка 17:
меняем на:
это будет сортировка списка по алфавиту заголовков.
далее, правим JS.
сделаем чуть пошире слой со списком, для этого укажем свойство:
(строка 41 в неименованной функции, можно прямо первой строчкой)
далее, строка 65 в этой же неименованной функции.
вставляем следующие строчки:
это перенесет строки с отмеченными плейлистами наверх (если они есть)
вроде все.
менюшка эта какая-то сырая и видать, сделана наспех. В ней нет никаких инструментов.
во-первых, когда плейлистов в канале очень много, становится очень трудно найти нужный, и вообще, увидеть, может он уже отмечен.
нет сортировки, нет поиска.
Я немного подшаманил в шаблоне, сделал чуть пошире слой, сделал сортировку (может потом поиск сделаю, но сортировки пока хватает). И сделал вывод отмеченных плейлистов наверх списка:
где это правится:
templates/default/controllers/video/list_playlists.tpl.php
строка 17:
<?php foreach($playlists as $playlist){ ?>
далее, правим JS.
сделаем чуть пошире слой со списком, для этого укажем свойство:
(строка 41 в неименованной функции, можно прямо первой строчкой)
$('#addto_playlist_wrap').css('max-width','600px');
вставляем следующие строчки:
var t = $('#playlists_list').find('li.selected_list'); if(t.length) $('#playlists_list').find('li:first').after(t);
вроде все.
каталог видеоканалов -> имя канала -> плейлисты канала
если каналов очень много, то появляется проблема в поиске по имени.
Общий поиск ищет только в названии ролика
Может в настройках где-то надо поставить соответствующую опцию, но я не нашел, где.
Есть вообще такая проблема, или я просто не докопался до решения?
если каналов очень много, то появляется проблема в поиске по имени.
Общий поиск ищет только в названии ролика
Может в настройках где-то надо поставить соответствующую опцию, но я не нашел, где.
Есть вообще такая проблема, или я просто не докопался до решения?
Все настройки шаблона сохраняются в YAML формате в файле по пути /system/config/theme_НАЗВАНИЕ-ШАБЛОНА.yml если файла нет, то директория /system/config/ должна быть доступна для записи
спасибо. Проблема решена.
все права на директории прописаны правильно, chown и chmod все сделал как в инструкции.
CMS только запустил. Все вроде работает — полез изменить лого. Тут же обнаружил, что вообще в этой вкладке изменить не могу.
Разумеется, я — админ.
изменял права на файлы на 666
все равно так же.
что это может быть и кто с таким сталкивался?
И как называется этот файл? Может такое быть, что его вообще нет? Что тогда делать? Вроде ничего не удалял.