Предлагаю решение

Товар в нескольких магазинах

29 октября 2011 в 17:41

Здравствуйте, друпалеры! Хочу рассказать вам, как я сделал каталог по нескольким магазинам. Суть такова: есть магазины, в них несколько позиций (товаров). У каждого товара, в зависимости от магазина, есть своя цена.

Так как я не кодер и с Entity API не дружу (пока), то придумал вот такое решение: сделал отдельно типы содержимого «Товар», «Магазин» и «Цена».

У меня вышло:

Товар:

— Title
— Body
— Изображение
— Цены (multivalue node reference к типу содержимого «Цена»)

Магазин:

— Title
— Body

Цена:

— Магазин (node reference)
— Цена (text)

Создал вьюшку-блок, в которой получал в URL nid (делается это в «Contextual filters»/nid/Provide default value). Затем в Relationship добавил «Content: Цены». В «Format» дисплея выбрал «Grouping field» и в нём указал группировать по «Content: Title». И вывел поля:
— Content: Title
— (field_price) Content: Магазин (Магазин)
— (field_price) Content: Цена (Цена)
(field_price перед полем означает, что значение получается через поле Relationship).
Создал pathauto паттерн для нод типа «Товар» в виде product/[node:nid].

Затем этот блок прилепил в Content_footer (регион под контентом) и сказал блоку показываться только на product/*

И вуаля! Всё работает! Милости прошу обкакивать комментировать этот способ Wink

Drupal 7 на виртуальном shared-хостинге от caravan.ru (решено через костыль)

28 октября 2011 в 21:01

При попытке установки Drupal 7 случается буквально следующее:

Известный некоторым по Денверу косяк «Your PHP installation is too old. Drupal requires at least PHP 5.2.5, or PHP 5.2.4 with the htmlspecialchars security patch backported».

Позиция хостера (ответившего почти через сутки) железобетонная:

На серверах установлена версия PHP 5.2.4,
в рамках услуг виртуального хостинга обновление не производится

Есть ли какие-то обходные пути?

К сожалению, в текущей ситуации совет «выбирайте нормальных хостеров» не может быть исполнен.

UPD: А вот взяли и попробовали запустить на базе SQLite. И, знаете, оно работает. Разумеется, медленнее, чем на мускуле, но вполне сносно для не нагруженного сайта.

Более того, появилась даже идея по сопротивлению нагрузке: если вдруг пойдёт трафик, а хостинг так и не сменят, то просто прикроемся от анонимов файловым кешем на базе boost`а (БД не будет напрягаться).

Базу конвертировали с помощью dev-версии http://drupal.org/project/dbtng_migrator Удивительно, но всё получилось почти сразу, пришлось только отключить модуль http://drupal.org/project/metatags_quick, потому что в его таблице обнаруживались проблемы с ключами (думаю, это была наша индивидуальная проблема, например, результат кривого обновления модуля).

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

Подключение шрифтов к DOMPDF и их влияния на конечный размер файла.

27 октября 2011 в 14:21

Задача: надо чтоб библиотека DOMPDF печатала по русски шрифтом Сalibri

В стандартной библиотеке шрифты лежат с расширением *.afm, google помог найти у кого-то, подключенный шрифт к dompdf в такой папке Smile wp-content/plugins/contuttopdf/dompdf/lib/fonts/.
Поставил не помогло т.е. на английском печатает, а по русски нет :(. Потом были попытки конвертировать самому сalibri.ttf в calibri.afm и они эффекта не дали.

У меня уже была библиотека dompdf которая печатала по-русски, удаляя последовательно файлы из папки dompdf/lib/fonts я определил что бы у меня в pdf был текст по русски нужно чтоб остались следующие файлы

  • dompdf_font_family_cache - здесь подключают шрифты
  • times.ttf - стандартный tff из папки windows/fonts
  • times.ufm - мета-описание шрифта
  • times.ufm.php
  • timesbd.ttf - bold написания шрифта times
  • timesbd.ufm - мета-описание шрифта
  • timesbd.ufm.php

times.ufm.php можно удалить он создаться каждый раз при создании pdf. Важно если вы изменяете .ttf и .ufm необходимо удалить *.ufm.php так если вы это не сделайте dompdf не заметит что вы что-то поменяли.

Сайт с обзором хостинга работает на хостеров

25 октября 2011 в 3:16

На просторах рунета есть довольно известный всем сайт обзора хостинга - http://hosting101.ru/

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

Скорее всего не просто так, а за $

[Решено] Обратная связь с CCK node reference (зеркальное отображение)

25 октября 2011 в 1:09

Не смог найти как подключить обратную связь от node reference...
Поясняю:
Есть node/1 с типом материала Page, к которой через reference field можно подключать другие страницы с типом Sub-page.
Как выводить на страницах типа sub-page информацию о странице node/1 типа Page (title, nid или даже true/false)?

Модуль print не не правильно формирует имя файла при создании PDF

24 октября 2011 в 19:39

Решение
http://drupal.org/node/890632#comment-4190620

# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /home/mistknight/www/sbm/sites/all/modules/print
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: print_pdf/print_pdf.pages.inc
--- print_pdf/print_pdf.pages.inc Base (BASE)
+++ print_pdf/print_pdf.pages.inc Locally Modified (Based On LOCAL)
@@ -22,6 +22,9 @@
function print_pdf_controller() {
global $base_url;

+ // load node
+ $node = node_load(arg(1));
+
// Disable caching for generated PDFs, as Drupal doesn't ouput the proper headers from the cache
$GLOBALS['conf']['cache'] = FALSE;

Помогло !

Создание шаблона для вывода нужных полей статей (нод/node)

21 октября 2011 в 1:48

Привет всем.

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

Перелопатил кучу материала по указанной теме на этом форуме, а также на drupal.org. Большинство предлагаемых решений устарело - они для drupal 6. А также многие решения излишне сложны - создается куча функций с кучей переменных, вплоть до правки самих модулей Друпала. Также одно из решений - просто использовать модуль Views, настроить через него вывод нужных полей нужным способом. Но реально есть ли смысл ставить Views? Он будет жрать ресурсы сервера.

У Drupal 7 достаточно мощный API. Думаю можно просто с его использованием отобрать нужные статьи по термину таксономии. Так вот, предлагаю следующее решение:

Создаем page--node--1.tpl.php в текущей теме Друпала. Это для того чтобы вызвать по адресу http://сайт/node/1 свой шаблон страницы. И в коде этого файла прописываем:

<?php $tax = '6'; // здесь мы присваиваем переменной значение нужного термина таксономии

$nids = taxonomy_select_nodes($tax); //с помощью этой функции отбираем ноды по термину таксономии
$nodes = node_load_multiple($nids); // с помощью этой функции загружаем все нужные ноды

foreach ($nodes as $key) { //перебираем все полученные ноды

Вставка видео из ютуба и вконтакте в материалы Друпал

20 октября 2011 в 22:09

удалено, раз сочли за спам.

если сочтете нетрудным - дайте ссылку на "стандартную вставку видео". я (позавчера) найти не смогла. спасибо.

HTML css решения

17 октября 2011 в 19:40

HTML css решения

- Сделан на drupal 7.

- Основная цель сайта - решить задачи верстальщиков и начинающих html кодеров.

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

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

- Проведена поверхностная оптимизация сайта для увеличения скорости загрузки страниц: включено кеширование блоков, страниц (с минимальной жизнью кеша, куки и сессии пользователей 24 часа), включено объединение и сжатие css и javascript файлов для уменьшения количества запросов к базе данных. Удалены все модули, которые не используются на сайте. Из файлов максимально убраны комментарии (для уменьшения размера файлов). Удалены все темы, которые не используются. Максимально убраны изображения.

- Сделана небольшая оптимизация под SEO: подобраны ключевые слова из рассчёта 1 слово на страницу. Из файлов и шаблонов максимально удалён изначально скрытый через display:none код. Расставлены теги h1, h2, h3. Количество символов без пробелов, точек и спецсимволом на каждой странице сделано в количестве минимум 200 штук. Отказался от добавления мета тега keywords.