Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

[gelöst] PHP Frage

Eingetragen von travel-pictures (156)
am 04.04.2014 - 10:18 Uhr in
  • Anfängerfragen
  • Drupal 7.x

Hallo zusammen,

ich habe eine (wahrscheinlich) absolute NOOB-Frage. Folgendes: ich habe in einem eigenen Inhaltstypen ein String-Feld erstellt. Dieses Feld soll im Theming genutzt werden, um einen Pfad zu vervollständigen. Also habe ich im .tpl testweise folgendes eingefügt:

<?php     hide($content['field_id']);
       
$id = render($content['field_id']);
       
$path = variable_get('file_public_path', conf_path() . '/files');
       
$panorama = $path ."/panorama/".$id;
        print(
"ID: ".$id."\n");
        print(
"Pfad: ".$panorama."\n");?>

Zunächst habe ich irgendwo gelesen, dass ich ein Feld nicht ausblenden darf, um im tpl darauf zugreifen zu dürfen. Also unterdrücke ich die Ausgabe mit "hide". Dann ziehe ich den Feldinhalt und den aktuellen File-Pfad in Variablen und verkette die.

Problem: wahrscheinlich verhagelt mir irgendein Steuerzeichen im $id den Gesamtpfad, denn aus Ausgabe erhalte ich:

Pfad: sites/default/files/panorama/
068-Okonjima-Lodge

...also einen Zeilenbruch. Ich könnte mir vorstellen, dass der Zugriff per render() auf das Feld das Sonderzeichen hinzufügt. Kann mir jemand einen Tipp geben, wie ich den String korrekt verketten kann?

Grüße,

Holger

‹ Neue (Basic Page) mit View Inhalt erstellen [gelöst] PHP Frage ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du hast sicher ein

Eingetragen von Hyp1 (1463)
am 04.04.2014 - 10:40 Uhr

Du hast sicher ein newline(ascii 13) in $id.
Verwende einfach PHP's trim Funktion.

$panorama = $path ."/panorama/".trim($id);

Diese Funktion entfernt Leer/Steuerzeichen (Whitespaces) am Anfang und Ende eines Strings.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, danke für deine

Eingetragen von travel-pictures (156)
am 04.04.2014 - 11:38 Uhr

Hallo,

danke für deine schnelle Antwort. Das Problem ist leider anderer Natur. Schaue ich mir den HTML-Code an, dann wird offensichtlich ein wenig mehr an die $id-Variable übergeben, als nur der String. Gebe ich testweise nur die Variable $id aus, dann erhalte ich:

<p>ID: <div class="field field-name-field-id field-type-text field-label-hidden">
    <div class="field-items">
          <div class="field-item even">068-Okonjima-Lodge</div>
      </div>

Wie komme ich denn an den nackten Feldinhalt ohne Steuercode?

Beste Grüße,

Holger

  • Anmelden oder Registrieren um Kommentare zu schreiben

der HTML Code wird wegen

Eingetragen von Hyp1 (1463)
am 04.04.2014 - 11:48 Uhr

der HTML Code wird wegen render( ausgegeben, hier liegt dein Problem:
$id = render($content['field_id']);

Probier:
$id = $content['field_id'];

wenn dass nicht geht lass Dir mal nur den Wert $content['field_id'] ausgeben:
var_dump($content['field_id']);

um zu sehen wie Du an die field_id kommst.
Es könnte auch sowas wie $content['field_id']['und'][0]['value'] sein.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke nochmals... ich lasse

Eingetragen von travel-pictures (156)
am 04.04.2014 - 12:37 Uhr

Danke nochmals... ich lasse mir mit dem var_dump die Variablen ausgeben. Dabei kommt heraus:

["field_id"]=> array(1) { ["und"]=> array(1) { [0]=> array(3) { ["value"]=> string(18) "068-Okonjima-Lodge" ["format"]=> NULL ["safe_value"]=> string(18) "068-Okonjima-Lodge" } } }

Ich versuche wie folgt auf das Feld zuzugreifen (nach deinem Beispiel):

$idtest = $content['field_id']['und'][0]['value'];

Leider bleibt der String leer. So langsam verzweifele ich ein wenig.

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

hmm merkwürdig, ich meine

Eingetragen von Hyp1 (1463)
am 04.04.2014 - 12:49 Uhr

hmm merkwürdig, ich meine content['field_id']['und'][0]['value'] ist richtig, wenn ich die Ausgabe ansehe.
probier mal dich vorzutasten:
var_dump(content['field_id']);
var_dump(content['field_id']['und']);
var_dump(content['field_id']['und'][0]);
var_dump(content['field_id']['und'][0]['value']);
wie weit kommst Du hier?
und wo gibtst Du $idtest aus?

LG

  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt wird es merkwürdig...

Eingetragen von travel-pictures (156)
am 04.04.2014 - 13:19 Uhr

Jetzt wird es merkwürdig... vielleicht liegt mein Fehler auch an einer anderen Stelle. Am besten, ich fange von vorne an:

1) Ich habe einen neuen Content Type mit verschiedenen neuen Feldern erstellt:

2) Einen neuen Beitrag habe ich wie folgt befüllt:

3) die passende Theme-Datei "node--panorama.tpl.php" habe ich zurzeit wie folgt gefüllt:

<?php     //hide($content['field_id']);
        //hide($content['body']);
        //hide($content['comments']);
        //hide($content['links']);

        //$id = render($content['field_id']);
        //$idpure = $content['field_id'];
        //$idtest = $content['field_id']['und'][0]['safe_value'];
        //$path = variable_get('file_public_path', conf_path() . '/files');
        //$panorama = $path ."/panorama/".$idtest;
       
       
        //print("<p>ID: ".$content['field_id']['und'][0]['value']."</p>");
        //print("<p>Pfad: ". $panorama."</p>");
        //print("<p>IDtest: ". $idtest."</p>");

       
print("<h2>field_id</h2>");
       
var_dump($content['field_id']);
        print(
"<h2>field_id und</h2>");
       
var_dump($content['field_id']['und']);
        print(
"<h2>field_id und 0</h2>");
       
var_dump($content['field_id']['und'][0]);
        print(
"<h2>field_id und 0 value</h2>");
       
var_dump($content['field_id']['und'][0]['value']);

       
//dpm( get_defined_vars() );
       
?>

4) Der Output:

Zitat:

field_id
array(16) { ["#theme"]=> string(5) "field" ["#weight"]=> string(1) "1" ["#title"]=> string(2) "ID" ["#access"]=> bool(true) ["#label_display"]=> string(6) "hidden" ["#view_mode"]=> string(4) "full" ["#language"]=> string(3) "und" ["#field_name"]=> string(8) "field_id" ["#field_type"]=> string(4) "text" ["#field_translatable"]=> string(1) "0" ["#entity_type"]=> string(4) "node" ["#bundle"]=> string(8) "panorama" ["#object"]=> object(stdClass)#293 (31) { ["vid"]=> string(2) "97" ["uid"]=> string(2) "23" ["title"]=> string(25) "Okonjima Lodge - Campsite" ["log"]=> string(0) "" ["status"]=> string(1) "1" ["comment"]=> string(1) "2" ["promote"]=> string(1) "0" ["sticky"]=> string(1) "0" ["nid"]=> string(2) "97" ["type"]=> string(8) "panorama" ["language"]=> string(2) "de" ["created"]=> string(10) "1236461754" ["changed"]=> string(10) "1396613671" ["tnid"]=> string(1) "0" ["translate"]=> string(1) "0" ["revision_timestamp"]=> string(10) "1396613671" ["revision_uid"]=> string(1) "1" ["body"]=> array(1) { ["und"]=> array(1) { [0]=> array(5) { ["value"]=> string(81) "
Dignissim qui blandit; praesent luptatum zzril delenit augue duis.

" ["summary"]=> string(0) "" ["format"]=> string(9) "full_html" ["safe_value"]=> string(76) "
Dignissim qui blandit; praesent luptatum zzril delenit augue duis.

" ["safe_summary"]=> string(0) "" } } } ["field_id"]=> array(1) { ["und"]=> array(1) { [0]=> array(3) { ["value"]=> string(18) "068-Okonjima-Lodge" ["format"]=> NULL ["safe_value"]=> string(18) "068-Okonjima-Lodge" } } } ["field_pano_thumbnail"]=> array(1) { ["und"]=> array(1) { [0]=> array(15) { ["fid"]=> string(3) "287" ["uid"]=> string(1) "1" ["filename"]=> string(28) "068-okonjima-lodge_thumb.jpg" ["uri"]=> string(59) "public://panorama/thumbnails/068-okonjima-lodge_thumb_0.jpg" ["filemime"]=> string(10) "image/jpeg" ["filesize"]=> string(5) "81027" ["status"]=> string(1) "1" ["timestamp"]=> string(10) "1395739581" ["type"]=> string(5) "image" ["rdf_mapping"]=> array(0) { } ["image_dimensions"]=> array(2) { ["width"]=> string(3) "800" ["height"]=> string(3) "267" } ["alt"]=> NULL ["title"]=> NULL ["width"]=> string(3) "800" ["height"]=> string(3) "267" } } } ["metatags"]=> array(0) { } ["rdf_mapping"]=> array(9) { ["rdftype"]=> array(2) { [0]=> string(9) "sioc:Item" [1]=> string(13) "foaf:Document" } ["title"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(8) "dc:title" } } ["created"]=> array(3) { ["predicates"]=> array(2) { [0]=> string(7) "dc:date" [1]=> string(10) "dc:created" } ["datatype"]=> string(12) "xsd:dateTime" ["callback"]=> string(12) "date_iso8601" } ["changed"]=> array(3) { ["predicates"]=> array(1) { [0]=> string(11) "dc:modified" } ["datatype"]=> string(12) "xsd:dateTime" ["callback"]=> string(12) "date_iso8601" } ["body"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(15) "content:encoded" } } ["uid"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(16) "sioc:has_creator" } ["type"]=> string(3) "rel" } ["name"]=> array(1) { ["predicates"]=> array(1) { [0]=> string(9) "foaf:name" } } ["comment_count"]=> array(2) { ["predicates"]=> array(1) { [0]=> string(16) "sioc:num_replies" } ["datatype"]=> string(11) "xsd:integer" } ["last_activity"]=> array(3) { ["predicates"]=> array(1) { [0]=> string(23) "sioc:last_activity_date" } ["datatype"]=> string(12) "xsd:dateTime" ["callback"]=> string(12) "date_iso8601" } } ["cid"]=> string(1) "0" ["last_comment_timestamp"]=> string(10) "1392672290" ["last_comment_name"]=> NULL ["last_comment_uid"]=> string(2) "23" ["comment_count"]=> string(1) "0" ["name"]=> string(6) "Holger" ["picture"]=> string(1) "0" ["data"]=> string(189) "a:6:{s:16:"ckeditor_default";s:1:"t";s:20:"ckeditor_show_toggle";s:1:"t";s:14:"ckeditor_width";s:4:"100%";s:13:"ckeditor_lang";s:2:"en";s:18:"ckeditor_auto_lang";s:1:"t";s:7:"contact";i:0;}" ["entity_view_prepared"]=> bool(true) } ["#items"]=> array(1) { [0]=> array(3) { ["value"]=> string(18) "068-Okonjima-Lodge" ["format"]=> NULL ["safe_value"]=> string(18) "068-Okonjima-Lodge" } } ["#formatter"]=> string(10) "text_plain" [0]=> array(1) { ["#markup"]=> string(18) "068-Okonjima-Lodge" } }

field_id und
NULL

field_id und 0
NULL

field_id und 0 value
NULL

  • Anmelden oder Registrieren um Kommentare zu schreiben

Na ja, ich würde das in einem

Eingetragen von maen (547)
am 04.04.2014 - 14:18 Uhr

Na ja, ich würde das in einem eigenen Modul schreiben. Aber mit deinem Ansatz komme ich so nicht klar! Warum ziehst Du nicht direkt den Namen aus dem file? Wenn Du den jedesmal reinschreibst wird die Fehlerquote doch per se erhöht?

  • Anmelden oder Registrieren um Kommentare zu schreiben

drupal_set_message

Eingetragen von maen (547)
am 04.04.2014 - 14:24 Uhr

drupal_set_message('<pre>'.print_r($field_id,1).'</pre>');
ergibt was?

  • Anmelden oder Registrieren um Kommentare zu schreiben

maen schrieb Na ja, ich würde

Eingetragen von travel-pictures (156)
am 04.04.2014 - 14:38 Uhr
maen schrieb

Na ja, ich würde das in einem eigenen Modul schreiben. Aber mit deinem Ansatz komme ich so nicht klar! Warum ziehst Du nicht direkt den Namen aus dem file? Wenn Du den jedesmal reinschreibst wird die Fehlerquote doch per se erhöht?

Weil im Template später noch einige Skripte mit unterschiedlichen Endungen aufgerufen werden, die einen direkten Bezug zu dem Filenamen haben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

maen

Eingetragen von travel-pictures (156)
am 04.04.2014 - 14:40 Uhr
maen schrieb

drupal_set_message('<pre>'.print_r($field_id,1).'</pre>');
ergibt was?

Array
(
[0] => Array
(
[value] => 068-Okonjima-Lodge
[format] =>
[safe_value] => 068-Okonjima-Lodge
)

)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Macht doch nichts. Du

Eingetragen von maen (547)
am 04.04.2014 - 14:44 Uhr

Macht doch nichts. Du speicherst doch den Wert dann aus dem file Name in eine Variable, so wie Du es jetzt auch gerade versuchst. Ober der string aus dem handgeschriebenen kommt oder aus dem filenamen, ist doch egal. Und die Fehlerquote sinkt bei zweitem Ansatz.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo,dieses Rumgefrickel

Eingetragen von oteno (775)
am 04.04.2014 - 16:11 Uhr

Hallo,
dieses Rumgefrickel mit den render arrays finde ich persönlich mit "unelegant" noch harmlos beschrieben ;)
Drupal bietet hier eigene schöne Funktionen an, die man auch benutzen könnte, siehe hier https://api.drupal.org/api/drupal/modules!field!field.module/group/field/7.

$output= field_get_items('node', $node, 'field_id');
$output = $output[0]['value'];

und maen hat Recht, wenn mehr Logik dazukommt, gehört es in ein Modul...

Gruß
Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Christian hat die beste

Eingetragen von Hyp1 (1463)
am 04.04.2014 - 16:14 Uhr

Christian hat die beste Antwort gegeben:

array(16) { ["#theme"]=> string(5) "field" ["#weight"]=> string(1) "1" ["#title"]=> string(2) "ID" ["#access"]=> bool(true) ["#label_display"]=> string(6) "hidden" ["#view_mode"]=> string(4) "full" ["#language"]=> string(3) "und" ["#field_name"]=> string(8) "field_id" ["#field_type"]=> string(4) "text" ["#field_translatable"]=> string(1) "0" ["#entity_type"]=> string(4) "node" ["#bundle"]=> string(8) "panorama" ["#object"]=> object(stdClass)#293 (31) { ["vid"]=> string(2) "97" ["uid"]=> string(2) "23" ["title"]=> string(25) "Okonjima Lodge - Campsite" ["log"]=>
...

Im code oben sehe ich, dass Du mit
$content['field_id']['#object'] an das node object kommst.

Du könntest so mit $content['field_id']['#object']->title bzw. $content['field_id']['#object']->nid auch
an die gewünschten Daten kommen, doch die Field API zu nutzen ist eher der Drupal weg.
Tipp:
Wenn Du devel installiert hast mach ein dpm($content['field_id']);
dann siehst Du wo welche Felder sind.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Christian, das wars!

Eingetragen von travel-pictures (156)
am 04.04.2014 - 16:37 Uhr

Hallo Christian,

das wars! Geil!

Danke für eure Hilfe!!

Beste Grüße,

Holger

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Лучший сервис для продвижения сайта
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 6 Tagen 2 Stunden
  • Hey danke
    vor 6 Tagen 21 Stunden
  • Update: jetzt gibt's ein
    vor 1 Woche 15 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 5 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 5 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 2 Tagen
  • In der entsprechenden View
    vor 2 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 2 Tagen
  • gelöst
    vor 4 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250234
Registrierte User: 20450

Neue User:

  • Grantbor
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 19 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association