Content Taxonomy в качестве аргумента Views

Прислано: ingumsky@drupal.org

вт, 10/01/2012 - 15:07

Коллеги, подскажите, плиз!

Использую  Content Taxonomy для одного из типов нод без хранения значения в таблице таксономии — то есть хранится только значение поля. При выводе нод всё нормально — показывается не tid, а имя термина. Проблема возникает при попытке использовать поле Content Taxonomy в качестве аргумента  Views — выборка производится нормально, но вот название термина в качестве заголовка страницы не подставляется. Вместо этого %1 (шаблон, который должен подменяться названием термина) заменяется на tid, что не есть гуд... Подскажите, какие варианты решения проблемы могут быть?

Спам-бот на Друпал-сайте

Прислано: ingumsky@drupal.org

вт, 10/01/2012 - 10:27

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

Forms API. Проверка уникальности значения

Прислано: ingumsky@drupal.org

вт, 27/12/2011 - 00:13

Коллеги, подскажите, плиз, что-то у меня уже голова совсем не соображает...

Есть форма, описанная в соседнем топике и состоящая из однотипных строк. Пользователь выбирает пункт из списка и назначает ему «оценку», и так для нескольких пунктов. Мне необходимо проверять, что пользователь выбирал разные пункты из списка, а не одни и те же (к примеру, что он не выбрал «Бруснику» или любую другую «ягоду» больше одного раза). Как правильно сделать такую проверку?

Forms API. Пустое значение селекта и значение по умолчанию

Прислано: ingumsky@drupal.org

сб, 24/12/2011 - 22:22

Добрый вечер, коллеги!

Появилось пара вопросов по Forms API, подскажите, пожалуйста, решение. Рисую форму, которая имеет несколько однотипных строк с одинаковым набором полей. Выглядит примерно так:
Предположим, что форму отображаем на странице ноды с id 53.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
Селект (обязательный): Малина (value = 1), Черника (value = 2), Брусника (value = 3), Клюква (value = 4). Селект (необязательный): 1-10.
После отправки на сервер данные должны сохраняться в мою таблицу вида:
nid, berry, rate
53, 1, 8
53, 4, 0
53, 2, NULL
Как видно, каждая строка формы сохраняется в отдельной строке таблицы, там есть общий идентификатор (nid), значения для обязательного селекта и значения необязательного селекта. Вопросы следующие:

Сервис uLogin: Быстрая регистрация на сайте через социальные сети

Прислано: ingumsky@drupal.org

вс, 23/10/2011 - 14:14

Возможно, многие уже видели на Хабре статью о uLogin, новом сервисе, который позволяет пользователю регистрироваться/логиниться на сайте с помощью учётной записи в социальных сетях. Как пишет автор, его не устроило то, что в Loginza подолгу не реагировали на его багрепорты, поэтому он написал свой сервис, а теперь вот открыл к нему общий доступ.

Сервис бесплатный и позволяет буквально в пару кликов собрать свой виджет для входа на сайт через социальные сети (с выбором тех соцсетей, которые будут показываться видны, их порядком) и настроить его внешний вид (только базовые возможности, но всё же). Особняком стоит то, что автор предлагает модули для ряда популярных CMS — Drupal, Joomla, WordPress, причём модуль можно скачать сразу же после сборки своего виджета в конструкторе уже со всеми настройками. Приятно, что поддерживается и шестая, и седьмая ветки Друпала, а исправление ошибок и разработка, по крайней мере пока, ведутся очень активно. Зарабатывать авторы планируют на заказах на кастомизацию виджета.

Я пока не пробовал использовать сервис, но, я думаю, в ближайшее время сделаю это, так как сам по себе он оставляет приятное впечатление. Из минусов очевиден один — это сторонний сервис, и для многих этот минус может перевесить все его плюсы, главным из которых является возможность дать простой доступ к сайту тем, кто зарегистрирован в популярных соцсетях, а это, согласитесь, в наше время очень важный функционал для любого сайта.

Кому интересно, вот сам сайт проекта: http://ulogin.ru

Как проверить, активен ли пользователь?

Прислано: ingumsky@drupal.org

вт, 04/10/2011 - 18:15

Добрый день!

Возник вопрос по тому, как проверить, активен ли пользователь в настоящий момент. Под «активностью» подразумевается не то, существует ли такой незабаненный пользователь в базе, и не то, залогинен ли он в настоящее время, а то, присутствует ли он на сайте в настоящее время. «Настоящее время» в данном случае условно. В моём случае достаточно знать, как давно он совершал какие-либо действия на сайте. Мне это нужно, чтобы не гонять впустую регулярный запрос аяксом к базе, если пользователь просто ушёл, оставив окно броузера открытым.

Как я понимаю, все активные действия пользователя (хиты) записываются в accesslog. Есть ли готовый способ (кроме конструирования собственной функции, опрашивающей accesslog) узнать, как давно действия пользователя туда записывались? Дополнительный вопрос, как поступать с теми пользователями, которые присутствуют на сайте, но в accesslog'е не отмечаются (например, сидят в чате)?

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

«Сделайте мне красиво»: User:Name в качестве аргумента Views

Прислано: ingumsky@drupal.org

сб, 27/08/2011 - 14:43

Я думаю, каждый друпалер использует на своих сайтах модули  Views и  Pathauto. Да, на некоторых сайтах можно без них обойтись, но, фактически, оба этих модуля давно входят в джентльменский набор при запуске нового сайта, поэтому нет нужды объяснять, для чего они используются. Некоторое время назад я столкнулся с проблемой, которая не то, чтобы была критичной, но беспокоила моё эстетическое чувство и не давала мне считать свою работу выполненной. Дело было связано с тем, что views и pathauto по-разному представляют пользователю одни и те же вещи — как-то заголовки материалов и имена пользователей.

До некоторых пор это не особенно бросается в глаза, но представим себе следующую ситуацию — у вас есть вьюс, с помощью которого вы выводите список материалов по адресу example.net/content. Если задан аргумент, вьюс выводит только материалы за авторством конкретного пользователя. Самый простой способ сделать это — указать в качестве аргумента User:Uid. В результате получается, что при запросе вида example.net/content/1 будут отображаться все материалы, созданные суперпользователем, при запросе example.net/content/150, пользователем с uid 150 и так далее. Это хороший способ, у которого есть один минус — URL example.net/content/150 «некрасив» и мало, о чём говорит стороннему наблюдателю (хотя я часто использую такие конструкции для вьюсов, «закрытых» для пользователя).

[Решено] Views vs Pathauto (User:Name в качестве аргумента Views)

Прислано: ingumsky@drupal.org

сб, 27/08/2011 - 12:24

Здравствуйте!

Возникла неожиданная проблема там, где её не ждали. Суть в том, что у меня есть views, который выводит список материалов. В качестве аргумента я скармливаю ему имя пользователя, чтобы получить список материалов, созданных этим пользователем. И всё бы ничего, но views принимает аргумент в виде строки, отличной от той, что используется в URL во всех остальных случаях (спасибо Pathauto). Путём манипуляций с параметрами аргумента я нашёл комбинацию (lowercase и spaces to dashes для пути), с которой большая часть аргументов становится похожа на те, что хотелось бы видеть, но всё равно не все. Например, представим, что есть пользователи с именами Ingumsky, John Smith, jack_brown, S.White, He is Awesome, Паша. Ниже я привожу, как выглядят аргументы для моего вьюса, каково имя пользователя и [в квадратных скобках], как выглядит имя пользователя в большинстве URL Друпала:
При запросе example.net/my_view/ingumsky — вьюс выдаёт материалы пользователя Ingumsky [ingumsky]
При запросе example.net/my_view/john-smith — вьюс выдаёт материалы пользователя John Smith [john-smith]
При запросе example.net/my_view/jack_brown — вьюс выдаёт материалы пользователя jack_brown [jackbrown]
При запросе example.net/my_view/s.white — вьюс выдаёт материалы пользователя S.White [swhite]
При запросе example.net/my_view/he-is-awesome — вьюс выдаёт материалы пользователя He is Awesome [he-awesome]

Вывести views или блок в Colorbox/Shadowbox/Lightbox

Прислано: ingumsky@drupal.org

чт, 11/08/2011 - 12:31

Здравствуйте!

Появилась необходимость вывести views в модальном окне (в моём случае - Colorbox), причём выводить его не из скрытого дива, заранее загруженного на страницу, но грузить его после вызова этого модального окна. Стал искать информацию на эту тему, но так и не сумел обнаружить конкретных вариантов того, как это можно сделать. Из более-менее рабочих решений нашёл только один: выводить views по конкретному пути, темизировать этот путь через отдельный шаблон page-myalias.tpl.php и подгружать его как iframe, но меня этот такой вариант не устраивает по некоторым причинам. Пожалуйста, посоветуйте, как ещё можно решить подобную задачу?

Использование модуля Token в блоке

Прислано: ingumsky@drupal.org

вт, 12/07/2011 - 19:19

Другие статьи по теме:

Добрый вечер!

Подскажите, пожалуйста, или укажите конкретное направление для поиска решения следующего вопроса:
Хочу использовать токен (счётчик флага flag-bookmarks-count) в коде блока, созданного через /admin/build/block/add/ и отображаемого на странице с нодой. Как мне его вставить? Попытка вставить [flag-bookmarks-count] успехом не увенчалась — вывелся текст, а не число, которое должно быть вместо него. Стал искать информацию о том, как это сделать, и понял, что совершенно не въезжаю в принцип работы. На d.o, в API.txt, прилагаемом к модулю token, и в различных материалах, найденных через поисковики, об этом толком не говорится, так как описание работы функции token_replace, которая мне, видимо, нужна, весьма немногословно.
<?phptoken_replace($text$type 'global'$object NULL$leading TOKEN_PREFIX$trailing TOKEN_SUFFIX$options = array(), $flush FALSE)?>

$text A string potentially containing replaceable tokens.

$type (optional) A flag indicating the class of substitution tokens to use. If an object is passed in the second param, 'type' should contain the object's type. For example, 'node', 'comment', or 'user'. If no type is specified, only 'global' site-wide substitution tokens are built.

$object (optional) An object to use for building substitution values (e.g. a node comment, or user object).

$leading (optional) Character(s) to prepend to the token key before searching for matches. Defaults to TOKEN_PREFIX.

Запрос к коллбеку, на который повешен в меню, регистрируется как «хит»

Прислано: ingumsky@drupal.org

пн, 06/06/2011 - 20:14

Добрый вечер!

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

Ситуация: На сайте я использую известный всем модуль  privatemsg, а примерно неделю назад добавил  pmgrowl, который время от времени проверяет наличие непрочитанных личных сообщений в ящике и, если они есть, выводит справа поверх остального содержимого страницы. Работает всё замечательно, пользователи довольны, но сегодня вскрылась не критическая, но очень неприятная особенность работы модуля — на странице трекера пользователя в закладке navigation обнаружилась туча записей вида «messages/pmgrowl_json», что весьма неприятно, поскольку это убивает весь смысл трекера посещений. Обнаружилось, что я не единственный, кто столкнулся с такой работой AJAX в Друпале, но решения за год с момента регистрации проблемы так и не было предложено.

Я решил разобраться, почему это происходит, и как это исправить, но не сумел этого сделать — я проштудировал api по  hook_menu, заново перечитал четвёртую главу Pro Drupal Development, просмотрел кучу страниц в Интернете, которые нашёл в Гугле и изучил код имеющихся у меня на сайте модулей, которые работают с AJAX — всё без толку. Не понимаю я, почему в данном конкретном случае обращение к серверу регистрируется и отражается в трекере, а в других — нет. Спецы, проясните ситуацию, пожалуйста.

Rules и Trigger: Вместо или вместе?

Прислано: ingumsky@drupal.org

вс, 27/03/2011 - 18:36

Другие статьи по теме:

Вопрос элементарный — есть сайт, на котором используется встроенный в ядро Trigger. Сейчас понадобилось расширить возможности, которые он предоставляет, поэтому собираюсь ставить Rules. Но я так и не понял, если я его ставлю, надо ли оставлять включённым Trigger, или Rules будет поддерживать все те же действия и события, которыми до тех пор ведал Trigger, и потому встроенный модуль можно отключить? Читал документацию, там сказано, что Rules «это замена с дополнительными функциями для модуля Trigger», но чётко нигде не сказано, что Trigger теперь можно спокойно отключить и обо всех его задачах теперь будет заботиться Rules. В общем, я в замешательстве :)

Доработка и перевёрстка дизайна темы

Прислано: ingumsky@drupal.org

пн, 14/02/2011 - 21:08

Здравствуйте, коллеги!

Имеется ecoton.spb.ru — корпоративный сайт крупного питерского агентства недвижимости (на drupal 6 + дополнительный программинг), поддержкой которого я ныне занимаюсь. Дизайн этого сайта морально устарел + за годы, прошедшие с момента последнего обновления сайта, он оброс кучей элементов (ссылок, пунктов меню, блоков), которыми неудобно пользоваться. В связи с этим была сделана попытка обновить "раскладку" содержимого сайта, сделать его более лёгким и минималистичным, но при этом сохранить "преемственность" со старой версией, пересмотреть систему пользовательского меню и собрать всю навигацию в одном месте...

Проблема в том, что я нифига не дизайнер и не верстальщик. И то, что я подготовил, требует доработки. Требуется:
1. Основываясь на двухколоночной раскладке с меню типа «аккордеон», а также на комментариях от конторы (в процессе), обновить дизайн сайта, в том числе изменить/переработать отдельные графические элементы, шрифты и т.п.
1.1. Дизайн должен быть "лёгким, минималистичным, современным".
1.2. Ничего особенно рисовать не надо (но, вероятно, потребуется обновить шапку — исходник карточки есть).
1.3. Цвета фирмы должны быть сохранены.
1.4. Внешний вид моего варианта новой раскладки (пришлю, если потребуется) может быть проигнорирован.
2. Переверстать тему в соответствии с правилами хорошей вёрстки (сейчас это ужас какой-то).
2.1. Резиновая. Желательно в дивах.
2.2. IE6 можно пренебречь.

Работа удалённая. Оплата сдельная. Варианты оплаты: перевод, наличные, webmoney.

Как правильно организовать редирект?

Прислано: ingumsky@drupal.org

вс, 13/02/2011 - 23:16

Добрый вечер, коллеги!

Возник вопрос, к поиску решения на который я пока даже не знаю, как подступиться. Быть может, кто-нибудь из вас сталкивался с подобной проблемой и сможет подсказать решение.

1. Есть куча (тысячи) УРЛов вида example.net/node-type/nid (Pathauto).
2. Хочется заменить (с 301 редиректом) на более «дружелюбные», например: example.net/node-type/nid/node-title.
3. Надо сохранить возможность находить ноды (в том числе те, что будут созданы позднее) через адрес старого «типа» (example.net/node-type/nid), тем более, что многие из этих УРЛов хорошо засвечены в поисковиках.

Первая мысль — использовать Path redirect со включённым «example.net/node-type/nid», где стоит опция автоматического создания редиректа при изменении алиаса. Но это не решает третью подзадачу для тех нод, что будут созданы в будущем: все они получат алиасы вида example.net/node-type/nid/node-title, а example.net/node-type/nid создан не будет.

Вторая мысль — использовать views типа page с адресом node-type и передавать ему в качестве аргумента nid. В результате любая нода нужного типа (в том числе созданная в будущем) будет получена как при обращении по адресу старого типа, так и по адресу нового... Но это не решает вторую подзадачу полностью, так как ведёт к дублированию содержимого, потому что поисковики будут видеть одинаковые страницы по адресам обоих типов, что не кошерно.

Nginx и rewrite

Прислано: ingumsky@drupal.org

сб, 25/12/2010 - 11:37

Другие статьи по теме:

Друзья, подскажите, пожалуйста, как сделать корректно на nginx автоматическую переадресацию (и, соответствено, подмену адреса) всех запросов example.net/* на www.example.net/*

После того, как переехал на nginx правила из .htaccess, естественно, не работают, и у меня индексируются по два раза все страницы — и как example.net и как www.example.net, от чего бы очень хотелось избавиться. По одному из советов смотрел http://wiki.nginx.org/NginxVirtualHostExample (а именно A Default Catchall Virtual Host), но не смог разобраться сам — то ли это, что мне нужно, и, если то, как это использовать/изменить в моём случае.

RSS-материал

Новое на сайте

Ссылки партнёров