2010-11-26 2 views
-3
 $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 to $ i, затем назначьте «страницу» массиву. и я знаю, что arg - это массив в drupal. Например, теперь URL-адрес example.com/node/1. как использовать этот URL для использования вышеуказанного кода.drupal --- код темы

+1

Этот код может сделать что угодно, нам нужен контекст, который он использует. Остальная часть кода на этой странице, вероятно, также поможет. – martynthewolf 2010-11-26 14:47:02

ответ

0

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

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

Так функция будет называться что-то вроде этого:

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

Переменные:

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

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

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

$suggestions представляет собой массив, который содержит сгенерированные идентификаторы, по одному на аргумент, переданный функцию тайны.


В цикле:

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

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

Линия «if (!is_numeric($arg)...» исключает номера из сгенерированного ID (например, «мой/123/статья», вероятно, предполагается производить «мой-статью»)

«$suggestion .= ...» строка добавляет значение «$ Арг»к значению„$ внушения“и сохраняет его в„$ внушения“


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

+0

приведенный выше код находится в «function template_preprocess_page (& $ variables) {} «---- theme.inc --- drupal, но я не могу найти вызов этой функции. – enjoylife 2010-11-27 01:42:16

0

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

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

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

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

  • страница
  • страниц пользователя
  • страниц пользователя 3

И

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

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

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

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

Смежные вопросы