drupal --- код темы - PullRequest
       6

drupal --- код темы

0 голосов
/ 26 ноября 2010
     $i = 0;
   $suggestion = 'page';
   $suggestions = array();
  while ($arg = arg($i++)) {
  $arg = str_replace(array("/", "\\", "\0"), '', $arg);
   $suggestions[] = $suggestion . '-' . $arg;
   if (!is_numeric($arg)) {
    $suggestion .= '-' . $arg;
   }
 }

Я новичок в drupal, я не очень хорошо следую приведенному выше коду, надеюсь, кто-нибудь сможет мне его объяснить. Я знаю, что в первой строке присваивается значение от 0 до $ i, а затем назначается страница для массива. и я знаю, что arg это массив в drupal. например, теперь URL-адрес example.com/node/1. Как использовать этот URL, чтобы использовать приведенный выше код.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

Скорее всего, этот код находится в шаблоне template.php в хуке preprocess_page.Если это так, то он используется для создания предложений шаблонов на основе аргумента, такого как идентификатор узла, чтобы сделать возможным создание шаблона страницы для узла.

Что делает этот код, так это то, что он зацикливается, хотявсе аргументы в Drupal URL, это может быть user/3, node/3, taxonomy/term/3 или любой другой пользовательский URL.

  1. Сначала выполняется некоторая очистка в аргументе, чтобы убедиться, что нетдобавлены странные символы.Это не требуется для большинства URL-адресов, но, скорее всего, это необходимо для безопасности, чтобы в некоторых случаях не приходилось создавать странные имена шаблонов.Это делается с помощью str_replace
  2. Затем он добавляет предложение в список на основе аргумента.
  3. Если аргумент не является числовым, он добавляет это к предложению, поэтому он будетбудет использоваться в следующем цикле.

Идея состоит в том, что вам с указанными выше URL будут добавлены некоторые предложения шаблонов, которые выглядят следующим образом:

  • page
  • page-user
  • page-user-3

И

  • page
  • page-таксономия
  • page-таксономический-термин
  • page-таксономический-термин-3

В этом списке drupal будет использовать последний возможный, так что если page-user-3.tpl.phpсуществует, который будет использоваться в качестве шаблона страницы для user/3, если не будет использоваться page-user.tpl.php и т. д.

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

Однако это не стратегия, которую я хотел бы использовать.Если вы сделаете это, у вас будет множество разных версий шаблона страницы, и в итоге будет создан кошмар обслуживания, который должны были устранить системы CMS.Если вам действительно нужно это множество различных шаблонов страниц, вам следует вместо этого взглянуть на контекст или панели и вместо этого поместить в них некоторую логику.

0 голосов
/ 26 ноября 2010

Похоже, что его назначение - генерировать строки идентификаторов (вероятно, для класса CSS) в зависимости от путей и исключает числовые компоненты пути из сгенерированного идентификатора.Например, 'my/123/article' создает идентификатор "page-my-article".

Кажется, что это происходит от функции (потому что цикл читает параметры, используя arg()), и что он ожидает пути Drupal, такие как "node/123/edit".

Таким образом, функция будет вызываться примерно так:

mystery_function("my/123/article", "even/better/article");

Переменные:

$i - это переменная, в которой хранится индекс цикла

$suggestion - это строка, в которой хранится сгенерированный идентификатор.Он инициализируется как «страница», поскольку предполагается, что идентификатор имеет синтаксис «page-SOMETHING».

$arg происходит из цикла while: он читает параметры, передаваемые функции-загадке один за другим

$suggestions - это массив, содержащий сгенерированные идентификаторы, по одному на каждый аргумент, передаваемый загадочной функции.


В цикле:

"$arg = str_replace..."line удаляет нежелательные символы, такие как" \ "(однако эту строку определенно можно улучшить).

Строка" $suggestions[] = ... "добавляет идентификатор в массив результатов.

The" if (!is_numeric($arg)... "строка исключает числа из сгенерированного идентификатора (например," my / 123 / article ", вероятно, должна генерировать" my-article ")

В строке" $suggestion .= ... "добавляется значение" $ arg ""к значению" $ Suggestion "и сохраняет его в" $ Suggestion "


Но, честно говоря, я бы не советовал использовать этот код: я сомневаюсь, что он работает так, как задумано, учитывая $suggestion isnне инициализируется в каждом цикле, поэтому значение первого пути будет привязано ко второму, и ктретий и т. д., и я сомневаюсь, что это намеренно.

...