Drupal как сервис веб-форм?
#просто запусти его как корень
#просто запусти его как корень
Второй сайт на общем мультисайтинге с Днем Сурка.
Функционал тот же, что и у Сурка, немного урезан на первом этапе.
Я делал бэкенд, дизайном и вёрсткой занимались другие люди.
Плюс перенос всего контента из drupal 6 + ubercart 2.
26000 сущностей product,
3000 product display,
116 типов товаров (отдельная сущность, в которой хранятся настройки атрибутов, отображения и т.д)
1500 цветов,
600 размеров,
90 особенностей товаров - по ним можно делать выборку в каталоге,
225 характеристик товаров, пока выполняют описательную функцию, планируется добавлять их в индекс в зависимости от типа товара
Цвета и размеры приведены к общепонятным.
Потоптал немного граблей, докладываю:
допустим, имеются 2 представления, назовём их П1 и П2
П1 - с контекстным фильтром,
П2 - тоже с контекстными фильтрами, один из них - просто целое число: представление вызывается из разных мест, и чтобы не плодить представления, обошелся одним с числовым аргументом
итак, из П1 вызывается П2, в него передаются 2 аргумента в виде: [myarg]/1
[myarg] - значение поля, которое скрыто в выводе, 1 - это просто число 'один'
в таком виде оно не работает
если подставить в П2 [myarg]/1 - всё в порядке, а при вызове из П1 - не работает
Оказалось, что вместо числа 1 (один) в П2 передавалось значение контекстного фильтра П1, т.е. получалось, что запись [myarg]/1 была эквивалентна [myarg]/!1
Потребовалось экспортировать товары из определенных разделов каталога в Я.Маркет, есть модуль Yml export, который экспортирует все товары из каталога.
Немного доработал его, теперь в настройках можно выбрать разделы каталога, из которых будут экспортированы товары.
Если разделы не выбраны - экспортируется весь каталог.
Приветствую.
Пишу модуль, хранящий данные в своей таблице, ориентировочно предполагаю 500-1000 записей.
Данные редко обновляются, но планируется их частое чтение, запрос возвращает 5-15 записей за раз.
Соответствено, возникла мысль кешировать результаты запросов, чтобы не насиловать БД.
результаты гугления меня опечалили, никакой конкретики, одни советы включить мемкеш/буст/еакселератор/и т.д.
Приветствую.
Есть такая задача.
Тип материала - приказ (по организации). Он может касаться должности и (или) сотрудника.
Например, с приказом об увольнении сотрудника должен быть ознакомлен непосредственно сам увольняемый (юзер), его начальник (должность), начальник СБ (должность) ну и т.д.
Valeratal меня поправит или дополнит при желании.
Соотвественно - приказ это нода, сотрудник - юзер, должность - термин таксономии в дереве штатной структуры.
Типу материала "приказ" добавляются два поля - юзеррефренс для сотрудника и термрефренс для должности.
Но руководство решило пойти дальше и совместить понятия пространства и времени.
Есть задача - дать возможность пользователю создавать свои материалы, к которым прикреплять фото и видео.
В связи нежеланием нести ответственность за содержимое этих фото и видео, а также финансировать собственный фото- и уж тем более, видеохостинг, возникает желание - дать пользователю возможность постить материалы и прикреплять к ним ссылки на медиафайлы, размещенные на сторонних хостингах.
С этим неплохо справляется Media Gallery: пользователь имеет возможность закачать файл, с помощью Media Internet Sources - размещать ссылки на медиафайлы, находящиеся на сторонних хостингах, а также выбирать медиа из библиотеки, куда они добавляются автоматически после аплода или после указания внешней ссылки.
Теперь чего не хватает в этом функционале.
Потребовалось сделать сервис коротких ссылок на своём домене
да, в дополнение к тем 100500, которые уже есть в сети
не спрашивайте, зачем.
Нужно, чтобы при создании контента на сайте, происходил кросспост в разные фейсбуки и при этом в нем сразу указывалась короткая ссылка на алиас, по которому расположен этот контент, т.е.
создается нода www.site.com/node/100500, при её сохранении pathauto генерит ей алиас www.site.com/контент/чпу-ноды, содержимое публикуется в нужной соцсети и в кросспосте указывается короткая ссылка вида si.te/hhVHV, по которой происходит редирект 301 на www.site.com/контент/чпу-ноды (а не на системный путь www.site.com/node/100500)
Расскажу о том, как в форме оформления заказа выводить те способы доставки, которые актуальны для данного заказа.
Типичный случай для интернет-магазина: покупателю предлагается доставка курьером по Default City (город, где расположен склад магазина), которая может быть бесплатной при сумме заказа, превышающей определённый порог и доставка почтой / EMS / транспортной компанией - в другие города.
Оговорюсь сразу - я слыхал, но лично не встречал модуль расчета стоимости доставки почтой России, про расчет доставки транспортными компаниями мне вообще ничего не известно, d.org тому в подтверждение,
Базовая тема - Framework, по совету знакомых сеонистов переделал её из HTML 5 в XHTML 1.0 - мол, Яша ещё не готов.
Хз, обратно всегда можно вернуть.
Получилось валидно, практически кроссбраузерно (IE7+)
Из недоделок:
<h1>
: ТЗ от сеонистов - будутЯ делал вёрстку, темизацию, функционал собран из стандартных модулей, dev-отсутствуют
Дизайн, фото - Олеся Ласкова.
насчет того, что на странице не стоит постить ссылку на эту же самую станицу.
Делать ссылку с логотипа на главную («домашнюю») страницу — хорошо и правильно. Но при этом надо избегать самой часто распространенной ошибки (ради которой и написан этот параграф) — если мы находимся дома, то ссылки «на главную» там быть не должно. Это относится и к другим местам на сайте: любая ссылка подразумевает перемещение.Один из основных законов ориентирования на вебе и гипертекстовой навигации: ничто не должно содержать ссылку на само себя.
чо-та не резолвиццо...
верните взад, я всё прощу!
Решил заменить стандарные уберкартовские атрибуты на решение, описанное в этом топике
Вкратце - каждому набору атрибутов создается своя нода-товар с cck-полями - атрибутами,
Ноды-товары объединяются нодой-заголовком товара через нодрефренс, на странице ноды-заголовка список товаров выводится прикрепленным вьюсом, табличный вид:
фото товара, его заголовок, цена, кнопка добавления в корзину
Во вьюсе сделаны expoised filters, с помощью которых можно отфильтровать ноды-товары по их cck-полям - атрибутам.
С помощью Filters Auto-submit фильтрация происходит без перезагрузки страницы.
C помощью Ajax Driven Cart добавление в корзину и обновление блока корзины также происходит без перезагрузки страницы.
С этим все понятно.
Теперь возникло желание воспризвести функционал стандартного каталога уберкарта - если у товара есть атрибуты, при нажатии на кнопку добавления в корзину, покупателя просят выбрать атрибуты для товара.
Для этого в представлении, выводящим список товаров (это представление прикреплено к странице товара-заголовка) делаю вид "Страница", путь - selectproduct/%, где % - nid ноды-заголовка товара
В представлении, формирующем страницу каталога, для нод-заголовков товара создаю поле с ссылкой вида <a href='selectproduct/[nid]/lightbox2' rel='lightframe' title='blabla'>Добавить в корзину</a>
Соответственно, по клику на эту ссылку лайтбокс выводит iframe с представлением-списком товаров
Довелось сегодня ставить уралсибовский клиент-банк.
Вот что он выдал в пятом огнелисе:
Ваш браузер не поддерживается системой BS-Client (ДБО BS-Client)
Используйте Microsoft Internet Explorer версии 5.0 или выше.
едем дальше, в мануале к установке описывается, что отключить в настройках безопасности осла
и запускать его надо с правами администратора, естественно.
Привет.
Лейтенант Александр Чурин,
Командир артиллерийского взвода,
В пятнадцать тридцать семь
Девятнадцатого июля
Тысяча девятсот сорок второго года
Вспомнил о боге.
И попросил у него ящик снарядов
К единственной оставшейся у него
Сорокапятимиллиметровке
Бог вступил в дискуссию с лейтенантом,
Припомнил ему выступления на политзанятиях,
Насмешки над бабушкой Фросей,
Отказал в чуде,
Назвал аспидом краснопузым и бросил.
Тогда комсомолец Александр Чурин,
Ровно в пятнадцать сорок две,
Обратился к дьяволу с предложением
Обменять душу на ящик снарядов.
Дьявол в этот момент развлекался стрелком
В одном из трех танков,
Ползущих к чуринской пушке,
И, по понятным причинам,
Апеллируя к фэйр плэй и законам войны,
Отказал.
Впрочем, обещал в недалеком будущем
Похлопотать о Чурине у себя на работе.
Отступать было смешно и некуда.
Лейтенант приказал приготовить гранаты,
Но в этот момент в расположении взвода
Материализовался архангел.
С ящиком снарядов под мышкой.
Да еще починил вместе с рыжим Гришкой
Вторую пушку.
Помогал наводить.
Били, как перепелов над стерней.
Лейтенант утерся черной пятерней.
Спасибо, Боже - молился Чурин,
Что услышал меня,
Что простил идиота…
Подошло подкрепленье – стрелковая рота.
Архангел зашивал старшине живот,
Едва сдерживая рвоту.
Таращила глаза пыльная пехота.
Кто-то крестился,
Кто-то плевался, глазам не веря,
А седой ефрейтор смеялся,
И повторял –
Ну, дают! Ну, бля, артиллерия!
С праздником, друзья!
В этом посте была поставлена интересная и полезная задача:
- на странице ноды вывести список заголовков нод, имеющих тот же термин таксономии
С ходу возникает такой пример использования:
есть каталог статей, организованный словарем таксономии в иерархию:
политика
--внешняя
--внутренняя
экономика
культура
ну и.т.
нужно выводить после статьи список статей (их заголовки и м.б. анонсы) на ту же тематику.
Для усложнения задачи будем помнить, что:
- нода может быть привязана к нескольким словарям, некоторые из которых выполняют служебные функции, и по их терминам список строить не надо
- нода может быть привязана одновременно к нескольким терминам одного словаря (статья имеет тэги "политика" и "экономика")
Итак, создаем новое представление:
Представления > добавить ( /admin/build/views/add )
Имя представления - по вкусу, тип - Материал
Переходим на страницу редактирования представления
Взаимосвязи:
добавляем новую связь Таксономия: Связанные термины
(та, которая первая в списке, у нее описание "Relate nodes to taxonomy terms, specifiying which vocabulary or vocabularies to use...")
Включаем чекбокс "Эта связь обязательна", дальше идет список словарей, он в нашем случае не работает, чекбоксы можно не трогать
добавляем новую связь Таксономия: Материал
Выбираем Связь: термин (или какую метку вы указали первой связи)
Не использовать связь
Включаем чекбокс "Эта связь обязательна"
Аргументы:
добавляем Материал: Nid
Приветствую.
Ставлю D7 с БД pgsql на vds под FreeBSD 8 - на шаге Set up database выдает ошибку:
Failed to connect to your database server. The server reports the following message: SQLSTATE[08006] [7] FATAL: no pg_hba.conf entry for host "::1", user "d7", database "d7", SSL off.
нагуглил, что в pg_hba.conf нужно добавить строку
host all all 127.0.0.1 trust (или md5)
добавил, ребутнул - новая ошибка:
Failed to connect to your database server. The server reports the following message: SQLSTATE[08006] [7] could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?.
Вот содержимое pg_hba.conf до:
и после:
чего ему не хватает?
(про баги в ДНК - в курсе, я действительно аццкий чайнег
upd.
надо было прописать
host имяБД имяПользователя ::1/128 password
Мы почти всё время переводим с одного языка на другой. Это так, даже если мы умеем говорить только по-русски. А почему? Потому что одни и те же слова у разных людей ассоциированы с разными смыслами.
Для кого-то «менять шаровые» - это провести выходные в гараже. А для кого-то - заехать утром на СТО, весь день ездить на такси, а вечером получить свою машину. Для одних людей «решить квадратное уравнение» - это мгновенное действие, не подразумевающее напряжения, а для других - это звонок сыну коллеги, который как раз учится в университете, поэтому сможет справиться.
Когда перед человеком возникает задача, то он её сначала переводит с языка того, кто проблему ставит, на свой язык, чтобы понять её и выработать план решения. Поэтому лучше всего взаимодействие идёт между примерно равными людьми. Если же постановщик задачи и исполнитель очень далеки, то могут возникать неожиданные и сложные недопонимания (их даже бывает трудно обнаружить, так как люди совсем не понимают друг друга). По этой причине важно, чтобы тот, кто формулирует задачу, умел влезть в шкуру того, кто её будет выполнять. Мне кажется, что часто люди недовольны своим начальником именно из-за его неспособности или нежелания помочь с переводом задачи со своего языка на язык исполнителя. Орать на «идиотов вокруг» может каждый, а уметь внятно объяснить, чего надо делать - это обязательный навык для руководителя.
Удавался кому-нибудь сабж?
Нужно 2 типа материала - один для наборов товаров (стандартный функционал), на базе второго - создать товары, которые проходят по учету как 2 товара (например, колесо=шина+диск, условно)
Привет.
Модуль jquerymenu позволяет сделать удобное меню для сайдбара - с разворачиванием подпунктов меню без перезагрузки страницы, но при этом у него есть один существенный недостаток - нельзя указать, с какого подпункта меню начинать вывод, и его глубину.
Этого недостатка лишен модуль menu block, но он лишен функционала jquery.
Итак, скрещиваем ужа с ежом.
В файле template.php своей темы добавляем функции:
// if (!empty($extra_class)) { Тут добавляются дополнительные классы,
// $class .= ' '. $extra_class; вроде lirst, last, menu-его номер
// } мне они без надобности, поэтому отключаю
if ($in_active_trail) { // Добавляется класс active-trail
$class .= ' active-trail'; // чтобы меню разворачивалось до
} // активного пункта
Копаю темизацию, прописать стили на морду - ничего сложного, а если задаться целью темизировать админку в общем дизайне сайта - начинают мешать таблицы стилей, подгружаемые модулями.
Каскадные стили такие каскадные...
Решения:
1. Править файлы css, которые лежат в папках с модулями - некошерно.
2. Отключить файлы CSS и прописать стили в своих CSS - они будут грузиться всегда, вне зависимоси от участия модуля в рендере страницы.
Решил заменить таблицы стилей модулей своими, используя решение с ДрупалКукБука:
в template.php
своей темы в функции имя-темы_preprocess_page
добавил:
Остается скопировать файлы CSS из папок с модулями в подпапку /css своей темы, и править их как угодно.
Недостатки - при добавлении модулей надо помнить о необходимости копирования его стилей в свою тему.
решено, вопрос - по нагрузке (я не ощутил) и кошерности кода (N лет назад кодил на vb6, php - со словарем)