Lex-DRL: Блог

Главные вкладки

поле Term reference: вместо названия термина отображать его картинку

5 марта 2014 в 21:59

Есть словарь "цвета". К нему добавлено поле для иконки-иллюстрации (цветные кляксы). Созданы термины, к ним добавлены соответствующие иконки.

Кроме того, есть другая сущность. В ней создано поле типа "ссылка на термин" (Term Reference), и оно залинковано на этот вот словарь.

Собственно, хочу сделать так, чтобы и в форме редактирования этой сущности, и на странице просмотра - вместо названий терминов ("зелёный", "жёлтый", "красный") отображались вот эти картинки-иконки, пропущенные через определённый "стиль изображения" (image style). В общем, надо сделать нечто вроде этого:

Есть ли готовый модуль для этого? И если нет - в какую сторону копать вообще?

Автоматическая конвертация картинок в пару превью-ссылка

27 мая 2013 в 16:01

Собственно, вопрос простой.
Вставляет юзер ссылку на картинку в теле ноды. Просто ссылкой, без тегов.
Есть ли модуль, который позволял бы автоматом (через фильтры текста) преобразовать каждую такую ссылку в пару: картинка-превью заданного формата + ссылка на полноразмерную картинку?
Желательно - в паре с модулем colorbox.

Views: выводить материалы, к которым нет доступа

23 мая 2013 в 23:23

Есть у меня вьюха, которая выводит ноды. Роль "гость" ограничена в правах, и не ко всем нодам имеет доступ (на чтение). Сейчас те ноды, к которым доступа нет - гостю даже в результатах вьюхи не вылазят.
Я хочу сделать так, чтоб во вьюхе-то, списком - все ноды отображались, но когда щёлкаешь по ссылке - 403. И, мол, давай, регистрируйся.
Как это сделать? Заставить views не отсеивать материалы, к которым у юзера нет прав.

Комментарии и ЛС а-ля VK

5 мая 2013 в 22:42

Есть ли какой-нибудь модуль, который позволяет автоматически обновлять страницы комментариев и личных сообщений, как на вконтакте?
Ну то есть, чтоб лента комментариев вела себя как скайп-чат. Один пользователь что-то написал/отредактировал - у всех оно сразу же отобразилось.

Формат ввода (input filter) для ссылок на видеохостинги (YouTube, Vimeo)

26 марта 2013 в 15:46

Под 6-ым Друпалом был замечательный модуль Embedded Media Field, с великолепным субмодулем Embedded Inline Media.
Под 7ым - emfield есть, а вот нужного субмодуля там нет.

Задача - типовая донельзя. Создать инпут фильтр, в котором ссылки на видео с популярных видеохостингов (youtube, vimeo, и т.п.) будут при просмотре конвертиться в инлайн-видео.
Очень желательно - чтобы при этом в CKeditor (модуль wysiwyg) оно отображалось не ссылкой, а превьюшкой плеера.

Полдня уже гуглю - безрезультатно.
Везде - только вопросы типа "куда в версии под семёрку делся Inline Media из модуля Embedded Media Field???", и везде - без ответа.
В версии emfield под семёрку есть только фильтр:
Convert Media tags to markup
This filter will convert [[{type:media... ]] tags into markup.

Не отображается ссылка "Просмотр регионов" в D7

27 августа 2012 в 23:23

Проблема

Внезапно обнаружил, что у меня по какой-то причине на странице блоков не отображается ссылка "просмотр регионов".
Прикрепляю 2 скрина - из тутора на подрупалим и из моего друпала.
Когда пропало - не знаю. С момента установки только 1 раз заходил на эту страницу - непосредственно после установки, чтоб глянуть регионы в новых темах.

Решение

Нужно включить в теме админки блок "Системная справка".

Как в Rules выставить значение поля для термина?

6 июля 2012 в 1:03

Вкратце:

Есть словарь таксономии. У него есть поле, позволяющее связывать термин с терминами в другом словаре. Поле со множественными значениями. Не могу понять, как задавать значения этого поля с помощью 2-ой версии Rules (для D7).

Подробно:

Есть словарь "Люди". К нему добавлено текстовое поле "Имена" с возможностью ввода нескольких значений.
Ещё к нему добавлено поле, позволяющее связывать создаваемого человека с терминами в другом словаре - "Типы". Тоже множественные значения.
Основная часть правила уже сделана: по каждому имени вычисляется, к какому типу относится человек. В правило добавлен список (list), в который возвращается массив ID-шников терминов ("Типы"), с которыми текущий термин надо связать.

Отображение поля терминов с помощью Views [D7]

13 мая 2012 в 17:46

Под 6-кой я пользовался одним своеобразным модулем Node reference views. Он позволял на странице ноды отображать поле nodereference через специально созданную для этого вьюшку. Таким образом, можно было выводить не только название ноды со ссылкой на неё, а всё что угодно (например, я активно выводил значения наиболее важных полей).

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

Аналог Conditional Fields для D7

24 марта 2012 в 14:19

Недавно поставил последнюю версию D7 - вроде как, уже очень стабильная.
Решил обновиться с 6-ки. Но встал вопрос по модулю Conditional Fields. Для 7-ой версии он всё ещё в стадии dev, и сколько ждать стабильной версии - неизвестно.
Полазив по ссылкам в блоке Related, нашёл альтернативу: Webform Conditional. Используется реже, зато уже есть 2-ая альфа под семёрку (из чего делаю вывод, что развивается он активнее).

Несколько цен у товаров в каталоге

4 апреля 2011 в 20:37

Имеется:

  • Каталог товаров (таксономия + Views)
  • Соответственно, тип материала "Товар"
  • Тип материала "завод"

Одно и то же изделие может производиться разными заводами. Поэтому на одно изделие может быть несколько разных цен. И, разумеется, количество заводов может меняться, и ни один завод не покрывает весь каталог. Так что получается связь "многие - ко многим".

Как можно реализовать это (выставление изделиям несколько цен с привязкой к заводам)?

Мне пока что не пришло в голову ничего лучше, чем сделать доп. тип материала - "цена" - с 3-мя полями:

  • Изделие (Node Reference)
  • Завод (Node Reference)
  • Цена

Ну и потом выводить все связанные с изделием цены через Views. Но это, мягко говоря, "через одно место".

Может, какие спец. модули есть? Напр., идеально подошёл бы модуль, позволяющий создавать в ноде комбинированные поля (каждое значение в произвольном поле "цена" состоит как бы из 2-х полей: собственно цена [число] - завод [node reference]).

[РЕШЕНО] неправильно работает if-else в PHP

24 июля 2010 в 23:04

Вопрос не столько по друпалу, сколько по php. Однако решил задать тут.

Возникла задача - посчитать по специальной таблице числовой эквивалент заголовка ноды. И на основе полученного значения автоматом связывать её через Nodereference.
Вот таблица:

[РЕШЕНО] Надо ли предварительно отключать модуль при заливке пропатченных файлов?

14 июля 2010 в 18:54

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

Пока что на всякий случай предварительно отключаю, но хотелось бы уточнить.

[РЕШЕНО] Как задействовать отправку на сервер в l10n_client?

11 июля 2010 в 17:24

В Разрешениях (admin/user/permissions) для Localization Client есть пункт "отправить переводы на сервер локализации" (submit translations to localization server).
Насколько я понимаю, это отправка "на лету" переведённых строк на сервер локализации (drupaler.ru). Но как я ни копался, не сог найти ни саму эту фичу, ни даже базовую конфигурацию (адрес сервера, логин).
В общем, сабж.

[РЕШЕНО] Drupal при открытии страницы автоматически прокручивает её вниз до формы комментов

24 апреля 2010 в 17:49

Друпал уже довольно основательно сконфигурирован, но вдруг обнаружилась неприятная особенность: при открытии страниц нод они почему-то открываются прокрученными вниз до формы добавления нового комментария.
По настройкам в админке несколько раз прошёлся, наиболее подозрительные модули поотрубал - всё равно такая фигня. Ощущение такое, что просто где-то в админке спрятана какая-нить галка, отвечающая за такое поведение - и я её когда-то случайно нажал, а теперь не могу найти (хотя вроде админку хорошо знаю).

Drupal - 6.16, PHP - 5.2.12, MySQL - 5.1.40

Может кто сталкивался или просто знает/догадывается/может подсказать, в чём проблема?

Очень прошу помочь, т.к. основное на сайте - ноды, а не комменты, и каждый раз прокручивать к верху - не вариант.

Если надо - могу закинуть выдаваемый HTML-код.

Точный (фиксированный ) диапазон дат с помощью модуля Date

22 апреля 2010 в 2:04

Гуглил, луркал по местным докам и на орге, даже [##763564]запостил саппорт реквест к модулю[/##], уже которую неделю рою - но всё равно не смог найти решения. Одна надежда - на русских сотоварищей по друпалу.

Имеется:

Модуль Date актуальной версии (6.x-2.4).
Создано поле типа "Дата" с виджетом "Выпадающие списки". Детализация - год, месяц, день - хотя это не важно.

[РЕШЕНО] Как изменить HTML-код меню, возвращаемый модулем superfish? (вставка тегов span)

14 марта 2010 в 21:02

На сайте стоит модуль Superfish, позволяющий создавать красивые выпадающие меню. Для пунктов меню он генерирует HTML-код такого вида (разбил на строки для наглядности):

<li class="sfHover" id="menu-132-1">
<a href="/foo" title="bar">Menu Item</a>
</li>

Из соображений темизации необходимо привести этот код к такому виду:

<li class="sfHover" id="menu-132-1">
<a href="/foo" title="bar">
<span class="back"><span class="bg1"></span>
Menu Item
<span class="foreground"></span></span>
</a>
</li>

Т.е. добавить несколько тегов span вокруг, до и после текста ссылки, но внутри тега < a >.
В коде модуля я нашёл такие строки:

if ((!empty($menu_item['link']['has_children'])) && (!empty($menu_item['below'])) && $depth != 0) {
        $children = theme('superfish_build', $id, $menu_item['below'], $depth, $trail);
        $parent_class = $children ? 'menuparent ' : '';
        $output .= '<li id="menu-'. $mlid .'-'. $id .'"';
        if (!empty($parent_class) || !empty($class)) {
          $output .= ' class="'. $parent_class . $class .'"';
        }
        $output .= '>'. theme('menu_item_link', $menu_item['link']);
        if ($menu_item['link']['depth'] <= $depth || $depth == -1) {
          if ($children) {
            $output .= "<ul>\n $children \n</ul>\n";
          }
        }
        $output .= "</li>\n";
      }
      else {
        $output .= '<li id="menu-'. $mlid .'-'. $id .'"';
        if (!empty($class)) {

Как работают relationships (связи, отношения) во Views? На примере Views + i18n

11 марта 2010 в 12:42

Посмотрел уже несколько туторов по views, прочитал оф.справку, погуглил по друпал.ру и .орг, но всё никак не могу понять одного: что такое связи (отношения, relationships) и как они работают?
Методом тыка кое-где они у меня даже задействованы. Но тот факт, что принцип их работы я не понимаю до конца, удручает.

В частности, сейчас сделал на сайте мультиязычность - теперь ломаю голову, как отфильтровать во вьюсах выводимые ноды, чтоб отображались только те, которые либо на нейтральном языке, либо на текущем языке просмотра.
В фильтрах есть только "жёсткие" варианты (дефолтный язык, язык юзера, конкретный язык).
В "отношениях" нашёл "Node translation: Translations" с вариантом "Current language". Вот только к какому фильтру это цеплять - ума не приложу. Метод тыка уже не помогает.

Если не трудно, объясните, пожалуйста, принцип функционирования связей "на пальцах". Или на вышеозначенном примере.

Буду также признателен за отсыл к толковому тутору, где досканально разъясняются relationships.

[РЕШЕНО] Глюк auto_increment в таблице users при импорте дампа

26 декабря 2009 в 9:43

Обнаружил такую проблему: при импорте дампа в таблице users постоянно происходит одна ересь: пользователь с id=0 (тот, который выполняет роль гостя) почему-то получает следующий по автоинкременту номер. И, соответственно, автоинкремент увеличивается на 1. Т.е. id пользователей такие:

В дампе:
0
1
2
3
auto_increment 4

После импорта в базе:
4
1
2
3
auto_increment 5

[РЕШЕНО] Отображение ноды на странице термина таксономии

20 декабря 2009 в 15:27

Как-то натыкался на модуль, который позволяет каждому термину таксономии создавать свою ноду, которая будет отображаться на его странице вместо списка нод с этим термином.
Только забыл название этого модуля, а поиском на друпал орг уже третий день найти не могу.
Подскажите, пожалуйста.


Нашёл сам. Пришлось перебирать все возможные поисковые запросы, поэтому так долго.
Тогда я натыкался на Taxonomy Node, но после испытаний выяснилось, что намного лучше его аналог - NAT. Они оба в стадии беты, но последний работает нормально.
К сожалению, NAT выводит только тело ноды, так что все CCK-поля и прочие примочки останутся "за кадром".
Однако, опять же методом тыка выяснил, что если воспользоваться этим патчем, то можно добиться нужного отображения через Views.
Заодно узнал как ставить патчи. Если кто тоже не знает: сперва, потом.
Надеюсь, кому-нибудь пригодится.
Попутно разобрался, как сделать удобный интерфейс для работы с иерархией через таксономию. Если успею текущий проект сдать раньше времени - накатаю тут полный урок.

[ЗАКРЫТО] Автоматом помещать ноду в подшивку, указанную в поле Node Reference

15 декабря 2009 в 16:29

Стандартные друпаловские средства не очень хорошо адаптированы под создание сложной иерархии. Напр., разделов и подразделов сайта с различными правами для групп пользователей.
В принципе, этот вопрос достаточно удобно решается совместным использованием CCK (для выбора предка) и Views + Views Attach/ViewReference (для отображения потомков).

Однако остаётся одна "дыра": при данном способе на странице не отображается полный иерархический путь текущей ноды. (Ссылки вверху страницы в виде: Главная > Раздел > Подраздел)
Зато подобная "альтернативная адресная строка" отображается при построении иерархии через модуль Book.

Я вижу решение так:

  • Пользователи не имеют прав на редактирование подшивок.
  • У нужных типов материалов есть поля Node Reference, настроенные нужным образом.
  • Права на редактирование этого поля у пользователей есть.
  • При сохранении нода автоматически помещается в соответствующую подшивку (в зависимости от того, что выбрано в Node Reference)

Как этого можно добиться?
Пробовал через Rules, но не нашёл в нём "Переместить в подшивку".

[РЕШЕНО] Списки выбора по полям CCK в расшаренных (exposed) фильтах Views

3 декабря 2009 в 0:22

Дано:

  • Настроенные поля CCK, ограниченные списком допустимых значений.
  • Из соображений производительности и удобства этот список оформлен в виде key|label, т.е. пользователю отображается label, а в саму базу заносится key. Например:
    1|Красный
    2|Жёлтый
    3|Зелёный
  • Чтобы база весила меньше, все подобные поля выбора лучше делать типа integer (целочисленные).

Задача:

Добавить во вьюшку (View/Представление) расшаренный (exposed) фильтр, позволяющий пользователям отображать материалы в зависимости от значения поля.
По умолчанию фильтр Views выглядит как текстовое поле а-ля "значение больше", "значение равно"...

Решение

При создании фильтра надо всего лишь вместо "Содержимое: <поле>" выбрать "Содержимое: <поле> - Допустимые значения".

Дополнительно, можно сделать интерфейс фильтра ещё более дружелюбным, воспользовавшись модулем Better Exposed Filter - он позволяет заменить дефолтный блок выбора/дропдаун на галки/радиокнопки.

Огромное спасибо Kail@drupal.org за то, что не проигнорировал этот, как оказалось, простой вопрос - а указал на ошибку.

ImageCache: простое размещение картинки в произвольном месте

16 ноября 2009 в 22:23

Погуглил и поикал по форуму, но решения так и не нашёл.

Задача проста: размещать картинки, обработанные ImageCache, не общей кучей в конце, а поодиночке в любом месте страницы.
Может, есть какой простой токен типа [image=1 align=right], который позволял бы указывать, какую картинку куда вставлять?
Используются: Drupal 6, FileField, ImageField, ImageCache.

Пока что я вижу несколько решений, но все они - жуткие извращения с filefield.
Есть вариант с использованием представлений и Insert View, но это извращение ещё хлеще, да и нагрузка из-за вьюшек дико возрастёт.

Я просто не могу понять, зачем вообще нужен ImageCache (тем более, почему он так популярен), если созданные им картинки никак нельзя расположить на странице.
А альтернативу ImageCache я как-то не смог найти.

[Решено][Неактуально] Генерация стройных URL, отображающих иерархию материала (Pathauto + Token + Node Hierarchy + CCK + Rules)

3 ноября 2009 в 20:07

"Стройный" или "SEF-" алиас должен: легко читаться, быть коротким, содержать только английские символы и быть понятным пользователям из других стран - иными словами, быть на английском.