Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP Problem

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Can
PostRank 9
PostRank 9
Beiträge: 1035
Registriert: 30.10.2010, 12:47

Beitrag von Can » 11.08.2011, 19:02

Code: Alles auswählen

 <?php
				 
$dir = get_stylesheet_directory_uri&#40;&#41;."/headerdiashow/";

foreach &#40;glob&#40;$dir."*.jpg"&#41; as $filename&#41;&#123;
    echo '<img src="'.$filename.'" width="992" height="373" alt="" >';
&#125; 
?>

Soll in nem Wordpress Blog in einen Ordner im aktuellen Template gehen und von dort aus alle JPG auflisten. Erzeugt aber :

Invalid argument supplied for foreach() in <b>/www/htdocs/.../_sandbox/.../wp1/wp-content/themes/..../header.php</b> on line
Wenn ich einen normalen Pfad eingebe funktioniert alles. Wenn ich ein / vor den Pfad setze kommt auch wieder der Fehler. Mit dem von Wordpress generiertem Pfad gehts gar nicht.


Wo liegt der Fehler ?
Can

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

007
PostRank 5
PostRank 5
Beiträge: 332
Registriert: 07.12.2008, 21:52

Beitrag von 007 » 11.08.2011, 19:40

Was gibt denn "get_stylesheet_directory_uri()" zurück?

Ich denke die Funktion "get_stylesheet_directory()" tut eher was Du brauchst...

Can
PostRank 9
PostRank 9
Beiträge: 1035
Registriert: 30.10.2010, 12:47

Beitrag von Can » 11.08.2011, 21:17

get_stylesheet_directory() gibt mir den Pfad abhängig vom Server und nicht von der Domain zurück also ehr unbrauchbar.
Mit uri kommt dann laut echo genau der richtige Pfad. Nur gibt das foreach mir dann den Error aus.

Mit get_bloginfo ( 'stylesheet_directory' ) ist es übrigens das selbe... Der Pfad stimmt laut echo aber sobald das foreach drannkommt ist der wurm drinn!

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

chris21
PostRank 9
PostRank 9
Beiträge: 2758
Registriert: 10.04.2005, 18:17

Beitrag von chris21 » 11.08.2011, 21:41

endet die URI bei get_style_directory_uri denn mit einem / ?

Falls ja, dann sollte es doch eher

$dir = get_stylesheet_directory_uri()."headerdiashow/";

sein...

Ansonsten auch mal überprüfen, ob dort irgendwelche Rewrites reinpfuschen?

Can
PostRank 9
PostRank 9
Beiträge: 1035
Registriert: 30.10.2010, 12:47

Beitrag von Can » 12.08.2011, 08:15

Habs jetzt fast. Das problem war der output war ne url und ich brauch ja zum auslesen nen relativen Pfad und die URL nur zum ausgeben.


<?
$dir = get_stylesheet_directory() . "/headerdiashow/";
$path = get_stylesheet_directory_uri();

foreach (glob($dir."*.jpg") as $filename){
echo '<img src="'.$filename.'" width="" height="" alt="" >';
}

?>


Nur weiß ich nicht wie ich die jetzt die variable path ausgeben soll als dateipfad. nach den bildern suchen soll er in $dir. und die ausgabe dann mit $path . * . jpg ?
Jemand ne Idee?
Gruß Can

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 12.08.2011, 08:24

Habs jetzt fast. Das problem war der output war ne url und ich brauch ja zum auslesen nen relativen Pfad und die URL nur zum ausgeben.
Das wollte ich gerade schreiben. Im Foreach brauchst Du den Serverpfad und nicht die Webadresse.

Ich weiß nun nicht, was WP da genau ausgibt, aber wenn $filename der Dateiname ist und $path die URI zum Verzeichnis, dann baue das doch einfach zusammen.

echo '<img src="'.$path.'/headerdiashow/'.$filename.'" width="" height="" alt="" >';

mach doch einfach mal ein:
echo $path.'/headerdiashow/'.$filename.'<br />';
im Foreach, dann siehst Du ja, ob im "zusammengebastelten" Pfad was fehlt oder zu viel ist, oder ob er stimmt.

Can
PostRank 9
PostRank 9
Beiträge: 1035
Registriert: 30.10.2010, 12:47

Beitrag von Can » 12.08.2011, 09:17

Synonym hat geschrieben:
Habs jetzt fast. Das problem war der output war ne url und ich brauch ja zum auslesen nen relativen Pfad und die URL nur zum ausgeben.
Das wollte ich gerade schreiben. Im Foreach brauchst Du den Serverpfad und nicht die Webadresse.

Ich weiß nun nicht, was WP da genau ausgibt, aber wenn $filename der Dateiname ist und $path die URI zum Verzeichnis, dann baue das doch einfach zusammen.

echo '<img src="'.$path.'/headerdiashow/'.$filename.'" width="" height="" alt="" >';

mach doch einfach mal ein:
echo $path.'/headerdiashow/'.$filename.'<br />';
im Foreach, dann siehst Du ja, ob im "zusammengebastelten" Pfad was fehlt oder zu viel ist, oder ob er stimmt.
ne $dir zeigt mir den www/htdocs/ pfad an. der muss komplett weg.
also es soll im $dir nach den bildern schauen und diese dann mit
$path . "/headerslideshow/" . $file ausgeben.
der $dir pfad muss komplett weg.
Weiter komm ich nicht. :D

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 12.08.2011, 09:35

ne $dir zeigt mir den www/htdocs/ pfad an. der muss komplett weg.
Warum? Verstehe ich nun nicht. Das $dir, also den Serverpfad, brauchst Du doch, um das Verzeichnis einlesen zu können.

Für die Anzeige brauchst Du dann $path und in dem wird wohl das "www/htdocs/" nicht stehen, oder?

Schreib hier doch mal im Klartext hin, was die beiden Funktionen get_stylesheet_directory() und get_stylesheet_directory_uri() genau als Ergebnis liefern. Und ich meine genau, nichts weglassen oder so.

https://codex.wordpress.org/Function_Re ... ectory_uri
Note that this returns a properly-formed URI; in other words, it will be a web-address (complete with http:// or https:// etc). As such, it is most appropriately used for links, referencing additional stylesheets, or probably most commonly, images (in this examples, inside an inline <style> declaration within a template .php file): .wp-menu-image { background: url(<?php echo get_stylesheet_directory_uri() ?>/images/gavel.png) }
Das brauchst Du also zur Anzeige der Bilder, nur eben nicht wie um Beispiel /images/, sondern Deinen Ordner.

https://codex.wordpress.org/Function_Re ... _directory
Note that this returns an absolute server path (eg: /var/www/html/myblog/wp-content/themes/my_theme), not a URI. As such, it's most suitable for file-level operations, such as: require_once(get_stylesheet_directory() . '/my_include.php');
So, das ist also der Serverpfad, den brauchst Du um das Verzeichnis überhaupt einlesen zu können.

Hm, aber genau das hatte ich ja schon zuvor geschrieben. Und wenn ich mich recht erinnere Chris auch.

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 12.08.2011, 09:44

Nachtrag... Das scheint am glob zu liegen... Hatte ich bisher noch nicht genutzt, daher ist mir das nicht aufgefallen.

Das foreach bzw. das AS $filename beinhaltet also nicht nur den Dateinamen, sondern auch den Serverpfad. Und der stört dann im Image, das ist korrekt.
glob — Find pathnames matching a pattern
Warum nimmst Du daher nicht einfach einen normalen Aufruf des Verzeichnisses, also ohne das glob, sondern opendir und readdir? Oder Du musst den Path eben nachträglich wieder entfernen. Oder versuchen, ohne get_stylesheet_directory() zu arbeiten und den Pfad zu den Bilder selbst festlegen, eventuell in Kombination mit /wp-content/themes/'.get_stylesheet().'/ordner' (nur als Beispiel)

angelicaahlu
PostRank 1
PostRank 1
Beiträge: 1
Registriert: 30.09.2011, 15:56

Beitrag von angelicaahlu » 03.10.2011, 20:06

get_stylesheet_directory () gives me the path depends on the server and not from the domain back so honest unusable.
With loud echo uri is then exactly the right path. Only then is the foreach me from the error. get_bloginfo With ('stylesheet_directory') it is actually the same ... The path is correct but once that is loud echo drankommt foreach splashing around the worm!

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag