Drupal's category (taxonomy) name of article (node)? - drupal-7

Developing my custom Drupal's theme. it will contain custom node.tpl.php file.
How can i get and print related taxonomy names of selected node?
Tnx in adv!

EDIT: Doh, my apologies, I'm just now seeing the Drupal 7 tag, specifically. It appears this thread has some possible solutions: http://drupal.org/node/909968
With D6 (not 100% about D7) In the node's template .php files (and similarly, in a view or most anywhere you have access to a node's properties with custom PHP, like a View or Block), you can use the following:
// returns array of taxonomy objects for given node
$tax_terms = taxonomy_node_get_terms($node);
// prints each term name
foreach ($tax_terms as $tax) {
print $tax->name;
}
Also, there's a few useful Drupal functions for cases like this:
// print_r's all properties of a given node, similar to devel
dpr($node);
// using this in the above 'for' look will give you all properties of each taxonomy object
dpr($tax);
Here's a website that lists a few more of these functions.

Related

Drupal 7: How do I extract specific field in a taxonomy page

How do I extract specific field for display in a taxonomy page?
I have a custom content type called "film" and each film has a Term Reference field called "casting". As expected I can click on a "casting" (tag) it brings me a page where all films are listed wherever this tag is associated. For expample if I click on "Kate Winslet" from movie Titanic, I land on a page http://localhost/mysite/tags/kate-winslet where other movies of Kate Winslet are listed. Up to this point everything is just fine.
I do not want Drupal to pull in and show default fields like just Title and Body in its own display format. Rather I want it so that I can display a photo from each film, year of release and of course the title and trimmed version of the body. I only want to customize the content of this page so that I have the control over What to Show and Where To Show a specific field value.
This is what I tried:
I cloned and put page.tpl.php in my theme's template folder. Renamed it as page--vocabulary--tags.tpl.php. Then I took out the following line of code (<?php print render($page['content']);?>) from my page--vocabulary--tags.tpl.php. The intention was to check whether the overridden template is actually being accessed by Drupal or not. It does!
But I am not been able to extract fields like field_photo or field_release_date from $page['content]. To get an idea about defined variables and how they are placed I used the following line of code:
<pre><?php /*print var_export(get_defined_vars(), TRUE);*/ ?></pre>. But even from there I could not extract a particular field like I mentioned above. The fields look to be somewhere inside $page['content']['system_main']['nodes'], but I don't know how to get to a specific field directly.
I also created a template.php with the following preprocess hook function:
<?php
function introduction_preprocess_page(&$vars) {
if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) {
$term = taxonomy_term_load(arg(2));
$vars['theme_hook_suggestions'][] = 'page__vocabulary__' . $term->vocabulary_machine_name;
$vars['content'] = $vars['page']['content']['system_main']['nodes'];
}
}
?>
Both <?php print render($content) ?> and <?php print render($page['content']) ?> print the same result but I want something like <?php render($content['photo_field'])?> which I am not been able to.
I am sorry for making this too long. I have just stepped into Drupal. So wanted to make sure that what I am trying to explain matches exactly what I want to accomplish.
You are probably trying the long way to this.
You can use Views module. It allows to create custom listings querying the database, but also override existent ones, like the case of the taxonomy term page listing.
Once you have the module installed (if it's not yet), particularly the Views UI module, go to /admin/structure/views and scroll to bottom, where disabled views (grayed rows) are. You'll find one called Taxonomy term, described as 'A view to emulate Drupal core's handling of taxonomy/term.'
Click Enable on the right of it and then go to the same place where the Enable link is, click the arrow to unfold and choose Edit.
Once you're in the view edit page, you can manipulate the listing at your convenience, adding/removing fields or whatever you want to do in your particular case. If you are not familiar with Views, I recommend you to learn about it, there is a lot of related content on the web and it is close to essential for Drupal development.
Also, if you want to add more customisation to the page, you can use the same approach with the Panels module, who allows to override system pages (not just listings like Views).

Overview page of elements from a Typo3 page tree

I'm primarily a UI and graphic designer and, eventhough I have some experience with Typo3, I'm completely stuck at the following problem:
I have a large page tree with single pages for items from a catalogue (one item per page), the layouts for these items are built with Armin Vieweg's beautiful "Dynamic Content Elements" extension (DCE).
Now I want to create an overview page where I reference some of those items automatically - ideally I want to check a box in each element I want to display there (I would add a field catalogueItemPreview to the item DCE which authors can check or uncheck).
Unfortunately, I have no concrete idea of how the database is structured and how I could build a query (where would I even do that? in a custom-made plugin?).
This is how I imagine it could work: On the overview page I use a plugin/an extension in a Content Element that does the following:
search Typo3 DB for content elements with a field called "catalogueItemPreview"
return fields "catalogueItemTitle", "catalogueItemShortDescription", "cataloguePreviewImage"
use a template to render previews of all those elements on the overview page
I'm happy for ANY pointers towards a solution as currently I'm completely in the dark about where even to begin ...
Schematic screenshot from the Typo3 backend
thanks for using my DCE extension :)
Well the fields you have defined and their values in content elements are stored as XML, because the current version of DCE is based on Flexforms.
This makes it very very difficult to do MySQL queries using one of the field properties in WHERE clause. You could check for a xml string in the field pi_flexform but this is not recommended.
Instead I would use another property of content elements (tt_content) to mark the items as "Show on frontpage". For example you could create a new layout or section_frame value for that. Then it is very easy to just output the elements you want, using TypoScript.

Drupal dynamic Taxonomy term values

I'm new to Drupal, and somehow miss a feature. (or I guess just don't know how to activate it)
Let's say I have a content type which is using the term reference (taxonomy field type)
Is it possible to have it filled dynamically (e.g. with already existing content from my site?
I don't want to type in all possible Tag/Term options, but instead want some kind of dynamic category choice for an author, e.g. feeded by existing content (articles/pages) from the drupal site itself.
Is there a certain module I need or how is it done?
If you want to add to your nodes a reference to another node in your site you need to use a node reference field and not a term reference. To be able to add that kind of field to your content type, you need to install References module, and probably Views to show pages that leverage your references. If you provide some details of your requirements I can be more specific.

Addressing the tab menu in view when using taxonomy

I use taxonomy terms to address my menus(these taxonomy terms show the structure of my site) so when I create a view I should use the taxonomy path (instead of alias) for the page setting (the only way that I can link the view to my taxonomy address path as far as I know :P ). whenever I see the page URL I can see the alias. now I'm trying to set up a page that has 2 tabs. I have set it up but the problem is when I click in the tab I see the taxonomy path instead of alias ? (for example taxonomy/term/6/digital instead of CCTV/digital However default menu tab still work correctly and show the alias CCTV)
Is there any way to show the alias instead of taxonomy term address ?
I assume that you have a view that is filtering your taxonomy terms. If you render the results as fields, each field can have it's formatter. If you need a custom form of the output, you can define your own formatter or generate one via GUI with help of: custom formatters.
In case that you render your output as rendered entity, you need to find the right template file and use the drupal_get_path_alias() function within it.
As last I would hint you a great module that also might help you: taxonomy menu

How to render custom field taxonomy on Drupal 7?

I've created some custom field in my taxonomy vocabulary called Categories:
- fotogallery (multiple files)
- incipit (plain text)
- ...
But I don't know how to render them.
I've tried field_view_field but it refers just to entity. I've tried render and drupal_render also.
Actually I'm accessing directly to $term->field_incipt['und'][0]['safe_value'] property, that I konw it's not recommended.
Any ideas?
Taxonomy terms in Drupal 7 are entities, and as such you can use field_view_field()to safely get the render array:
$view = field_view_field('taxonomy_term', $term, 'field_incipt');
print render($view);
the field_view_field function works for me.
just note you need to send the term entity.
you can get one using entity_load
i.e. $term_entity = entity_load('taxonomy_term', array($tid));
To properly get $term object, you should use taxonomy_term_load() function and pass term id to it.

Resources