Прошу совета, как грамотно сделать. Есть путь:
/Новости/Уфа/Канализация/
Можно создать отдельный views для каждого раздела. Можно создать много страниц внутри одного views. Как грамотно сделать? Спасибо за ваши ответы.
Прошу совета, как грамотно сделать. Есть путь:
/Новости/Уфа/Канализация/
Можно создать отдельный views для каждого раздела. Можно создать много страниц внутри одного views. Как грамотно сделать? Спасибо за ваши ответы.
Я видел сайт, где так делали, это было 100500 представлений. Я заменил 100500 представлений на одно. Это ответ на ваш вопрос "как правильно"
Комментарии
Собственно, а вопрос то в чем? Как грамотно сделать что?
Спасибо за отклик!
Вопрос как правильно сделать? Вывести каждую категорию отдельным представлением, или выводить категории пейджами внутри одного представления? Можно вывести и так и сяк. Но как это сделать разумно. Разумно насоздавать гору пейджей (страниц) внутри одного представления. Или сделать гору представлений для каждой категории. Вот.
Категорий будет много.
Если "Уфа" и "Канализация" - это термины таксономии, а представления для каждого термина одинаковые по структуре, то нужно сделать всего ОДНО представление с контекстным фильтром/фильтрами.
Спасибо за отклик.
Хорошо. А если нужно вывести "Уфа" "Дороги"? То создать страницу внутри представления Уфа, или создать отдельное представление "Дороги"? Url соответственно будет /ufa/roads/.
Ни то, ни другое. Создать ОДНО представление с аргументами "Город" и "Рубрика" (тут Вам виднее как назвать).
PS Создание представления "Уфа" - первый шаг на пути в ад.
Ничего не понимаю. Сейчас у меня есть одно представление "Главная страница". Мне нужно вывести урлы:
Мне казалось, что нужно создать представления "Уфа" "Дороги" "Деревья". На их основе сформировать меню. Боковое меню выведу блоком и все.
Но внутри настроек представления есть возможность "создать страницу". И сделать тоже самое в одном представлении Уфа.
Я видел сайт, где так делали, это было 100500 представлений. Я заменил 100500 представлений на одно. Это ответ на ваш вопрос "как правильно"
Вот и я об этом. Чуствую, что не правильно. Решил спросить как правильно. А вы не поделитесь, как вы там решили вопрос с 100500 представлений?
Вам marassa выше ответил. Нужно использовать контекстные фильтры.
Все равно не понятно
Зайду я в представление "Главная страница". Настрою контекстный фильтр. Выведется на главной один вид конкретного материала. Ну а дальше как? Все равно надо создавать другое представление "Уфа" и настраивать там критерии фильтрации. Иначе как вывести меню?
Таксономия - набор словарей и терминов. Там структуры, иерархий нет.
Не надо трогать представление главной страницы. Нужно новое создавать
Хорошо.
Вот создал я новое представление "Уфа". Настроил его, чтобы выводились ноды связанный с городом Уфа. Сделал пунк меню: /ufa/. Теперь мне нужно сделать подраздел города - дороги. Как мне это сделать? Создать page внутри представления Уфа и настроить там контекстные фильтры, переопределить критерии фильтрации? Так получается?
Не нужно представление "Уфа". Представление вообще не должно быть привязано к контекстному фильтру
Я не знаю как объяснить. Смотрите видео по контекстным фильтрам столько раз, пока не наступит просветление. Я именно так и делал
=((((( Пойду создам 100500 представлений и пусть работает.
Теперь удалите его. Создайте новое представление "Город". Добавьте контекстный фильтр "Город".
Создайте новое представление "Подраздел города". Добавьте контекстные фильтры "Город" и "Подраздел".
Хорошо.
Так это представление будет показывать ноды всех городов... А мне нужно показывать ноды Уфы и чтобы урл был выведен в пункт меню.
Я тоже сдаюсь...
1. Создаю представление город.
2. Настраиваю контекстыне фильтры чтобы выводились материалы ВСЕХ городов.
3. Настраиваю ссылку /city/
Теперь. Как мне сделать /city/ufa/? Создать page внутри представления Город? И в нем все переопределить как мне надо?
http://redcrackle.com/blog/adding-contextual-filter-view-drupal-8
Спасибо за отклик.
Так это получится 100500 представлений. И для каждого урла свое представление со своими фильтрами. В треде говорят, что так делать не надо. А как надо - не понятно.
Добавляете словарь таксономии Города(если не добавлен)
"технический" урл термина таксономии: taxonomy/term/<идентификатор термина>
Но все урлы в друпал могут иметь алиасы и даже несколько.
Значит, надо добавить для городов алиасы.
Для этого ставите модуль https://www.drupal.org/project/pathauto
Для словаря Города настраиваите шаблон алиаса, например такой:
city/[taxonomy_term:name]
[taxonomy_term:name] - это токен для подстановки имени термина, список токенов должен быть на странице настройки шаблона.
И генерируете урлы для существующих городов, для новых они будут создаваться автоматически.
Итак, урлы готовы.
Далее нужно меню с этими урлами.
Способов его создать море.
Можно сделать такое меню вьюсом типа блок, или данным модулем:
https://www.drupal.org/project/taxonomy_menu
Далее необходимо создать вьюс с контекстным фильтром типа "страница".
Вьюс делаем по нодам.
урл вьюса: city/%
Добавляем контекстный фильтр: ID термина таксономии(выбираем наименование поля ноды типа Термин таксономии, словаря Города), в настройках фильтра указываем, откуда брать этот ID.
Точно не помню как этот пункт называется, что-то типа: получить ID из урла страницы.
Если нужно будет указать номер секции урла, которая является ID термина, помните, что это работает не с алиасом урла (city/%), а оригиналом (taxonomy/term/ID)
и номером секции будет 2 или 3(непомню, отсчет начинается с 0 или 1)
все, в итоге получается:
1.Меню по городам.
2.При переходе по ссылке меню открывается вьюс, который выводит ноды связанные с текущим городом.
Для фильтрования нод города по рубрике, проще сделать обычный фильтр вьюса в виде меню (есть такие модули на drupal.org, типа такого: https://www.drupal.org/project/better_exposed_filters и т.п.) или тем же блочным вьюсом.
Какой кошмар =((((. Это ад. Может я не правильно вопрос задал?
Мне всего лишь надо сделать так:
/city/
/city/ufa/
/city/ufa/trees/
Я вообще не понимаю, как один вьюс сделает мне три таких категории... А если надо создавать три вьюса, то почему не создать их с обычными фильтрами а не динамическими контекстными...
Спасибо за такой большой развернутый ответ.
Категории должны быть сделаны терминами таксономии. Вьюс будет для вывода этих терминов или их содержимого
та здесь человек принял друпал за вордпрес и ищет простое решение. Он не учил друпал и не будет и к програмированию мне кажеться он е имеет отношения. Советовать ему как начинаючему даже разработчику не имеет смысла. Он не только не поймет, а даже разбирать не будет
Сделает свои три view и будет счастлив. И пофиг ему на то что и как правильно, работает и отлично, сам сделал все таки, бесплатно
Прям с языка снял)
Было бы мне пофиг, на форуме не спрашивал. Я благодарен, что люди уделили время и объяснили, дали пути поиска. Жаль что мне не понятно пока. Но ничего. Разберусь. И да. Друпал сложнее жумлы. Не знаю достоинство это или недостаток.
А тут и не надо ничего программировать, всё делается мышкой за пять минут.
Если их три, то так и надо делать. Но изначально-то утверждалось , что
УРА!!! Получилось! Прочитал 101 раз ваше сообщение и разобрался как это работает. Вы не наведете на путь, как сделать, чтобы вместо
Можно было указать
И ноды вывелись по контекстному фильтру? Облазил все настройки фильтра. Есть опции "Необработанное значение из урл -> использовать синоним пути", но фильр все равно работает только по идентификатору.
Спасибо.
По ссылке /admin/config/search/path можно указать синоним для любого пути, т.е. /city/1 => /city/ufa или даже просто /ufa . Но опять же вручную это прописывать для каждого города (уж не говоря про каждое сочетание города и рубрики) замучаешься. Для городов можно использовать pathauto (как советовал Orion76). Для всех сочетаний города и рубрики навскидку не знаю, надо думать.
Стоит поиграть с аргументами и их настройками, во-первых, там можно передавать имя термина, во-вторых, возможно получится передавать в качестве аргумента какое-нибудь поле из термина.
Тогда вы можете в термине создать поле, например, slug, писать туда "ufa" и его использовать для урлов
Спасибо за отклик.
Сделал. Работает. Но дублируются ноды почему-то. Вместо двух нод, выводится четыре, две из которых - дубли. Да и способ выглядит как то костыльно.
Тоже сделал. Ноды не дублируются. Но название термина "Уфа". И фильтр срабатывает по адресу "%/Уфа". А должен срабатывать по алиасу "ufa".
Я правильно понимаю, что самый правильный, и без костыльный способ, это руками править синонимы путей? Получается только так.
При генерации алиасов необходимо транслитилировать кириллические текст в латиницу.
city/Уфа -> city/ufa
Для друпал-семерки нужен был специальный модуль, для drupal 8 данный функционал в ядре:
https://drupal.ru/node/132683
К сожалению, файл скрина с настройками (по указанной выше ссылке) отсутствует, но наверное будет не слишком сложно самому найти данную опцию (включения транслитерации алиасов) в настройках генерации алиасов модуля pathauto.
Всё сугубо зависит от количество терминов и возможностей.
С десятком терминов - проще руками добавить алиасы и вообще не думать ни о чём
Не знаю. Каждое действие в друпал8 дается с боем и скрипом. Как работать с котекстными фильтрами - уже разобрался. Теперь запнулся об алиасы... Установлен и работает Pathauto, шаблоны такие:
Для материалов:
Для терминов таксономии
Алиасы создаются только на английском, транслитерация включена. Но контекстные фильтры работают или по системным путям
или по именам таксономии кирилическим
Не понимаю, как это должно работать. Если Pathauto создал синонимы, то как то они автоматически должны использоваться в путях, а не руками забирать каждый возможный вариант пути...
Вопрос 1: Сайт чисто русскоязычный, и все термины создаются только на русском языке? Соответственно алиасы "на английском", а точнее в транслите, взять неоткуда, и они могут только генерироваться из русских, так?
Вопрос 2: А так ли важно как выглядят пути к вьюхам?
Да.
Да. Они генерируются модулем Pathauto из русских имен.
Важно, добится простой структуры:
Чтобы навигация была интуитивной. Работали хлебные крошки. Сформировалось простое понятное меню.
Пользователи редко заглядывают в адресную строку браузера, а многие даже не подозревают о ее наличии, так что про интуитивную навигацию не очень понятно. Хлебные крошки и меню в любом случае должны формироваться на русском языке и не обязаны строго повторять структуру URL'ов.
1. Вот вот. Построить все на контекстных фильтрах. В строке браузера будут или цифры, или кириллица. Хлебных крошек не будет.
2. Сделать 100500 представлений. Будут хлебные крошки, латинские урлы.
Пока искал решения, зашел на страничку никлана. У него цифры ). А ведь он умеет IDE и напильник =).
Значит это действительно не так важно и есть более важные вещи, на которые стоит потратить время)
На самом деле я очень близко подошел к решению. Сейчас pathauto генерирует алиасы для пути:
Мне нужен шаблон pathauto, который сделает алиасы для урлов типа:
Тогда я буду в дамках )
Это "технический" урл (роут, route) термина таксономии..
Чтобы добавить урл типа
скорее всего придется код писать или искать какие либо другие "не стандартные способы".
Скорее всего Вам будет проще сделать для городов и категорий один словарь таксономии в 2-3 уровня
Да, 2-3 уровень (категории-подкатегории) для разных городов будут дублироваться, зато не надо будет делать 100500 вьюсов.
Будут работать стандартно хлебные крошки (настроить их для отображения пути для словаря таксономии с иерархией как 2 пальца об...)
И сгенерировать "многоуровневые" алиасы (типа city/город/категория)
будет намного проще.
Еще проще, пока не достигнете нужного дзен-уровня, забить на красивые урлы и сделать "категории" раскрытыми(exposed) фильтрами вьюса.
Для хлебных крошек куча готовых модулей на орге на любой вкус, разной степени "замороченности" с достаточно широким функционалом.
PS
Неужели прямо из "Деревья" получается "trees", а из "Дороги" - "roads"???
Извините, транслитерируются ).
А чем /derevyya/ лучше чем /деревья/ или /43/?
Интуитивностью восприятия. Но это не точно ))).