Ещё есть модуль Flexifield http://drupal.org/project/flexifield - он как раз позволяет сделать то что надо, правда реализует это через отдельную ноду для каждой группы полей, но интерфейс вполне приличный, для тех кому руками ковырять неохота - сойдёт. А так - тормозов он конешно добавит немало при подгрузке ноды, на высокопосещаемых сайтах лучше своё писать.
При ускорении работы сайта на 5 версии Drupal я для себя открыл чудесную связку модулей Advanced cache http://drupal.org/project/advcache и Cache Router http://drupal.org/project/cacherouter - они как раз занимаются кешированием всего подряд, в том числе и алиасы путей. В качестве хранилища можно выбрать базу данных (эту же или другую), файл, APC cache, memcache, xcache и можно подключить ещё что угодно.
Есть более новые версии перевода Ubercart на русский язык (russian)? А то у этого в пользовательской части встречаются непереведенные строки, например:
Поле для пути обязано называться path_alias, т.к это захардкодено в модуле.
Да, имя поля указывается прямо в исходнике, интерфейс для изменения делать неохота было, да и проще в исходниках 1 раз поправить чем лишним кодом разбавлять.
"Ввиду производственной необходимости" пришлось переделать модуль для работы в Drupal 6 beta 3, т.к. метод хранения книг в нем глобально изменился. Также в процессе переделки значительно упростил код и выкинул много лишнего.
Если кому нужно - новую версию забирать тут: http://shtrix.ru/files/drupal/modules/tokencckpaths-6.x-0.2.tar.gz
Так как никаких советов умных не нашлось и не поступило, то я решил разбираться сам.
И после двух суток разбирательств и с помощью какой-то там матери у меня всё же получилось кое-что рабочее, поэтому хочу быстрее поделиться с народом. Вся суть в модуле Token, он как оказалось - очень полезный!
Вышел из ситуации так:
1. Установил модули CCK, pathauto, token, book.
2. Добавил к ноде типа book новое поле CCK Text field (например path_alias).
А можно ли каким-нибудь образом добиться чтобы pathauto строил иерархию вложенных материалов с помощью поля CCK?
У меня есть несколько вложенных материлов типа book, хотелось бы построить урлы по типу book1-cckfield/page1-cckfield/subpage1-cckfield/
У pathauto есть такие возможности для названий [bookpath] или для термов [termpath], а как сделать это через поле CCK - так и не разобрался.
Тоже мучаюсь со схожей проблемой. Решения пока не найдено?
Проблема в следующем:
Есть сайт с кучей нод в виде дерева (book). Т.е. главная статья, описывающая например бублики. Внутри неё по иерархии - статьи, описывающие типы бубликов, внутри них - размеры бубликов.
И каждая нода имеет довольно длинные названия, например такие:
---------------------------------------------------------
Лучшие бублики от компании "Бубликоид"
- Бублики из пшеницы с добавлением опилок
- - Бублики с осиновыми опилками
- - Бублики с филе из жуков-короедов
While trying to retrieve the URL: http://drupal.htdogs.ru/node/660
The following error was encountered:
Unable to determine IP address from host name for drupal.htdogs.ru
The dnsserver returned:
Name Error: The domain name does not exist.
zhilin wrote: Моя вырезка из заметки про урлы, где рассматривается Друпал:
А где можно полностью эту заметку почитать? Я занимаюсь продвижением и поэтому очень взволнован недостаточно гибкой ссылочной структурой сайтов на Drupal
Ниасилил... Что за модули без хуков???
Мой, например, модуль У него только хук меню висит, а в остальном он сам ковыряется в собственных таблицах и файлах. Некоторые другие специализированные модули, я думаю, тоже так работают. Некоторым конешно не обойтись без хуков, но не всем они в работе требуются.
PS: Ява всё держит в памяти, как и обычная программа (не веб). При первом использовании библиотеки (класса) - загружает и уже не выгружает ее. Парсится всё на этапе "компиляции". На этапе выполнения еще может и компилироваться. Вообще java/jsp просто летает... и можно не бояться ставить всё новые и новые библиотеки, на производительность не влияют, только на память.
edhel says: Кроме хуков menu и init еще куча хуков! Если сделать так как Вы говорите, потеряется ~80% функциональности.
Если просто перестать инклюдить файлы, то конешно потеряется По-правильному-то надо сначала посмотреть, что стоит инклюдить а что нет (например в момент установки), а потом уже инклюдить только то что надо. Ведь многие модули не использует никаких хуков и блоков, а работу друпала тормозят.
edhel says: Это скорее проблема ПХП, чем Друпал... Вот бы интересно было бы погонять что нить типа JDrupal (на яве)
Да, ява штука интересная. Насколько я понял - там всё подгружается сразу и ждёт пока пользователь запросит страницу, а потом не выгружается а висит в памяти и ждёт следующего запроса. А остальное всё подгружается по мере надобности. Очень по-моему правильное решение. Правда бросать php и переходить на жаву как-то жалко и боязно.
axel says: Возможная альтернатива загрузке файлов: модуль при регистрации публикует список предлагаемых им обработчиков и затем этот список сохраняется в базе и берётся оттуда, обновляясь только при подключении/отключении модулей (примерно как это сделано уже с обработчиками меню). Насколько это быстрей загрузки файлов (учитывая кешироание php-акселератором) - это надо тестить, я бы не стал делать умозрительных заключений сходу.
Вобщем пока работаю через функцию очистки кэша модуля Devel, лучшего способа не нашёл.
Ещё вопрос появился по теме меню: в документации приведен пример перехода на новую систему меню
http://drupal.org/node/103114 - да, это я уже читал но так и не разобрался где в массиве идёт отличие динамического от постоянного пункта. Сейчас ещё раз перечитал и всё-равно не понял Уже всяческие варианты перепробовал и всё-равно - до ручного сброса меню никаких изменений не подхватывает Drupal.
С http://api.drupal.org/api/function/hook_menu/6 я уже начинал, описанный там тип меню "MENU_DYNAMIC_ITEM" не работает в 6 версии, больше подходящих способов там не нашёл, все другие заносят адрес сразу в базу и больше ни о чём не парятся ;(
Кеш чистить через модуль dev идея хорошая, я не знал что в нём есть такая функция, пока что буду использовать, спасибо за подсказку.
Создание cоставного поля в CCK 2.x
Ещё есть модуль Flexifield http://drupal.org/project/flexifield - он как раз позволяет сделать то что надо, правда реализует это через отдельную ноду для каждой группы полей, но интерфейс вполне приличный, для тех кому руками ковырять неохота - сойдёт. А так - тормозов он конешно добавит немало при подгрузке ноды, на высокопосещаемых сайтах лучше своё писать.
Кеширование часть 2: кешируем имена пользователей
Для 5 Drupal также рекомендую посмотреть модули:
http://drupal.org/project/advcache
http://drupal.org/project/blockcache
http://drupal.org/project/cacherouter
Модуль advcache может кешировать всё что кешируется (включать можно частично):
block, comment, node, taxonomy, search, path, page...
Кеширование часть 1: кешируем алиасы путей
При ускорении работы сайта на 5 версии Drupal я для себя открыл чудесную связку модулей Advanced cache http://drupal.org/project/advcache и Cache Router http://drupal.org/project/cacherouter - они как раз занимаются кешированием всего подряд, в том числе и алиасы путей. В качестве хранилища можно выбрать базу данных (эту же или другую), файл, APC cache, memcache, xcache и можно подключить ещё что угодно.
Русский перевод магазина Ubercart
Есть более новые версии перевода Ubercart на русский язык (russian)? А то у этого в пользовательской части встречаются непереведенные строки, например:
Формирование URL по доп. полям названию ноды в pathauto ('customtext1/customtext2' вместо 'node_titles_path/node_title')
Да, имя поля указывается прямо в исходнике, интерфейс для изменения делать неохота было, да и проще в исходниках 1 раз поправить чем лишним кодом разбавлять.
Формирование URL по доп. полям названию ноды в pathauto ('customtext1/customtext2' вместо 'node_titles_path/node_title')
"Ввиду производственной необходимости" пришлось переделать модуль для работы в Drupal 6 beta 3, т.к. метод хранения книг в нем глобально изменился. Также в процессе переделки значительно упростил код и выкинул много лишнего.
Если кому нужно - новую версию забирать тут:
http://shtrix.ru/files/drupal/modules/tokencckpaths-6.x-0.2.tar.gz
Формирование URL по доп. полям названию ноды в pathauto ('customtext1/customtext2' вместо 'node_titles_path/node_title')
Так как никаких советов умных не нашлось и не поступило, то я решил разбираться сам.
И после двух суток разбирательств и с помощью какой-то там матери у меня всё же получилось кое-что рабочее, поэтому хочу быстрее поделиться с народом. Вся суть в модуле Token, он как оказалось - очень полезный!
Вышел из ситуации так:
1. Установил модули CCK, pathauto, token, book.
2. Добавил к ноде типа book новое поле CCK Text field (например path_alias).
Вкусные URL'ы в Drupal
А можно ли каким-нибудь образом добиться чтобы pathauto строил иерархию вложенных материалов с помощью поля CCK?
У меня есть несколько вложенных материлов типа book, хотелось бы построить урлы по типу book1-cckfield/page1-cckfield/subpage1-cckfield/
У pathauto есть такие возможности для названий [bookpath] или для термов [termpath], а как сделать это через поле CCK - так и не разобрался.
Использование модуля token для pathauto
Т.к. задача у меня немного другая, то решил создать отдельную тему по своей проблеме. Просьба отвечать туда.
Использование модуля token для pathauto
Тоже мучаюсь со схожей проблемой. Решения пока не найдено?
Проблема в следующем:
Есть сайт с кучей нод в виде дерева (book). Т.е. главная статья, описывающая например бублики. Внутри неё по иерархии - статьи, описывающие типы бубликов, внутри них - размеры бубликов.
И каждая нода имеет довольно длинные названия, например такие:
---------------------------------------------------------
Лучшие бублики от компании "Бубликоид"
- Бублики из пшеницы с добавлением опилок
- - Бублики с осиновыми опилками
- - Бублики с филе из жуков-короедов
pathauto & русский?
Ссылка не работает, видимо сервер кончился:
While trying to retrieve the URL: http://drupal.htdogs.ru/node/660
The following error was encountered:
Unable to determine IP address from host name for drupal.htdogs.ru
The dnsserver returned:
Name Error: The domain name does not exist.
Есть другие ссылки на статьи по данной проблеме?
Почему вы HE выбрали Drupal?
zhilin wrote: Моя вырезка из заметки про урлы, где рассматривается Друпал:
А где можно полностью эту заметку почитать? Я занимаюсь продвижением и поэтому очень взволнован недостаточно гибкой ссылочной структурой сайтов на Drupal
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
axel says:
Интерпретатор интерпретатору рознь ) В Python возможности построения разных моделей работы шире.
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
Ниасилил... Что за модули без хуков???
Мой, например, модуль У него только хук меню висит, а в остальном он сам ковыряется в собственных таблицах и файлах. Некоторые другие специализированные модули, я думаю, тоже так работают. Некоторым конешно не обойтись без хуков, но не всем они в работе требуются.
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
PS: Ява всё держит в памяти, как и обычная программа (не веб). При первом использовании библиотеки (класса) - загружает и уже не выгружает ее. Парсится всё на этапе "компиляции". На этапе выполнения еще может и компилироваться. Вообще java/jsp просто летает... и можно не бояться ставить всё новые и новые библиотеки, на производительность не влияют, только на память.
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
edhel says: Кроме хуков menu и init еще куча хуков! Если сделать так как Вы говорите, потеряется ~80% функциональности.
Если просто перестать инклюдить файлы, то конешно потеряется По-правильному-то надо сначала посмотреть, что стоит инклюдить а что нет (например в момент установки), а потом уже инклюдить только то что надо. Ведь многие модули не использует никаких хуков и блоков, а работу друпала тормозят.
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
edhel says: Это скорее проблема ПХП, чем Друпал... Вот бы интересно было бы погонять что нить типа JDrupal (на яве)
Да, ява штука интересная. Насколько я понял - там всё подгружается сразу и ждёт пока пользователь запросит страницу, а потом не выгружается а висит в памяти и ждёт следующего запроса. А остальное всё подгружается по мере надобности. Очень по-моему правильное решение. Правда бросать php и переходить на жаву как-то жалко и боязно.
А разве Drupal при каждой загрузке страницы инклюдит главные файлы всех активных модулей?
axel says: Возможная альтернатива загрузке файлов: модуль при регистрации публикует список предлагаемых им обработчиков и затем этот список сохраняется в базе и берётся оттуда, обновляясь только при подключении/отключении модулей (примерно как это сделано уже с обработчиками меню). Насколько это быстрей загрузки файлов (учитывая кешироание php-акселератором) - это надо тестить, я бы не стал делать умозрительных заключений сходу.
Каким образом можно создать динамический пункт меню в Drupal 6?
Вобщем пока работаю через функцию очистки кэша модуля Devel, лучшего способа не нашёл.
Ещё вопрос появился по теме меню: в документации приведен пример перехода на новую систему меню
Каким образом можно создать динамический пункт меню в Drupal 6?
http://drupal.org/node/103114 - да, это я уже читал но так и не разобрался где в массиве идёт отличие динамического от постоянного пункта. Сейчас ещё раз перечитал и всё-равно не понял Уже всяческие варианты перепробовал и всё-равно - до ручного сброса меню никаких изменений не подхватывает Drupal.
Каким образом можно создать динамический пункт меню в Drupal 6?
С http://api.drupal.org/api/function/hook_menu/6 я уже начинал, описанный там тип меню "MENU_DYNAMIC_ITEM" не работает в 6 версии, больше подходящих способов там не нашёл, все другие заносят адрес сразу в базу и больше ни о чём не парятся ;(
Кеш чистить через модуль dev идея хорошая, я не знал что в нём есть такая функция, пока что буду использовать, спасибо за подсказку.
Фигурные скобки в SQL-запросах
А, всё, разобрался - нужно экранировать двойным процентом:
db_query("SELECT DATE_FORMAT(time,'%y.%m.%%d %H')")
Фигурные скобки в SQL-запросах
Ха, а теперь другой косяк :
db_query("SELECT DATE_FORMAT(time,'%y.%m.%d %H')");
Съедает символ %d из запроса, пытаясь заменить его на параметр функции.Фигурные скобки в SQL-запросах
О, спасибо за идею, этим способом всё нормально добавляется. Что-то этот вариант мне самому в голову не пришел почему-то....
Оптимизируемся. Часть 1, MySQL
emzi says: "уменьшить количество запросов" - можно, я на эту тему тоже хочу сделать статеечку.
Очень интересно было бы почитать статью на эту тему, а то меня данная проблема тоже очень волнует ;(