Основная модель / понятия друпала - PullRequest
4 голосов
/ 14 февраля 2011

Я перевожу сайт с проприетарного cms (reddot) на drupal.Несмотря на все недостатки Reddot имеет очень простую, но гибкую модель:

  • шаблоны состоят из разметки с заполнителями для переменного содержимого
  • каждый фрагмент содержимого, от полной страницы дообщий фрагмент содержимого боковой панели, и даже одно изображение может быть построено из шаблона, если соответствующий существует

Мое первое впечатление о drupal: вот это сложно!Вместо трех простых объектов теперь я имею дело с узлами, страницами, блоками, областями, представлениями, панелями и т. Д. Какой самый простой способ воссоздать модель шаблона / контента / заполнителя, с которой я знаком?

Ответы [ 3 ]

7 голосов
/ 15 февраля 2011

Reddot использует довольно хорошо сконструированную MVC-подобную систему. Кроме того, из моего ограниченного опыта, Reddot следует , есть только один способ достичь философии Foo .

Приходя в Drupal, особенно как разработчик внешнего интерфейса, вы будете разочарованы, потеряете много волос и, возможно, несколько раз проклянетесь, когда поймете, что все должно быть сделано снова и снова.

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

Когда люди приходят из правильно сконструированных систем в Drupal, я советую им сделать одно: стать прагматиками-экстремистами. Никогда не пытайтесь сделать вещи правильными, чистыми или продуманными. Вы сможете сделать это только после того, как по-настоящему влюбитесь в Drupal. И это только с большим опытом. Просто поиграйте, пока он не сработает, закройте код и никогда больше не смотрите на него .

Первое, что вам нужно изучить, это движок Drupals PHPTemplate, который довольно сильно отличается от Reddots, но имеет много общего. Где Reddot использует RenderTags, Drupals PHPTemplate использует простой старый PHP.

<%!! Context:CurrentPage.Template.Name !!%>  

становится

<?php print $name ?> 

И да, $name полностью глобально ограничен. Помните? Я сказал вам, чтобы быть прагматизмом-экстремистом. Даже не думайте о пространствах имен, объектах и ​​т. Д.

Хотите знать, какие переменные у вас есть? Просто сделайте <?php print get_defined_vars() ?>.

Хотите новые переменные в вашем шаблоне? Вам необходимо препроцессировать их.

Хотите изменить, изменить, удалить или изменить существующие переменные? Вам нужно либо препроцесс , либо переопределение шаблона , либо даже написать новые модули, которые делают новые или разные переменные доступными? Знание того, что выбрать, когда выполнять предварительную обработку, когда создавать модули, когда переопределять, когда применять перехватчики для изменения содержимого, - это опыт. Drupal никогда не задумывался об этом ясно, нет общего правила или наилучшей практики, кроме последних одиннадцати раз, когда Foo-концепция не сработала, возможно, Бар доказал лучшее .

2 голосов
/ 14 февраля 2011

Шаблоны Drupal похожи на те, что вы описываете в reddot, но, возможно, есть больше опций, и они могут быть вложенными.Чтобы получить представление о том, как работают шаблоны, загрузите модуль Theme Developer и просмотрите соответствующий скринкаст.

Чтобы получить представление о «заполнителях», которые можно использовать в данном шаблонепосетите страницу api.drupal.org для файла шаблона или ознакомьтесь с этим Drupal 6 Theming Cheat Sheet .

1 голос
/ 15 февраля 2011

Еще один кусает пыль ..;) Дайте мне знать, как вы идете с миграцией Бобби Джек. Я думаю, что для контента вы могли бы создать вариант XML в CMS и экспортировать все, чтобы повторно импортировать его в Drupal. На заметку Drupal: Как только вы осознаете концепцию шаблонов, которые могут наследовать / перезаписываться, это легко. Это как набор предварительно назначенных классов содержимого в RedDot, которые можно изменить, чтобы отобразить их в другом макете. Аналогичен функциональности «заменить контент-класс».

...