Может ли функция темы быть реализована в файле модуля?

Например, в теме bartik он имеет

/**
 * Implements theme_menu_tree().
 */
function bartik_menu_tree($variables) {
  return '<ul class="menu clearfix">' . $variables['tree'] . '</ul>';
}

Есть ли способ переопределить его через файл .module?

6 голосов | спросил gilzero 25 Jpm1000000pmWed, 25 Jan 2012 13:48:38 +040012 2012, 13:48:38

1 ответ


9

Модули могут создавать начальную реализацию функции темы, но они не могут переопределять существующие функции темы.

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

ответил googletorp 25 Jpm1000000pmWed, 25 Jan 2012 14:04:08 +040012 2012, 14:04:08

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132