[gelöst] Autorinformation nur für eingeloggte User sichtbar - Hilfe mit PHP/Anpassung in der Node.tpl.php
am 19.07.2012 - 21:54 Uhr in
Hallo,
ich möchte erreichen, dass die Autorinformation eines Artikels nur für die eingeloggten User sichtbar ist. Dazu habe ich folgenden Link gefunden in der der Lösungsweg erklärt ist: http://bit.ly/MMqMCd
Das funktioniert eigentlich auch. Nur habe ich ein fertiges Theme, was ich mir selbst anpasse. Dadurch sieht der PHP-Code anders aus. Hinzufügen des Lösung-Codes bewirkt nur, dass die Information (sofern ich eigeloggt bin) doppelt auftaucht. Wie muss ich also den Code richtig schreiben? Ich habe leider nicht all zu viel Ahnung von php.
Hier ist mein Code-Auszug
<?php if ($display_submitted || !empty($content['links']['terms'])): ?>
<div class="meta">
<?php if ($display_submitted && isset($submitted) && $submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>Und nach der Lösung muss die Ursprüngliche Stelle
<?php if ($display_submitted): ?>
<div class="meta submitted">
<?php print $user_picture; ?>
<?php print $submitted; ?>
</div>
<?php endif; ?>dies hier stehen:
<?php if ($display_submitted): ?>
<div class="meta submitted">
<?php print $user_picture; ?>
<?php if ($logged_in == TRUE): ?>
<?php print $submitted; ?>
<?php else: ?>
<?php print $date; ?>
<?php endif; ?>
</div>
<?php endif; ?>Vielen Dank für eure Hilfe
alaind
- Anmelden oder Registrieren um Kommentare zu schreiben

In Deinem Code-Auszug ist mir
am 20.07.2012 - 07:26 Uhr
In Deinem Code-Auszug ist mir die erste Abfrage (if ($display_submitted || !empty($content['links']['terms']))) etwas unklar: Wenn Autorinfo vorhanden ist ODER links-terms vorhanden ist, soll die Autorinfo angezeigt werden???!! Na ja...
Danach kannst Du ja den Login-Status abfragen. Das zweite if($display_submitted) finde ich dabei überflüssig.
<?php if ($display_submitted || !empty($content['links']['terms'])): ?><div class="meta submitted">
<?php
if ($logged_in) {
print $user_picture;
print $submitted;
}
else print $date;
?>
</div>
<?php endif; ?>
Ich hoffe der Code ist fehlerlos und ich habe Dein Problem verstanden: Wenn eingeloggt, dann Bild und Autorinfo ausgeben, ansonsten nur das Datum.
Hallo und vielen Dank
am 20.07.2012 - 09:49 Uhr
Hallo und vielen Dank erstmal. Ja, du hast mein Problem erkannt. Leider zerhackt mir dein Code die ganze Seite. Vielleicht zur vollständigen Übersicht, das Theme basiert auf Fusion und die vollständige node.tpl.php sieht so aus
?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<div class="inner node-inner">
<?php print $user_picture; ?>
<?php print render($content['field_typ']); ?>
<?php print render($content['field_typ2']); ?>
<?php print render($title_prefix); ?>
<?php if (!$page): ?>
<h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
<?php endif; ?>
<?php print render($title_suffix); ?>
<?php if ($display_submitted || !empty($content['links']['terms'])): ?>
<div class="meta">
<?php if ($display_submitted && isset($submitted) && $submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<?php if (!empty($content['links']['terms'])): ?>
<div class="terms terms-inline">
<?php print render($content['links']['terms']); ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if (!$teaser): ?>
<div id="node-top" class="node-top region nested">
<?php print render($node_top); ?>
</div>
<?php endif; ?>
<div class="content"<?php print $content_attributes; ?>>
<?php
// We hide the comments and links now so that we can render them later.
hide($content['comments']);
hide($content['links']);
print render($content);
?>
</div>
<?php print render($content['links']); ?>
<?php print render($content['comments']); ?>
<?php if (!$teaser): ?>
<div id="node-bottom" class="node-bottom region nested">
<?php print render($node_bottom); ?>
</div>
<?php endif; ?>
</div>
</div>
Die Auskommentierung nennt:
/**
* @file
* Fusion theme implementation to display a node.
*
* Available variables:
* - $title: the (sanitized) title of the node.
* - $content: An array of node items. Use render($content) to print them all, or
* print a subset such as render($content['field_example']). Use
* hide($content['field_example']) to temporarily suppress the printing of a
* given element.
* - $user_picture: The node author's picture from user-picture.tpl.php.
* - $date: Formatted creation date. Preprocess functions can reformat it by
* calling format_date() with the desired parameters on the $created variable.
* - $name: Themed username of node author output from theme_username().
* - $node_url: Direct url of the current node.
* - $terms: the themed list of taxonomy term links output from theme_links().
* - $display_submitted: whether submission information should be displayed.
* - $classes: String of classes that can be used to style contextually through
* CSS. It can be manipulated through the variable $classes_array from
* preprocess functions. The default values can be one or more of the following:
* - node: The current template type, i.e., "theming hook".
* - node-[type]: The current node type. For example, if the node is a
* "Blog entry" it would result in "node-blog". Note that the machine
* name will often be in a short form of the human readable label.
* - node-teaser: Nodes in teaser form.
* - node-preview: Nodes in preview mode.
* The following are controlled through the node publishing options.
* - node-promoted: Nodes promoted to the front page.
* - node-sticky: Nodes ordered above other non-sticky nodes in teaser listings.
* - node-unpublished: Unpublished nodes visible only to administrators.
* - $title_prefix (array): An array containing additional output populated by
* modules, intended to be displayed in front of the main title tag that
* appears in the template.
* - $title_suffix (array): An array containing additional output populated by
* modules, intended to be displayed after the main title tag that appears in
* the template.
*
* Other variables:
* - $node: Full node object. Contains data that may not be safe.
* - $type: Node type, i.e. story, page, blog, etc.
* - $comment_count: Number of comments attached to the node.
* - $uid: User ID of the node author.
* - $created: Time the node was published formatted in Unix timestamp.
* - $classes_array: Array of html class attribute values. It is flattened
* into a string within the variable $classes.
* - $zebra: Outputs either "even" or "odd". Useful for zebra striping in
* teaser listings.
* - $id: Position of the node. Increments each time it's output.
*
* Node status variables:
* - $view_mode: View mode, e.g. 'full', 'teaser'...
* - $teaser: Flag for the teaser state (shortcut for $view_mode == 'teaser').
* - $page: Flag for the full page state.
* - $promote: Flag for front page promotion state.
* - $sticky: Flags for sticky post setting.
* - $status: Flag for published status.
* - $comment: State of comment settings for the node.
* - $readmore: Flags true if the teaser content of the node cannot hold the
* main body content.
* - $is_front: Flags true when presented in the front page.
* - $logged_in: Flags true when the current user is a logged-in member.
* - $is_admin: Flags true when the current user is an administrator.
*
* Field variables: for each field instance attached to the node a corresponding
* variable is defined, e.g. $node->body becomes $body. When needing to access
* a field's raw values, developers/themers are strongly encouraged to use these
* variables. Otherwise they will have to explicitly specify the desired field
* language, e.g. $node->body['en'], thus overriding any language negotiation
* rule that was previously applied.
*
* @see template_preprocess()
* @see template_preprocess_node()
* @see template_process()
*/
Bisher habe ich nur field_typ und field_typ2 im Code verändert.
Vielen Dank im voraus für jede Mühe
Gruß alaind
Oh sorry. Das PHP sah für
am 20.07.2012 - 11:18 Uhr
Oh sorry. Das PHP sah für mich syntaktisch korrekt aus.
Da ich gerade auf Arbeit bin und ständig "gestört" werde, will ich mir Fusion und Deine node.tpl.php mal bei einer Testinstallation nachher daheim anschauen.
Also bei mir (fusion_starter)
am 20.07.2012 - 16:58 Uhr
Also bei mir (fusion_starter) hat mein Code funktioniert. Ich habe
<?php if ($display_submitted || !empty($content['links']['terms'])): ?>
<div class="meta">
<?php if ($display_submitted && isset($submitted) && $submitted): ?>
<span class="submitted"><?php print $submitted; ?></span>
<?php endif; ?>
<?php if (!empty($content['links']['terms'])): ?>
<div class="terms terms-inline">
<?php print render($content['links']['terms']); ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
rausgeworfen und stattdessen meine Codezeilen eingebaut. Keine Fehlermeldungen. Ist man eingeloggt erscheint der Autor ggfs. mit Bild, nicht eingeloggt erscheint das Datum.
Hallo Frank, wunderbar, es
am 20.07.2012 - 19:55 Uhr
Hallo Frank,
wunderbar, es klappt, vielen vielen Dank. Ich hatte nur einen Absatz ersetzt, nicht zwei Absätze. Jetzt funktioniert es. Nur noch eine kleine Frage. Was muss man noch hinzufügen, wenn man auch ein "erstellt am" lesen möchte?
Gruß alaind
Erweitertes Beispiel aus
am 21.07.2012 - 05:25 Uhr
Erweitertes Beispiel aus meinem Code:
else print "erstellt am " . $date;Hallo Frank, wunderbar,
am 21.07.2012 - 11:58 Uhr
Hallo Frank,
wunderbar, vielen Dank für deine Mühe und schönes Wochenende. Ich setze den Thread jetzt auf "gelöst".
Gruß alaind