Пересмотрел ещё раз книги по Drupal на русском и английском языках (название книг - указано выше). Внимательно перечитал документацию, на все функции описанные выше. Мне кажется, это всё не совсем то, что нужно.
Я смог полностью сформулировать нужную мне задачу. Все подробности нарисованы в прилагающейся картинке.
На прилагаемой картинке, нарисовано схематичное отображение ноды. Такие вопросы как:
а) Как создать ноду
б) Слайдер фотографий
в) Вложение файлов
г) Отображение списка материалов определённой категории
д) "Простые" страницы
е) Построение меню
и некоторые другие я уже решил.
Я наконец смог подобрать почти идеальный пример фунционала, которого хочу добиться. Пример находится в прилагаемом файле.
Суть такова:
1. Производители и тип - это два отдельных словаря таксономии
2. Набор чекбоксов справа - это отдельный блок, чекбоксы в котором соответствуют словарям таксономии
3. Кнопка (ссылка) Показать фильтрует выбранный конент (ноды, к каждой из которых привязаны 1 или более терминов из каждого словаря), так же, как это происходит на Яндекс.Маркет.
hook_query_alter can be used to effectively change or rewrite many of Drupal's system queries, like those generated from views or modules that use the appropriate query building APIs.
Возможно, я как-то не верно интерпретировал выше описанный текст из другого мануала (на английском)? Подскажите пожалуйста, почему хук не вызывается вообще?
То есть Вы создаете модуль, но ничего не знаете о hook_menu. Х-м, странно...
Я не совсем это имел в виду. Создать ссылку в меню на страницу конфигурации модуля (например) - это наименьшая из проблем, всё это детально описано в книге "Drupal 7 Pro Development".
ser_house, ещё раз спасибо, попробую разобраться с hook_node_access().
Мне в голову, закралась сакральная мысль о том, что hook_node_access() будет работать для зарегистрированного пользователя, скорее всего, даже для группы пользователей. В моём же случае, пользователи чаще всего не будут иметь регистрации (прописки на сайте).
ser_house, hook_menu_alter() - мне кажется, эта функция не понадобиться, по той причине, что меню изменять не нужно. Сами пункты меню строятся на основе другого словаря, грубо говоря словаря "МЕНЮ". Дополнительный словарь нужен как раз для более тонкой фильтрации нод, то есть если мы меню было многоуровневым, то он основе второго словаря - строились бы подпункты. То есть, удалять/добавлять/изменять пункты меню не нужно.
Ещё раз благодарю за информацию! Пойду исследовать hook_node_access().
ser_house, промучился несколько дней, запутался в конец, но так и не добился достойных результатов.
Если взять во внимание тот факт, что ноды отображаются по тегу таксономии (по ссылки созданной модулем TaxonomyMenu), возможно, есть какая-то возможность, например удалить с нужных нод эти теги, перед их выводом? И тогда ноды не будут отображаться в списке. Существует ли подобная функция, которая бы позволила удалить теги с нод перед построением списка нод через таксономию?
Вроде бы, всё дошло. Что бы "выбрать" нужные ноды, нам необходимо не просто "удалить из списка НЕ нужные", а загрузить список с нужными. Для этих целей используется функция node_load_multiple(), в которую мы передаём идентификаторы нод и пр. информацию. Затем, полученный результат, мы передаём в функцию node_view_multiple().
Я всё верно понял? Для вывода списка "нужных" нод, требуются ещё какие-то манипуляции?
Опишу ситуацию ещё более подробно. У нас есть пользователь, который зашел на сайт. У этого пользователя, есть некая кука в браузере, в которой содержится значение либо 0, либо 1. Либо этой куки вообще нет, и тогда по мы используем значение по умолчанию = 0;
Если значение куки (или любой отдельно взятой переменной, как Вам удобнее) == 0, то мы должны отображать для этого пользователя только 3 ноды, с номерами 1, 4, 5. Если значение куки (переменной) == 1, то мы должны отображать для пользователя все 5 нод (1, 2, 3, 4, 5).
Уточнение:
Я имею в виду реализацию, на уровне модуля (программирование).
Уже попробовал:
Получил список всех нод с помощью функции: hook_node_load()
Попытался сделать: unset для одной из нод - эффекта это не дало никакого. При этом, например, заголовок любой из нод - я могу сменить без каких либо проблем. А вот временно удалить (скрыть) её из вывода - не получается.
Это разумеется, самое логичное решение, я не спорю. Но мне казалось, что среди более чем 17 тыс. модулей есть что-то уже готовое, способное решить данную задачу, а среди сообщества есть люди которые её уже решали и могут/готовы помочь советом. Или я не прав?
Я не говорил, что нельзя использовать VIEWS, я лишь поинтересовался, можно ли это сделать без VIEWS?
И ещё, подскажите пожалуйста, можно ли как-то реализовать автоматическую фильтрацию при выборе нового пункта? То есть, пользователь выбрал пункт (или чекбос[ы]) и после его выбора, контент автоматически отфильтровался (либо обновилась страница, либо с помощью AJAX).
дэнвера обычно за гланды.. (т.е. почти всегда) хватает
К сожалению, возможности установить "дэнвер" у меня нет, т.к. работаю под Linux ubuntu/debian. Для "локальных проб" вполне хватает и стандартной связки apache2+php5.3+mysql5.1(5.5)
Все сервера работают под управлением Debian 5/6, поэтому, набор ПО интересует именно под Linux, а если совсем конкретно под Linux Debian 5/6.
Скрыть ноду из списка
Пересмотрел ещё раз книги по Drupal на русском и английском языках (название книг - указано выше). Внимательно перечитал документацию, на все функции описанные выше. Мне кажется, это всё не совсем то, что нужно.
Фильтр-блок с помощью Views
Я смог полностью сформулировать нужную мне задачу. Все подробности нарисованы в прилагающейся картинке.
На прилагаемой картинке, нарисовано схематичное отображение ноды. Такие вопросы как:
а) Как создать ноду
б) Слайдер фотографий
в) Вложение файлов
г) Отображение списка материалов определённой категории
д) "Простые" страницы
е) Построение меню
и некоторые другие я уже решил.
Фильтр-блок с помощью Views
Я наконец смог подобрать почти идеальный пример фунционала, которого хочу добиться. Пример находится в прилагаемом файле.
Суть такова:
1. Производители и тип - это два отдельных словаря таксономии
2. Набор чекбоксов справа - это отдельный блок, чекбоксы в котором соответствуют словарям таксономии
3. Кнопка (ссылка) Показать фильтрует выбранный конент (ноды, к каждой из которых привязаны 1 или более терминов из каждого словаря), так же, как это происходит на Яндекс.Маркет.
Taxonomy menu + PathAuto
Спасибо большое за помощь, вроде бы разобрался. Нужно было пересоздать все алиасы, так как меню уже существовало.
Скрыть ноду из списка
Скрыть ноду из списка
Прочёл. Всю. Стоит на что-то обратить особое внимание?
Скрыть ноду из списка
Возможно, я как-то не верно интерпретировал выше описанный текст из другого мануала (на английском)? Подскажите пожалуйста, почему хук не вызывается вообще?
Скрыть ноду из списка
Если я правильно понял, получение списка нод на главную страницу, выбор нод по тегу таксономии и просмотр нод - не создают запрос в базу данных?
Скрыть ноду из списка
Я не совсем это имел в виду. Создать ссылку в меню на страницу конфигурации модуля (например) - это наименьшая из проблем, всё это детально описано в книге "Drupal 7 Pro Development".
ser_house, ещё раз спасибо, попробую разобраться с hook_node_access().
Скрыть ноду из списка
Мне в голову, закралась сакральная мысль о том, что hook_node_access() будет работать для зарегистрированного пользователя, скорее всего, даже для группы пользователей. В моём же случае, пользователи чаще всего не будут иметь регистрации (прописки на сайте).
Скрыть ноду из списка
ser_house, hook_menu_alter() - мне кажется, эта функция не понадобиться, по той причине, что меню изменять не нужно. Сами пункты меню строятся на основе другого словаря, грубо говоря словаря "МЕНЮ". Дополнительный словарь нужен как раз для более тонкой фильтрации нод, то есть если мы меню было многоуровневым, то он основе второго словаря - строились бы подпункты. То есть, удалять/добавлять/изменять пункты меню не нужно.
Ещё раз благодарю за информацию! Пойду исследовать hook_node_access().
Скрыть ноду из списка
ser_house, промучился несколько дней, запутался в конец, но так и не добился достойных результатов.
Если взять во внимание тот факт, что ноды отображаются по тегу таксономии (по ссылки созданной модулем TaxonomyMenu), возможно, есть какая-то возможность, например удалить с нужных нод эти теги, перед их выводом? И тогда ноды не будут отображаться в списке. Существует ли подобная функция, которая бы позволила удалить теги с нод перед построением списка нод через таксономию?
Скрыть ноду из списка
Вроде бы, всё дошло. Что бы "выбрать" нужные ноды, нам необходимо не просто "удалить из списка НЕ нужные", а загрузить список с нужными. Для этих целей используется функция node_load_multiple(), в которую мы передаём идентификаторы нод и пр. информацию. Затем, полученный результат, мы передаём в функцию node_view_multiple().
Я всё верно понял? Для вывода списка "нужных" нод, требуются ещё какие-то манипуляции?
Скрыть ноду из списка
ser_house, спасибо большое за помощь! Сейчас попробую разобраться со всей этой "бедой"
Ответ получился весьма исчерпывающий, спасибо ещё раз!
Скрыть ноду из списка
ser_house, большое спасибо за информацию, но это не совсем то, что хотелось бы. Копирование своих файлов в текущий шаблон - не годится.
Скрыть ноду из списка
Опишу ситуацию ещё более подробно. У нас есть пользователь, который зашел на сайт. У этого пользователя, есть некая кука в браузере, в которой содержится значение либо 0, либо 1. Либо этой куки вообще нет, и тогда по мы используем значение по умолчанию = 0;
Если значение куки (или любой отдельно взятой переменной, как Вам удобнее) == 0, то мы должны отображать для этого пользователя только 3 ноды, с номерами 1, 4, 5. Если значение куки (переменной) == 1, то мы должны отображать для пользователя все 5 нод (1, 2, 3, 4, 5).
Скрыть ноду из списка
Уточнение:
Я имею в виду реализацию, на уровне модуля (программирование).
Уже попробовал:
Получил список всех нод с помощью функции:
hook_node_load()
Попытался сделать:
unset для одной из нод - эффекта это не дало никакого. При этом, например, заголовок любой из нод - я могу сменить без каких либо проблем. А вот временно удалить (скрыть) её из вывода - не получается.
Скрыть ноду из списка
Уважаемая администрация, перенесите пожалуйста тему в раздел "Программирование". Благодарю.
Фильтр-блок с помощью Views
Я думаю, ими пользуются их авторы, по крайней мере, на стадии разработки.
Но всё же, мы далеко уходим от изначальной темы вопроса.
Можно упростить задачу, давайте предположим что такой функционал требуется от 6-ой либо 7-ой версии Drupal, не обязательно исключительно v7.
Фильтр-блок с помощью Views
Это разумеется, самое логичное решение, я не спорю. Но мне казалось, что среди более чем 17 тыс. модулей есть что-то уже готовое, способное решить данную задачу, а среди сообщества есть люди которые её уже решали и могут/готовы помочь советом. Или я не прав?
Отфильтровать ноды
Я не говорил, что нельзя использовать VIEWS, я лишь поинтересовался, можно ли это сделать без VIEWS?
И ещё, подскажите пожалуйста, можно ли как-то реализовать автоматическую фильтрацию при выборе нового пункта? То есть, пользователь выбрал пункт (или чекбос[ы]) и после его выбора, контент автоматически отфильтровался (либо обновилась страница, либо с помощью AJAX).
Слайдер картинок в ноде
Serge66, спасибо большое, это именно то, что я искал!
Остался пожалуй последний вопрос, есть ли этого модуля аналоги?
Оптимальный набор ПО для Drupal 6/7
marazmus, спасибо большое за подробный и развёрнутый ответ! Улыбнуло
Views на главной странице
Вы абсолютно правы! Получилось - "сам спросил - сам ответил"
Оптимальный набор ПО для Drupal 6/7
К сожалению, возможности установить "дэнвер" у меня нет, т.к. работаю под Linux ubuntu/debian. Для "локальных проб" вполне хватает и стандартной связки apache2+php5.3+mysql5.1(5.5)
Все сервера работают под управлением Debian 5/6, поэтому, набор ПО интересует именно под Linux, а если совсем конкретно под Linux Debian 5/6.