Организация показа виджетов
02.03.2011Голосование
| Тип | Пожелание |
| Состояние | Исправлено |
| Приоритет | Средний |
| Версия | 4.32 |
| Система | * |
| Воспроизводимость | Нет |
| Автор | Константин |
| Исполнитель | Блоголётчик |
Мысли по организации работы стандарных и Custom Widget'ов.
Поясню на примере Custom Widget'ов. Добавляю новый виджет с конкретным темплейтом
View - Custom widget - Widget template: Posts(Archives-Categories-Comments)
, однако они видны не только на тематических страницах, а везде, кроме главной. Т.е. по сути это все тоже добавляется в Default.
Еще View - Custom widget - Widget template: ... не хватает темплейта Home Page, т.е. добавить виджет только на главную невозможно даже теоретически. А это не есть здорово, т.к. очень актуально для
размещения ссылок без "сквозняков", общей рекламы, да и многого другого.
Взять хотя бы чисто дизайнерский аспект. На главной, как правило, показывается 10-15 постов и страница длинная, поэтому длинный сайдбар о многих виджетах вида не только не портит, но и заполняет
пустое место какой-то информацией, которую вебмастер хочет довести до пользователя. Ну и конечно же он выполняет свою естественную функцию - навигация по сайту. И для людей, и для поисковиков. А вот
посты обычно гораздо короче, и если не убрать лишние виджеты, то сайдбар "выпирает" далеко вниз за тело поста и дизайн портит основательно.
В разрезе дупликейт контента сквозные виджеты тегов, архивов, последних постов тоже не есть гуд, и их функциональность в плане удобства навигации опять-таки довольно сомнительна.
Еще не совсем назначения страницы View - Default views. По первому впечатлению она как бы дублирует (ограничивает? дополняет?.. не очень понятны приоритеты...) установки из View - Custom widget -
Widget template:... и View - Widgets. По логике определение всех стандартов темплейтов должно бы быть в одном месте. И в разбивке суб-темплейтов должны бы присутствовать конкретизированные настройки
для каждого вида темплейта, а не стандартный набор из трех позиций... ибо какой тогда смысл в куче вариантов настроек в других меню? В моем пользовательском видении это представляется примерно
так:
- свести все, что касается настроек вида вывода сайта, на одну страницу. Т.е. View - Default views, View - Custom widget - Widget template и View - Widgets
- для View - Default views сделать варианты:
Home page: Home page | Default
Menu: Menu | Home page | Default
Category: Category | Home page | Default
Tags: Tags | Home page | Default
Archives: Archives | Home page | Default
Sitemap: Sitemap | Home page | Default
Admin Panel: Admin Panel | Default
или же вообще удалить это звено из цепочки формирования вида (формата) вывода. Пусть бы все определялось настройками из View - Widgets и View - Custom widget - Widget template:... , сведенными на одну страницу.
И еще надо бы иметь возможность привязки наборов виджетов к конкретной категории(ям), т.е при выборе темплейта Categories появлялось подменю со списком имеющихся категорий и возможностью выбора, в какой(их) категории(ях) должен(ны) показываться выбранный виджет(ы). Это было бы просто несравненной и эксклюзивной "фишкой" движка, не имеющей аналогов нигде (отдельный софт класса ad-servers в расчет не берется, не каждый потянет его настройку и поддержку, да и ориентировано это на огромные объемы и мульти-пользование). Это не для блондинок, естественно. Но кто понимает, тот оценит. Очень высоко оценит.
Комментарии (32) на запись “Организация показа виджетов”
Оставить комментарий
Блоголетчик отвечал:
Что касается шаблонов для кастомных виджетов - это означает только шаблон виджета, не более. Где он появиться и в каком месте выбирается индивидуально. Твой вопрос моэжет состоял в том, что желательно иметь несколько виджетов, например категорий, и для каждого такого виджета иметь индивидуальные настройки. Это теоритически возможно.
По поводу выбора видов - придумано для новых страниц. Например вид для новых записей, чтобы вместо вида по умолчанию устанавливался какой либо другой вид. Как раз там перечислены такие сраницы: записи, меню, метки, категории... Для каждой персональной страницы (пост, меню...) в редакторах можно задавать индивидуальный вид.
Твой вопрос может состоял в том, что желательно иметь несколько виджетов, например категорий, и для каждого такого виджета иметь индивидуальные настройки
Если точнее, то суть предложения в том, чтобы для определенных групп (или видов) страниц - Home page, Categories, Posts, Sitemap, Archives, Tags, статических страниц (Меню то бишь) - можно было формировать индивидуальный набор виджетов. Смысл этого действа "для гурманов" я и описывал выше.
Уже сейчас можно сделать набор виджетов только для главной - выставить галочку свой сайдбар и в нем нкидать своих виджетов. После выставления галочки все виджеты копируются из вида по умолчанию. И это же касается всех остальных видов. Вид сейчас - это тема + виджеты. Больше там ничего нет.
Про остальное немного подумаю, чтобы ответить
Ну так это уже делается - вид - виды по умолчанию.
По-моему, дело в том что вы смотрите английскую админку. нет интерфейса снизу вверх - из редактирования виджетов невозможно выбрать виды для показа. Там выбирается шаблон этого виджета.
Вид для страниц создается сверху вниз:
Создать вид. Назначить его по-умолчанию (или индивидуально) для нужного типа страниц. Создать виджеты. Добавить их в нужный вид. Расставить по порядку.
ЗЫ. И это не несравненная фишка. Это норма. Все-таки Блоголет - cms, а не сателитогенератор и не движок для новостной ленты.
ЗЫ2. а можно ли прямо сейчас сделать некеширумый виджет или некешируемый сайтбар - чтобы php в нем всегда отрабатывался - или это требует доработки движка?
Philipp спрашивал:
а можно ли прямо сейчас сделать некеширумый виджет или некешируемый сайтбар - чтобы php в нем всегда отрабатывался - или это требует доработки движка?
Так оно вроде бы и сейчас работает. Я ставлю в кастом-виджеты ротаторы рекламы через include ("./rot/rotator.php") - нормально отрабатывает.
Philipp отвечал:
Уже сейчас можно сделать набор виджетов только для главной...
Да, и для админки тоже. Т.е. сейчас по сути уже можно сформировать два вида - главная страница и все остальные. Идея в том, чтобы эту возможность распостранить и на на остальные типы страниц (видов), как я и писал выше.
Блоголетчик отвечал:
из редактирования виджетов невозможно выбрать виды для показа. Там выбирается шаблон этого виджета.
Это и в английской админке есть. Но наборов виджетов все равно остается только два - главная страница и все остальные.
Объясню подробнее на абстактном примере. Есть категории Новости, Велосипеды, Холодильники, Отдых. И главная страница. Я хочу, чтобы видеты показывались так:
- на главной странице - последние посты (recent posts то бишь; кстати, хотелось бы иногда настраивать количество выводимых постов и название виджета), категории, ссылки, архив, мета, кастом-виджет1 с моими ссылками и кастом-виджет2 с рекламой форекса, теги;
- при переходе в кат. Новости - последние посты, категории, кастом-виджет3 с моими ссылками и кастом-виджет4 с рекламой турбазы;
- при переходе в кат. Велосипеды - категории, кастом-виджет5 с моими ссылками и кастом-виджет6 с рекламой веломагазина;
- при переходе в кат. Холодильники - категории, кастом-виджет7 с моими ссылками и кастом-виджет8 с рекламой холодильников;
- при переходе в кат. Отдых - категории, кастом-виджет9 с моими ссылками и кастом-виджет10 с рекламой рыболовных товаров;
- на страницах постов из категории Новости - категории, кастом-виджет11 с рекламой соседнего магазина;
- на страницах постов из категории Велосипеды - категории, кастом-виджет12 с рекламой велозапчастей;
- на страницах постов из категории Холодильники - категории, кастом-виджет13 с рекламой новой модели холодильника;
- на страницах постов из категории Отдых - категории, кастом-виджет14 с рекламой лодок.
И вот если все это можно организовать средствами админки, то тогда это и будет несравненной фишкой.
Количество наборов виджетов == количеству видов. Виды можно создавать.
Виды по категории - хорошо, а что когда категорий несколько? Устанавливать им приоритеты? (Сортировка - тоже приоритет).
Если их виджета доступны данные поста - в него ставится условие отрабатываться только при...
Константин пишет:
Джумла, Друпал, наверняка еще множество.А с какой стороны нужен некешируемый виджет? Они были всегда изначально. ЕЕсли вставить просто php код, то он вставляется обычным способом. Пример - виджет адсенса здесь, его нет в админке и на страницах поиска. В сам текст виджета - это javascript адсенса заключенный в php.
Если интересует кеширование виджетов с точки зрения разработчика плагина-виджета, то есть несколько типов кееширования. Примеры некешируемых виджетов с разным типом кеширования: свежие комменты, трекер ключевиков, ссылки сапе.
Про индивидуальные виджеты - нет ведь никаких проблем создатьлюбое количество видов: ссылка вперед таблицей всех видов, появится форма добавления. Для каждой рубрики можно указать свой вид. Но если исходить из формулировки задачи, то скорее требуется виджет для класса, пример - виджет подменю, который пможет появлятся только на страницах меню.
В движкке помимо меню есть еще сттические страницы, это отдельная малоизвесттная сущность. Простые страницы,, которые нигде не появляются - ни в меню, ни в постах. Желательно небольшое количество текста на подобных страницах, так как все они хранятся вместе
Блоголётчик пишет:
Мне он пока не нужен.
Исключительно ради вопроса можно ли из него определить категорию поста - так же задача стоит. То же про текст до-после поста. Если просто - можно написать простой плагин для разброса рекламы как хочется Константину.
Да, без проблем: в виджете php код проеверки, что страница является рубрикой:
if (litepublisher::$urlmap->context instanceof tcategories) {
...
}
Philipp отвечал:
Количество наборов виджетов == количеству видов. Виды можно создавать.
Верно. Но... создаю вид, ставлю его в дефолт вьюс, и все равно вижу на заданной странице набор из дефолт.
Philipp отвечал:
Виды по категории - хорошо, а что когда категорий несколько? Устанавливать им приоритеты? (Сортировка - тоже приоритет).
Если их виджета доступны данные поста - в него ставится условие отрабатываться только при...
Сортировка - как она определена при создании набора виджетов, как сейчас и есть. А доступ к данным поста из виджета не нужен, при многих категориях условия такие:
если ([вид страницы=пост] и [категория=отдых]) то [показывать "виджеты вида пост" плюс "виджеты для постов категории "отдых"" согласно установленным в админке правилам сортировки]
Константин пишет:
А это странно. На 4.32 у меня работает. Можно пошагово?
А, все правильно. По умолчанию - это и есть по умолчанию, для новых записей. А вам надо в настройках конкретной рубрики сменить вид.
А при таком раскладе инструмент массовой смены видов для записей был бы полезен, да. Теперь хоть понятно в чем вопрос. Вот только для этого придется переписывать управлялку записями скорее всего, писать что-то типа стандартного List with filters and bulk actions.
Выбранные виды для классов по умолчанию действуют только для новых постов/меток... делать специнструмент для масовой смены вида не считаю нужным: вопрос решается одной строкой на php, сразу приведу пример для постов (скрипт выполнить в сервис/запуск):
litepublisher::$db->table = 'posts';
litepublisher::$db->update('idview = 3', 'id > 0');
для бд версии конечно
Видимо, надо добавить где-то доку по работе с видами, в которой указать, что для того, чтобы виды работали, шаблоны видов в дефолт вьюс надо определять на стерильно чистом блоге, до создания категорий и постов, ибо в обратную сторону это не работает.
То есть чего из всего вышесказанного нет, так это виджетов, привязанных к связке "пост+категория"...
Ну потмимо массового изменения вида, вид всегда можно задать индивидуально: в редакторе поста, меток/рубрик, меню есть вкладка вид, где можно сменить вид. Для бд версии достаточно приведенного скрипта. Возможно сделаю плагин групповой смены вида.
Интерфейсом смогу заняться после выпуска нового релиза с исправлениями (предпологаю сегодня)
Перечитал комментарий: То есть чего из всего вышесказанного нет, так это виджетов, привязанных к связке "пост+категория"..
А вот это пожалуйста подробнее, такак это не относится к видам и порядку виджетов. Как пример - виджет похожих постов с персональным контентом для каждого поста. Какой нужен виджет? Который был бы только в постах и рубриках? Контент виджета везде одинаков или каждый раз вычисляется? У одной задачи могут быть несколько решений, подойдет самый малоресурсовемкий
Как я это вижу.
Целевые ссылки, созвучные тематике рубрики. Например, в рубрике Рыбалка ссылки только на сайты о ней и об отдыхе на природе, туризме и т.д. То же касательно рекламы - только удочки, лески, лодки, палатки... Это не только для поисковиков, по таким ссылкам в нормальном месте и люди охотно ходят. Что-то вроде мини-адсенса... :)
Исключительно страницы постов. Все посты в заданной категории.
Обыкновенный кастомный виджет, с единожды определенным контентом. Если кто-то и захочет там что-то ротировать, то это проблемы личные и решаются простеньким скриптом в несколько строчек, благо движок это позволяет. Сам так делаю при нужде. В движок тут городить больше ничего не стоит.
Для появления виджета в садбаре должны выполняться два условия одновременно:
если
категория = "заданная"
и
темплейт = "пост" (т.е. страница является именно страницей поста)
На странице добавления кастомных виджетов мне, кроме выпадающего меню темплейтов, видится рядом еще аналогичное меню со списком категорий и возможностью выбора по клику мыши (или Ctrl+Click для множественного выбора) - в какой категории(ях) нужно показывать виджет. Чтобы была привязка к одной ИЛИ нескольким категориям.
Попутное замечание: темплейт "пост" в дефолт вьюс и категории должны быть определены ДО создания такого виджета.
В идеале можно бы продублировать возле меню "добавить категорию", но без ухода с этой страницы. Всплывающее окно 600х400, например. Только желательно без ява-скриптов, чтобы блокировщики рекламы не блокировали. И еще добавить подсказку-напоминание перед меню выбора категорий, примерно так:
ПЕРЕД созданием "привязанного" виджета необходимо:
* в дефолт вьюс задать темплейт для поста
* определить ВСЕ категории будушего сайта (ибо "обратки" не будет, как я понимаю)
* при создании выбрать для виджета темплейт "ваш_темплейт_поста", заданный вами в дефолт вьюс
Базовый набор виджетов для вида "пост" вы можете задать в View - "ваш_темплейт_поста", заданный вами в дефолт вьюс
- Порядок в сайдбаре
Ниже меню выбора категорий, просто строчка
Номер в сайдбаре (слева или сверху): [окно для ввода цифры, 2 знака, по дефолту -99]
Если заданное число больше числа виджетов в сайдбаре - виджет ставится в конец.
c. Формы ввода с подсказкой можно спрятать в сворачивающееся окошко (Inline) с анкором "Привязать к категории", по дефолту свернуто.
6. Формирование сайдбара.
Видимо, с учетом возможной привязки кастомных виджетов при окончательной сборке сайдбара должна учитываться возможная вставка дополнительного виджета. Т.е. если номер из п.5б меньше числа виджетов в сайдбаре, то "привязанный" виджет вставляется на свое место, а номера последующих сдвигаются на единицу.
Вот такой алгоритм мне представляется. Почти ТЗ случилось... Разошелся, як Рыгоравич в быдло-ящике... :))
Будет ли оно плагином с настройкой на странице плагинов (или через добавившийся после включения плагина пункт меню) - я лично принципиальной разницы не вижу.
По поводу сложности в понимании взаимосвязей ответил в http://litepublisher.ru/feature/nebolshaya-reorganizaciya-adminki.htm
, чтобы в кучу все не валить. При такой организации меню настроек и при добавлении предложенного выше никаких сложностей в понимании не будет. Хотя плагин, "внедряющийся" в виде дополнительных пунктов в общее меню настроек, идеологически правильнее. Наверное, даже лучше будет, чтобы тем, кому это не надо, лишний код в движок и информация в мозг не грузились.
- понять, надо ли оно ему
- и если да, то настроить, в постах какой категории должен показываться виджет...
Остальное в общих настройках видов/шаблонов проистекает, независимо от наличия этого виджета.
А документировать настройку видов все равно надо будет, там давно уже не 2 кнопки в 3 ряда... Ну а будет плагин или не плагин - доку я напишу, половина уже здесь написана... :)
Константин пишет:
У многих-многих людей посты во многих категориях. А еще есть вложенные категории...
Поэтому вариантов логики и их сочетаний - масса. Большинству- не нужно, меньшинству - решается строкой php в виджете.
А про строчку php поподробнее можно?
А вообще:
виджеты первой категории
+вижеты предков первой категории
виджеты всех категорий
+виджеты предков всех категорий
+ отсеивание дублей (предок может оказаться общим)
Если это делать как плагин
И ограничение на максимальное число
А в идеале - не только виджеты, но и текст вокруг тела поста.
Я всего лишь имел ввиду, что если есть категории РАЗ-ДВА-ТРИ, то виджет1 показывать только на страницах постов категории РАЗ, виджет2 показывать только на страницах постов категории ДВА и т.д. Вложенные категории (подкатегории) можно считать:
что все это верхняя категория (РАЗ-ДВА-ТРИ) - это уже не суть принципально;
в идеале - как полноценные автономные категории, тогда в условиях надо это задавать, разумеется, или как-то различать силами движка или плагина.
А показываться это будет в том виде, каковой установлен для текущей страницы.