简体   繁体   中英

Drupal page content

I'm new to drupal and reading through docs, but hoping to get an explanation for something.

I have a page called page--type-home-page.tpl.php. Part of this page prints render($page['content'])). I want to remove something that is rendered as part of the page content from the page, but don't understand where this comes from and where/how to look.

Thanks!

Assuming you're talking about Drupal-7

Well the $page['content'] contains a string, which is a rendered version of what's injected into the content region of your theme.

By default, the only block in this region is the "Main page content" block that is generated by the Drupal core. Many things can generate this content but it always pass through the menu API. For instance, if you're viewing a node, the URL used is: node/12 . The node module declares a menu entry for node/%node , this menu entry contains a callback function that will render whatever the module wants to render. The module, then, may use different strategy to render it's content from a simple function to a complex imbrication of templates.

The key to alter what's in the box, sorry, what's in the $page['content'] , is to know what is rendered and to understand how it's rendered.

If it's a node, first you want to look if you can achieve your goal through the display settings of the content type. admin/structure/types/manage/page/display : And this is true for all entities (users, comments, taxonomy term etc.) Because this is the first thing the module of these entities will put together when they'll try to render your content.

If this is not enough to achieve your goal, you can look into the module that renders the path to see if it hasn't a .tpl.php . You'll be able to re-use it in your theme. You'll want to copy/paste the file in your theme and edit it.

If the module do not have a tpl file to override, try a template suggestion: here's a list from Drupal.org

Ex: node--type.tpl.php

If all this doesn't satisfy your need, you'll have to dig into preprocess functions ; Those functions allow you to modify what's in the variables passed to .tpl.php files. That's a little more advanced and I recommend you to read this previous stackoverflow question/answer

Simply, don't use that $page['content'] which prints all content, but place your custom template code instead and print separate field values where you need them like:

<?php print render($content['your_field_name']); ?>

https://drupal.stackexchange.com/questions/30063/how-to-print-fields-in-node-tpl-php

If you want to do just simple styling, like excluding some field you can use content type display options like mgadrat explained, but if you want to use some complex styling, with totally custom html this solution is easier.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM