OldWarrior: Блог

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

Обновление 8.6.x > прощай, taxonomy_term_hierarchy ?

12 сентября 2018 в 23:24

Заказчик обновил ядро до 8.6.1 и частично отвалился функционал написанных мною модулей (касается в первую очередь запросов к структуре иерархии таксономии):

SQLSTATE[42S02]: Base table or view not found: 1146 Table taxonomy_term_hierarchy doesn't exist

Продаю модуль парсинга криптовалют (D8)

10 мая 2018 в 19:41

Даже не парсинга, а с получением данных по REST API с https://www.cryptocompare.com/
API бесплатный (во всяком случае - пока), но просят разместить где-нибудь на сайте ссылку с указанием источника.

Модуль писался под конкретный проект на Drupal 8 за деньги. Но теперь лежит без пользы.
Стоимость модуля 5 000 р. Доработка под ваши нужды и кастомизация - за отдельную плату.

Ссылку на "посмотреть в действии" (т.е. на живом сайте) дам в личке, пишите.

Bootstrap 4?

2 мая 2018 в 19:54
1

Кто уже ставил под D8 ?
И каким образом (готовая тема, стартовая субтема и т.д.) ?
Также фичи, баги, мнения, критика.

PS. Вообще-то уже перенёс с BS3 на BS4 один из своих проектов, но он ни разу не на Друпале. Пока что из минусов отметилась возня с разметкой типичных для bs3 контейнеров .well и .panel, которые пришлось приводить к унифицированному в bs4 заменителю .card . Из плюсов - порадовали новые flex'ы.

Главный Друпаллург Страны

12 августа 2017 в 21:37

Вот просто стало интересно.

Как считаете, кто есть (и есть ли) главный друпаллург на обозримом RU-пространстве? Кто самый наикрутецкий спец? Кого можно считать абсолютным и бесспорным авторитетом? Кому вы доверяете или, может, чьи посты/статьи/откровения вы читаете с благоговейным трепетом и благодарностью? Или, возможно, кто-то для вас аки чистейший и незамутнённый источник, из которого вы черпаете доброе, вечное, полезное? В общем, кому бы вы отдали лавры Главного Друпаллурга Страны?

Как занятно иногда копать мануалы чуть глубже справочника функций: PHP built-in HTTP server

2 июля 2017 в 9:50
1

Как говорится - "баян", наверное, но таки для меня стало новостью )

Недавно копал параметры запуска PHP с командной строки и с удивлением обнаружил, что в интерпретатор PHP ещё аж с 5.4.0 встроен собственный простенький HTTP-сервер: http://php.net/manual/ru/features.commandline.webserver.php

Встроен в CLI-версию интерпретатора (т.е. версию для парсинга через интерфейс командной строки). Запуск сервера через параметр -S с указанием любого порта:

Prepopulate значений множественных коллекций полей в entity form

22 апреля 2017 в 0:46
3

Есть:

1. Форма entity form
2. В этой форме множественное поле типа "Коллекция полей" с двумя дочерними полями: тест (число) и список выбора (select).

Требуется:

Сделать в hook_form_alter добавление и предзаполнение коллекций полей множественными значениями по умолчанию при создании новой сущности. То есть автоматически добавить несколько рядов произвольных данных, не прибегая к ручному добавлению с помощью кнопки "Add more". И даже вообще скрыть кнопки "Add more" и "Remove", поскольку в рамках именно этой задачи они не нужны.

Памяти Криса Касперски

27 марта 2017 в 0:35
2

18 февраля в возрасте 40 лет скончался известный русский хакер,писатель и публицист Крис Касперски (AKA Николай Лихачёв). Несчастный случай произошёл 10 февраля во время прыжка с парашютом в США, где Николай жил и работал последние годы.

Говорим и слышим

18 марта 2017 в 18:30

"...друпА'л (OR | NOT) дрУ'пал?..."

Предлагается вставить запятую в нужном месте )
Ну или выбрать оператор.
Слышу от других и так и так. Говорю и так и так, но чаще всё же друпА'л. А вы?

Где живёт гугль?

11 июля 2016 в 23:56
1

К сожалению (или к счастью), в последнее время редко заглядывал на форум. Но последнюю неделю - скорее от избытка времени - посещал чуть ли не ежедневно.

Монолог заказчика.

1 июня 2014 в 0:44
4

Монолог заказчика.

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

Клянусь: нефиг делать, да сам бы я смог,
Не будь я так занят делами столичными.
Аванса не дам, бо имею урок.
Кому интересно - пишите мне в личные.

Ну кто опять ноет про низкий бюджет?
Добавить ноли, а ты сам кто такой?!
Мне, братцы, тут нужен конкретный ответ,
Коль не берешься - свали и не ной.

Чувак, ты опух? Ценник твой просто ржака!
Сбрось два ноля, там ваще низший класс.
Но так, чтоб красиво, и чтобы без брака,
И не трынди про двадцатку за час.

Вы чё, оборзели?! Все разом свинтились?
Да что тут, блин, делать - я сам бы так смог.
Всего лишь распарсить, всего лишь закодить,

Брутальное решение: Views - вывод родительских терминов со счётчиками материалов во всех вложенных терминах

28 марта 2014 в 1:16

Родилось жёсткое решение "на скорую руку": как вывести средствами views и несложного хука список терминов верхнего уровня из одного словаря со счётчиками материалов во вложенных (дочерних) терминах (рекурсия без привязки к глубине).

Я специально заострю ваше внимание: только РОДИТЕЛЬСКИЕ ТЕРМИНЫ и вывод именно СРЕДСТВАМИ VIEWS (поскольку требуется кроме этого вывод ещё ряда связанных с терминами полей - изображение, tid и т.д. плюс условие не перестраивать имеющуюся CSS разметку выборки, связанную с views).

Просто опрос: зачем мы сюда приходим?

11 декабря 2012 в 12:08

Просто ещё один опрос - ради банальной статистики (думаю, результат будет всем интересен).

Самый такой незамысловатый и естественный вопрос: а для чего мы все тут собираемся - в основном? Что нас приводит на drupal.ru? Разумеется, сложно охватить все возможные мотивационные моменты, многие из них часто как бы комбинируются и охватывают несколько пунктов опроса, но я думаю, что каждый таки сможет выделить для себя наиболее основное, главное.

Прошу ответить честно. Если не находите готовых вариантов/опций ответа - добро пожаловать в комменты, это тоже интересно.

Разомнёмся, что ли?

30 октября 2012 в 14:58

Однобокости, односторонности, одноклеточности и однотипности посвящается.

Предлагаю устроить миниконкурс на самое бестолковое/беспонтовое объявление типа "Ищу специалиста на постоянку", "Мне нужно сделать сайт", "Памагите напесать модуль!!!", " и т.д. Короче - такой как бы формат объявления, которое, по мнению заказчика, должно прямо-таки неизбежно заинтересовать разработчика.

Жутчайший угар и мрачнейший хоррор приветствуются.
Но без пошлятины. Все очень серьёзно, да-да. Тут вам не это.

Бюджета у конкурса нет. Победителю - просто лавры.

Предложения по дополнительным требованиям к размещению объявлений на разработку сайтов и модулей.

11 апреля 2012 в 13:30

Предложение 1. Обязать публиковать хотя бы минимальный бюджет проекта.

Предложение 2. Обязать публиковать чёткое ТЗ (ну, тут уже иногда могут быть некоторые исключения - например, если заказчик ещё не знает, насколько реализуем проект в принципе).

Причины:

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

Причина 2: сам разбор деталей/условий, при котором тратится много времени на распутывание вводных и имеющейся конфигурации заказчика. По сути дела - это уже работа.

Сниппет для вывода количества комментариев

6 июля 2011 в 8:53

Себе на заметку и другим в помощь.
Сниппет выводит общее количество ВСЕХ опубликованных (подтверждённых) комментариев сайта.

<?php
$result 
db_query("SELECT COUNT(cid) AS count FROM {comments} WHERE {comments}.status = 0");
print 
'<a href="/comments" title="Все комментарии сайта">Все комментарии (';
$row db_fetch_object($result);
print 
$row->count;
print 
')</a>';
?>

Или оформление в виде функции в template.php

<?php
function get_comments_count() {
  
$result db_query("SELECT COUNT(cid) AS count FROM {comments} WHERE {comments}.status = 0");
  
$row db_fetch_object($result);
  return 
'<a href="/comments" title="Все комментарии сайта">Все комментарии (' $row->count ')</a>';
}
?>

В последующем можно вставлять в любом месте page.tpl.php используя вызов

<?php
print get_comments_count();
?>

Кто-нибудь встречал модуль для быстрой вставки Cache-Control: no-cache, must-revalidate и т.д.?

1 июля 2011 в 4:29

Нужно что-то для управления кэшированием страниц и подгружаемых компонентов на стороне клиента (чтоб каждый раз не жать Ctrl+F5, Ctrl+R, etc).
По принципу: обновились шаблоны (таблицы CSS) - установить соответствующий last-modified в заголовке.
Вопрос именно про модуль - чтобы не лазать каждый раз в шаблоны, а писать эти метатеги из админки drupal'а.

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

Потестим кнопочку? (Простой вариант интеграции elFinder в CKEditor)

15 апреля 2011 в 23:51

UPD. Как выяснилось из комментариев, модуль ckeditor с версии 6.x-1.3 официально поддерживает elfinder. Таким образом, всё написанное относится к возможному способу вывода "быстрой" кнопки elfinder'a на тулбар.

UPD2(08/05/2011). Плагин доработан до автоматического определения типа файла, возвращаемого elFinder

Нужен был файлменеджер/мультизагрузчик для редактора CKeditor (именно для drupal-модуля).

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

Зато как-то неожиданно открыл для себя elFinder.

Менеджер показался очень удобным (на мой взгляд, даже получше IMCE).
Мультизагрузка, drag&drop, создание-удаление директорий, файлов. Автоматические тамбы картинок, ну и в целом как-то юзабельнее выглядит.

CKEditor (по крайней мере 6.x-1.3) позволяет интегрировать IMCE как "быструю" кнопку на тулбар (отдельно от диалога выбора ссылки/картинки/файла). Просто нужно раскомментировать соответствующие определения в ckeditor.config.js и убедиться что присутствует папка imce в /modules/ckeditor/plugins

Я стырил это решение и наскоро адаптировал его под elFinder в виде скромного плагина-кнопки (elFinder).
Результат: на тулбаре имеется самодельная кнопочка, по клику на которой сразу открывается окно этого файлового менеджера (т.е. минуя диалог выбора адреса).

AJAX поле загрузки файлов в Opera 10: давайте разберёмся, наконец...

18 октября 2010 в 11:27

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

Суть вопроса. В Opera 10 при попытке отправить на загрузку список файлов из AJAX поля загрузки возникает ошибка JavaScript:

An HTTP error 0 occurred.
/upload/js

или же (в зависимости от модуля, использующего поле загрузки):

An HTTP error 0 occurred.
/gallery_assist/js

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

Проблема описана также:
http://www.drupal.ru/node/14290 (отличается только сообщением об ошибке)
и в http://faq.drupal.ru/node/38443

Что я имею:
Opera 10.01
Drupal 6.19
Модули: slideshow, gallery_assist

Предлагаемые решения по ссылкам выше (обновление jquery.form.js и т.д.) ни к чему не привели, как и полное обновление jquery (с помощью модуля jQuery Update, http://drupal.org/project/jquery_update).

Забить на проблему нельзя, у заказчика Опера любимый браузер.
Сам уже голову сломал, больше не могу об этом думать.
А ведь какое-то лекарство должно быть, я знаю.

У кого какие соображения?

"Поднять" наверх списка отдельное поле imagefield при редактировании

18 мая 2010 в 23:49

Кто-нибудь сталкивался с подобным:

Требуется "поднимать" наверх списка выбранное поле cck imagefield (с множественным значением)при редактировании.
То есть по принципу: добавить в группу полей этого поля (наряду с ALT, title и пр.) дополнительную ссылку "Наверх", по клику на которой при помощи jQuery (или как-то иначе) будет эмулироваться операция "перетаскивания" поля на верхнюю позицию.

Для чего нужно: в отдельном типе содержания требуется вывод только первой фотки из списка (а какой именно - определяет админ).

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

27 сентября 2009 в 14:32

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

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

Можно, конечно использовать модуль BlockClass для ручной привязки дополнительных классов к отдельным блокам, но заказчика пугают вещи вроде идентификаторов блоков и это не самый гибкий подход (тем более, что у него действительно есть необходимость довольно часто перемещать блоки).

Итак, копнул theme.inc, нашёл theme_blocks():

01518 function theme_blocks($region) {
01519   $output = '';
01520
01521   if ($list = block_list($region)) {
01522     foreach ($list as $key => $block) {
01523       // $key == <i>module</i>_<i>delta</i>
01524       $output .= theme('block', $block);
01525     }
01526   }
01527
01528   // Add any content assigned to this region through drupal_set_content() calls.
01529   $output .= drupal_get_content($region);
01530
01531   return $output;
01532 }

Переопределяю эту функцию в своём template.php с добавлением единственной строки:

function phptemplate_blocks($region) {
  $output = '';

  if ($list = block_list($region)) {

Привязать отображение таксономии отдельного словаря к определённому Views (или редирект на Views) - как лучше сделать?

26 февраля 2009 в 7:49

Буду признателен, если поможете в решении вопроса. С Drupal'ом часто работал раньше, но здесь не соображу, как лучше поступить.

Для начала задача. Требуется отобразить материалы портфолио в отдельном разделе сайта. Материалы упорядочены в 2-уровневой иерархии терминов. При навигации на "корень" раздела (фактически - словарь) требуется отобразить материалы из ВСЕХ нижележащих терминов (т.е. глубина - 2). При выборе любого дочернего термина 1-го уровня требуется отобразить все материалы этого и всех принадлежащих ему дочерних терминов 2-го уровня. И так до терминов 2 уровня, где нужно отобразить непосредственно материалы только этого термина.

Теперь о том, что уже есть.

1. Есть Drupal 6.9
2. Есть тип документов "Портфолио" (CCK + ImageField).
3. Есть словарь "Портфолио", к которому привязан этот тип.
4. Есть тип Views "portfolio", который "листает" документы, принадлежащие словарю "Портфолио".

Параметры Views:

Аргументы: Таксономия: Term ID (with depth) (глубина: 2)
Фильтр: Таксономия: Term
Путь (!): portfolio

То есть фактически по адресу mysite.com/portfolio находится "листалка" таксономии словаря "Портфолио", принимающая в качестве аргумента ID термина и отображающая все материалы этого термина и дочерних терминов. И это работает.

Теперь вопрос: как связать этот Views с навигацией по таксономии? Это нужно для иерархического меню навигации по таксономии. Изначально планировалось использовать какой-нибудь модуль для навигации по таксономии.