Функционал Друпал 7: делаем сами

Тема в разделе "Drupal", создана пользователем prikhodko_eu, 27 июн 2016.

  1. prikhodko_eu

    prikhodko_eu Webmaster

    Если администрация форума мне позволит, переношу сюда все пошаговые инструкции по работе с Друпалом со старого форума. Если нет - удалите темку, плиз.

    Вывод блока анонсов последних записей с картинками

    Для этого нам нужны модули Views и Display Suite.

    1. Идем в ДС и создаем view mode с параметром node (не путать с модулем вьюс)
    2. Далее идем во вьюс и создаем новое представление с параметрами: блок - содержимое - статья (article), ну или любой другой тип контента, информацию которого надо вывести в сайдбаре
    3. Теперь идем в редактирование вашего типа материала и разрешаем выбранный вами view mode
    4. Далее нам нужно выбрать layout. В параметрах редактирования статьи есть ДС, выбирайте нужный вам дизайн. Я рекомендую один лист. Сделать блочную конструкцию можно через вьюс.
    5. После того, как вы выбрали нужный дизайн, у вас появляется возможность добавить много разных вариантов блоков и добавить новые. Выбирайте то, что нужно для отображения ваших тизеров: картинку, заголовок, описание, ссылку на категорию и т.д.
    6. Сохраняем и идем в Blocks и задаем нужный регион для выбранного блока (он уже у нас там есть) - сайдбар.
    7. Кастомизацию дизайна можно сделать через вьюс, выбираем grid и задаем количество столбцов, например - 2 столбца по горизонтали.
    8. Размер картинок делаем, изменяя стили изображений через админку.
    ВСЕ!
     
    prikhodko_eu, 27 июн 2016
    #1
    Dreamy и FlaShka нравится это.
  2. prikhodko_eu

    prikhodko_eu Webmaster

    Создание title страницы, отдельного от h1 заголовка

    Я долго мучилась над этим: везде написано, что page title обеспечивает отдельный тайтл для страницы, и в опции редактирования статьи действительно появлялось поле для прописывания тайтла. Однако ничего не получалось: заголовок страницы каждый раз совпадал с заголовком статьи. Оказывается, необходимо совместить два модуля, отвечающих за вывод этой функции. Сейчас мы это и сделаем.

    Для этого нам понадобятся два модуля: metatag и page title.

    1. Сначала идем в page title и смотрим на дефолтный паттерн: [current-page:page-title] - его необходимо сохранить как есть. Внизу есть еще опции для других типов контента, их не трогаем, чекбоксы не помечаем, все оставляем пустым.
    2. Копируем паттерн и теперь идем в настройки metatag. Там будет список возможных паттернов. Открываем "Материал" и нажимаем "переопределить" или "override".
    3. В заголовок страницы прописываем дефолтный паттерн page title. Сохраняем.

    Готово! Теперь при написании статьи этот паттерн уже будет автоматически выводиться в поле метатегов. Все, что вам остается - это прописывать ваш собственный тайтл в поле page title.
     
    prikhodko_eu, 27 июн 2016
    #2
    Dreamy нравится это.
  3. prikhodko_eu

    prikhodko_eu Webmaster

    ЧПУ на друпал: с категориями и без категорий

    Этот очень болезненный вопрос не давал мне покоя, а именно - как правильно настроить токены в паттернах вывода урлов.

    Вариант первый: название статьи без категории

    Это очень просто: заходим во вкладку pattern и задаем дефолтный вывод для всех нод - [node:title].html (ну или без html на конце, как вам нравится. В этом смысле друпал лучше вордпресс: на ВП надо специальный плагин закачивать для отображения подобного окончания, а в друпале пиши что хочешь).
    и для всех категорий (таксономий): [term:vocabulary]/[term:name]

    Второй вариант: вывод урла типа category-name/article-name.html
    Для всех нод ставим: [node:вашеполе]/[node:title].html

    И последний шаг: запустить bulk updates для выбранного типа материалов. По идее после этого урлы должны автоматически переоформиться. У меня этого не произошло, пришлось делать все ручками. Зато после запуска апдейта заработала транслитерация, так что можно смело задавать автоматическую генерацию урлов: не будет ошибок и дублей.
     
    prikhodko_eu, 27 июн 2016
    #3
    Dreamy нравится это.
  4. prikhodko_eu

    prikhodko_eu Webmaster

    Красивый слайдер контента средствами Views Slideshow с собственными стилями.

    Этот слайдер можно сделать самостоятельно, используя представление views, но для этого еще понадобится ряд других нужных модулей:
    Views slideshow
    Display Suite
    Panels
    Cycle
    Jquery update (чрезвычайно важный модуль, про него никто не упоминал, но у меня слайдер без него не работал!)
    Jquery Cycle

    Точно не уверена, но могут понадобится Libraries. В любом случае, для корректной работки слайдера, необходима библиотека Jquery.

    1. Итак, первым делом находим модуль Jquery Cycle. Это не совсем обычный модуль, он представлен в виде js-файла. Его необходимо скопировать, вставить в ноутпад++, назвать точно также, как он представляется на официальном сайте и загрузить в директорию: /sites/all/libraries/jquery.cycle.
    2. Теперь скачиваем остальные вышеуказанные модули и активируем их в админке.
    3. Следующий шаг: создаем view mode для слайдшоу, сущность выбираем node. Этот мод мы создаем, естественно, с помощью Display suite.
    4. Теперь нам надо привязать этот мод к типу контента, который мы хотим выводить в слайдере. Например, article. Идем в тип контента, открываем вкладку custom display settings, ставим галочки напротив нужного нам мода. После этого он автоматически появится во вкладке выбранных способов отображения этого типа контента.
    5. Настраиваем мод: если хотите, чтобы в слайдере выводился контент каким-то определенным образом, например, фото слева, а текст - справа, то выбираем layout - Panels - Two column bricks. Сохраняем. Теперь можно выбрать нужные элементы и поставить их в нужные поля. Важно: изображение должно быть в формате cycle. Можно прикрутить свои стили к выводу. Например, в форме написания материала вывести поле, в котором будет описания конкретной статьи именно для слайдера: это избавит вас от дублирования контента.
    6. Создаем вьюшку в виде блока для содержимого. В настройках указываем формат slideshow, show - Display suite. В настройках указываем тип вывода тот мод для слайдшоу, который был создал ранее.
    7. Теперь ставим блок в выбранный вами регион и наслаждаемся красивым слайдшоу!!! Слайдер интегрируется в вашу тему и забирает стили оттуда.
     
    prikhodko_eu, 27 июн 2016
    #4
    Dreamy нравится это.
  5. prikhodko_eu

    prikhodko_eu Webmaster

    Как вставить javascript в ноду

    Дело такое: надо было вставить html-форму и к ней - яваскрипт код калькулятора, и чтобы все было на одной странице. Билась с этой проблемой полдня. Многие советуют использовать drupal_add_js, но он у меня не заработал.
    Решение найдено:

    1. Ставим плагин Display suite и Panels.
    2. Создаем новый тип контента и задаем во вкладке manage display новый layout из Panels (у меня это идет лучше всего: тогда сразу много разных типов полей предлагается создать).
    3. Щелкаем custom fileds и выбираем add code field.
    4. Вставляем в поле наш яваскрипт и сохраняем.
    5. Вставляем поле в выбранный нами тип контента.
    6. Создаем блок и вписываем туда в режиме source форму с html-кодом. Сохраняем без переключения в визуальный редактор.
    7. Выводим блок на нужной странице (на той, что мы вывели яваскрипт).

    ВСЕ!!!
     
    prikhodko_eu, 27 июн 2016
    #5
    Dreamy нравится это.
  6. prikhodko_eu

    prikhodko_eu Webmaster

    Как сделать список всех опубликованных материалов юзера из его личного кабинета

    Эта задача стояла у меня уже с тех пор, как я стала делать сайт вакансий. Надо было связать все записи определенного юзера с его аккаунтом. В данном случае это были публикации вакансий из определенного типа контента. Я мучилась с этой невыполнимой задачей несколько дней и уже стала грустнеть, осознавая собственную, простите, тупость. Но внезапно пришла подсказка из одного сообщества Вконтакте, а дальше уже я делала по наитию. И у меня получилось. Итак, как же это сделать?

    1. Создаем тип контента и называем его как хотим (у меня это Job). Создаем там свои поля и вывод с помощью DS и Panels.
    2. Идем во views и создаем тип "блок". Задаем неформатированный список из полей.
    3. Добавляем поля. Можно делать что угодно, смотря, что вы хотите вывести. Я на всякий случай вывела еще и имя, чтобы проверить, что действительно вывод ссылок привязан к определенному юзеру, а не ко всем подряд.
    4. Filter Criteria - вот тут будьте внимательны:
    Content: Published (Yes)
    Content: Type (= Job)
    (author) User: Current (Yes)
    5. В Relationship указываем:
    Content: Author
    6. Список получился некрасивый, поэтому можно его немного привести в порядок. Для этого меняем неформатированный список на табличку, и выводим наши поля там, где хотим: справа, слева и посередине. Если у вас в полях ноды есть фото, то можно и его вывести и показать в табличке со ссылкой на материал.
    7. Теперь идем в блоки, находим наш блок и прикрепляем его к тому региону, где хотим вывести.
    8. Теперь делаем настройки: задаем определенную страницу вывода, а именно - адрес личного кабинета пользователя. ВСЕ!

    В принципе, это все. Совсем приукрашивать вьюшку я не стала, но, в принципе, думаю, возможно вывести красоту, если создать вью мод в определенном типе контента с нужным лэйаутом.
     
    prikhodko_eu, 27 июн 2016
    #6
    Dreamy нравится это.
  7. prikhodko_eu

    prikhodko_eu Webmaster

    Как сделать HTML-карту сайта с помощью views

    К сожалению, плагина, который бы генерировал карту сайта для юзеров на друпале я не нашла. Но не все потеряно, ведь есть такой отличный модуль, как вьюс! С помощью него я создала карту, которая выглядит даже лучше карты из коробки на другом моем сайте (который на вордпресс). Итак:

    1. Идем во вьюс и жмем: создать новый вью. Выбираем:
    - страница
    - неформатированный список
    - поля.
    Жмем галочку: создать линк в меню. Теперь сохраняем и редактируем.
    2. Теперь выбираем, что мы покажем. В пункте "Поля" выбираем показывать заголовок и название категории (то поле, по которому вы группируете все свои статьи).
    3. После этого переходим в настройки вывода неформатированного списка и выбираем: "Grouping field Nr.1" - то самое ваше поле категории.
    4. Открываем настройки вашего поля категории в разделе "Поля" и выбираем: отменить отображение (Exclude from display).
    5. Фильтр критериев - выбираем "опубликовано" и "тип материала".
    6. Сортировка: по дате публикации.

    Все - ваша карта сайта должна работать. Все статьи группируются по категориям.
     
    prikhodko_eu, 27 июн 2016
    #7
    Dreamy нравится это.
  8. prikhodko_eu

    prikhodko_eu Webmaster

    Как удалить ошибки базы данных

    После установки друпала в админке а также - во фронтенде появлялось окно ошибки в файле bootstrap.inc. Известно, что такие окна довольно опасны: она показываются даже рядовому посетителю и отображают полный путь до базы данных. Как исправить ошибку базы данных?
    Как я выяснила, очень часто проблема именно в неиспользуемых переменных или ошибках темы. Убрать ошибку можно с помощью чистки таблиц базы данных.

    Итак:
    1. Устанавливаем модуль Variable check.
    2. Идем в меню Reports и жмем Check system variables.
    3. Если есть ошибка, то система показывает таблицу, где самый левый столбец - нужная нам переменная.
    4. Копируем ее название и идем в базу данных, ждем "поиск" и выбираем в каких таблицах искать. Я выбрала все на всякий случай.
    5. Находим нужную таблицу, ждем чекбоксы и кликаем: удалить.

    После того, как таблицы почищены, ошибка исчезает!
     
    prikhodko_eu, 27 июн 2016
    #8
    Dreamy нравится это.
  9. Dreamy

    Dreamy Webmaster

    Да, надо бы там всё полезное скопировать, писали для себя… чтобы и поделиться, и потом легко найти. Мои тоже скопируй, ок?
     
    Dreamy, 27 июн 2016
    #9
  10. prikhodko_eu

    prikhodko_eu Webmaster

    Хорошо, сделаю))))
     
    prikhodko_eu, 27 июн 2016
    #10
  11. prikhodko_eu

    prikhodko_eu Webmaster

    Пошаговые инструкции от Dreamy:

    Клонирование типа материала

    МодульBundle copy:https://www.drupal.org/project/bundle_copy- версия7.x-2.x-dev (в версии 7.x-1.1 клонирования нет!!)

    1. Ставим модуль, идём в Типы материалов: Управление › Структура › Типы материалов.
    2. Кликаем наКлонировать.
    3. В полеSource Bundleвыбираем тип, который желаем повторить.
    4. В полеNew Bundle Nameпишем название нового типа материала, после ввода появится поле "Машинное имя", где вводим латиницей.
    5. Жмём кнопкуКлонировать.

    Тип материала дублируется полностью, поэтому в настройках нового типа нужно внести необходимые коррективы.
     
    prikhodko_eu, 27 июн 2016
    #11
  12. prikhodko_eu

    prikhodko_eu Webmaster

    Если слетела иерархия Админ меню

    Сегодня у меня случилась беда: грохнулась иерархия админ меню, и всё перемешалось. Особенно пострадала панель "Содержание" - там в ряд выстроились и пункты меню, и типы материалов - всё красиво так, по алфавиту, и совершенно бестолково. [​IMG]

    Что только не делала: чистила кэши, пыталась навести порядок через Меню Админ-меню, меняла настройки, сносила модуль, ставила стабильную версию, ставила самую новую, … Все меры помогали лишь частично, там меню экранов на сто!! [​IMG]

    Гуглила, но ничего не находила - видно, только у меня такая бяка произошла. Потом стала читать всё подряд про админ-меню на друпаловском форуме. Обратила внимание на упоминание недостатка памяти.

    Итак, что помогло.

    1. Дождалась, пока на сайте уменьшится число юзеров (ночи ждать не могла, уже трясло от досады) и сделала бэкап, почистила кэш.
    2. Отключила модуль.
    3. Удалила его в админке.
    4. Перевела сайт в офф-режим.
    5. Удалила модуль через фтп.
    6. Сделала апдейт (update.php).
    7. Залила стабильную версию.
    8. Включила модуль в админке.
    9. ВСЁ исправилось!!
    10. Вернула сайт в онлайн-режим.

    Подозреваю, что прежние переподключения модуля не помогли, поскольку включала модуль уже в онлайн-режиме, а там требуется очень много памяти для построения меню.

    И самое главное: не нужно вообще ничего менять в иерархии меню Админ меню - толку никакого, только хуже становится. Подозреваю, что с этого всё и началось (я решила выключить лишние позиции).
     
    prikhodko_eu, 27 июн 2016
    #12
  13. prikhodko_eu

    prikhodko_eu Webmaster

    Как вывести представление на страницу в поле

    1. Подключить модульviewfieldhttps://www.drupal.org/project/viewfield
    2. Создать представление (достаточно дефолтного отображения).
    3. Создать в типе материала поле, выбрав в списке типов данных "представление".
    4. В параметрах поля отобразится список всех имеющихся представлений, там поставить галочку в нужном.
    Там есть ещё настройки, но я в них до сих пор не разобралась, использую методом тыка, выбирая то, что подходит в конкретном случае.


    Этот способ особенно удобен для вывода контекстных представлений, которые относятся только к данной странице. Например, как у тебя - вывести в резюме список всех вакансий этого юзера. Для этого в представлении нужно добавить аргументы (контекстные фильтры). Наверно, твоё представление сработает.

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

    Думаю, пора создать топик только о представлениях, тема широкая. [​IMG]
     
    prikhodko_eu, 27 июн 2016
    #13