Notizie su wordpress-plugin

related-post thumbnail wordpress-plugin

Related Post with Thumbnail is a new Wordpress plugin that returns a list of the related entries based on active/passive keyword matches and show the first available image. It can generate a custom sized thumbnail. Based on an original plugin of Alexander Malov & Mike Lu (v. 2.02)

[…] RELATED POST with THUMBNAIL 显示一份随机日志列表. 特别的这份随机日志列表包含每篇文章中的第一张图片, 显示成缩略图. 插件主页 […]
[...] RELATED POST with THUMBNAIL 显示一份随机日志列表. 特别的这份随机日志列表包含每篇文章中的第一张图片, 显示成缩略图. 插件主页 [...]
[...] RELATED POST with THUMBNAIL 显示一份随机日志列表. 特别的这份随机日志列表包含每篇文章中的第一张图片, 显示成缩略图. 插件主页 [...]
Hi Frank, you have to insert the code lines where you want to see the thumbnail.Probably my plugin could be obsolete with WP 3 because of the thumbnails function are now native in wordpress.
endorsement here. i am trying it on WP 3.0.0 hope its compatible?
Well it seems non of the queries, or questions in this discussion has been ever answered. but still posting one question with a hope for answer.i followed all the steps appeared in the admin plug in page. but i am stuck with this , please tell me where in the template(exact file and location) it has to be inserted? 5.Insert this line into your template:rest every thing i have performed properly but still no result.
@ MICK I have a related posts (only headlines) and works, but this yours related posts version not works anything, including headilines.This version of download is same version that you use now?Falopa!
[...] pendiente de probar este Wordpress plugin: Related Post with Thumbnail Responder Citando   + Responder al Tema « Tema Anterior | [...]
HalloWe're from would like to thank you for the plug in.. and we'll try this.., oce again, very thank you..
hi.. Plugin doesn't Work in Wp2.8.6 any help?
Look at all these people having problems and not a single repsonse from you great support ...NOTBe great if you would tell us how to fix this...wp-content/plugins/related-post-thumbnail/class.ImageToolbox.php on line 898
Thank a lot for sharing nice wordpress plugin.It is working great.
"Not Found The requested URL /portal/wp-content/plugins/related-posts.php was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request."How can i get it???THANX!
Any solution for this one:Fatal error: Image: Outputwidth and -height must be integers greater zero. in /home/ on line 89My WordPress is up2date :(
Sorry, i have the next error when run the plugin.Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/wp-content/uploads/2009/06/mueck1.jpg) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/”user”/public_html/wp-content/plugins/related-post-thumbnail/related-post-thumbnail.php on line 134I run the SQL script and the program say : Congratulations! Full text index was created successfully!Some idea?Regards
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/wp-content/uploads/2009/06/mueck1.jpg) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/"user"/public_html/wp-content/plugins/related-post-thumbnail/related-post-thumbnail.php on line 134
Many of wordpress user have problem in showing the image in post. Its great plugins.
Get the Fatal error: Image: Outputwidth and-height must be integers greater zero. in / public_html / wp-content / plugins / related-post-thumbnail / class.ImageToolbox.php on line 898 WordPress v.2.8.2. Help with this problem, plz.
Hi, can you help me?The plugin dont work, wordpress say that "The plugin does not have a valid header." I have the lastes version of wordpress 2.8.2 Thanks.
I get this error when i run the script:"Warning: require_once(C:\wamp\www\wordpress\wp-content\plugins\related-post-with-thumbnail\related-post-thumbnail/../../../wp-config.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\wordpress\wp-content\plugins\related-post-with-thumbnail\related-post-thumbnail\related-post-thumbnail.php on line 35Fatal error: require_once() [function.require]: Failed opening required 'C:\wamp\www\wordpress\wp-content\plugins\related-post-with-thumbnail\related-post-thumbnail/../../../wp-config.php' (include_path='.;C:\php5\pear') in C:\wamp\www\wordpress\wp-content\plugins\related-post-with-thumbnail\related-post-thumbnail\related-post-thumbnail.php on line 35"Any help would be much appreciated! I am using the lastest version of wordpress and building a theme for wordpress on my local server.I have done all the instructions ask but i am still getting the problem.
Probabilmente non è più compatibile. A breve pubblicherò un articolo che spiega come fare il "related post" che è implementato su Dynamick.
Ciao ho provato il plugin ma quando lo attivo mi appare una pagina bianca. Uso Wordpress 2.8 e ho visto che anche tu lo usi. Come mai a te funzionaaa ?Aiutami ti prego questo plugin mi serve :(
avete tutti i programmi per aggiornare questo plugin alla versione 2.7?you have any plans to upgrade this plugin to version 2.7?tienes pensado actualizar este plugin a la version 2.7?
Hi, i'm trying to install this wonderfull plugin with WP 2.7.1 but i have the same trouble with laurence. When i trying to run the SQL script, it's doesn't work : Error 404 Please show me how i can resolve this trouble ! In English, please. I can't understand what u are writting above :(
hello,try to install with WP.2.7 doesn' t work. can you explainsql index table setup please ? i try to open script : error 404nothin in the read me to make one manually. thanks
Giacomo, anche io ho la lista di palline... se riesci a correggere il tutto facci sapere!
Ho sbagliato l'indirizzo email. Lo trovi su questo commento.
Ciao. Ho appena scaricato il tuo utilissimo plugin.Ho controllato nel codice e ho visto che nella funzione related_posts() c'è la variabile $output che viene chiamata 2 volte: la prima per inizializzarla (fuori dal foreach) e la seconda per aggiungere in coda '' (all'interno del foreach).Il risultato è che non stampa un bel niente, oltre a una lista di "palline" dei tag "li". :-)Sto provvedendo a correggere. Quando avrò finito ti avvertirò.Un'altra cosa...Poichè utilizzi un indice FULLINDEX dovresti avvertire che è necessario convertire la tabella "wp_posts" in "MyISAM" perchè è l'unico tipo di tabella che lo supporta. Io ho convertito la mia "wp_posts" da Innodb a MyISAM e per adesso non ho riscontrato cambiamenti. Se succederà qualcosa ti avvertirò anche di questo.Grazie per il tuo lavoro.
Con WP 2.6.5 mi da questo errore:Fatal error: Image: Outputwidth and -height must be integers greater zero. in /web/htdocs/ on line 898C'è soluzione?
It seems that the plugin does not work on wp2.5.1 . But It is amazing plugin! Come on!
Not found wordpress 2.6?
This is a great plug in :)
e se volessi riportare i post di una determinata categoria?
any updates for a working version for 2.5.1? really looking forward to this.
Mick, this is cool wp plugin so i'll waiting for your plugin run in wordpress 2.5.1 :wink:
Mick, can you help me to find code to call image that attached with related post in your plugin? reply here or in my email, thanks..
Ciao, ho installato il plugin, ma quando clicco su "this script" mi esce una nuova paginqa con:"Not Found The requested URL /wp-content/plugins/related-posts.php was not found on this server.--------------------------------------------------------------------------------Apache/2.0.51 (Fedora) Server at Port 80"Come faccio a risolvere questo problema? Grazie Andrea
Hi, this plugin looks awesome, but i haven't been able to try it out on wp 2.5. Are you planning on a new version for 2.5 ? Thanks, and keep up the good work!
Ciao dynamick, c'è un errore nel plugin, almeno l'ho scaricato e quando si esegue lo script dal pannello lancia ******************** /wp-content/plugins/related-posts.php?setup ******************** il plugin sta tutto dentro la cartella related-post-thumbnail quindi penso il link dovrebbe essere ******************** /wp-content/plugins/related-post-thumbnail/related-posts.php?setup ******************** e comunque il file si chiama related-post-thumbnail.php ho provato a lanciare a mano ******************** /wp-content/plugins/related-post-thumbnail/related-post-thumbnail.php?setup ******************** in questo modo ci prova ma mi restituisce errore Sorry, you must be at least a level 8 user. sebbene sia loggato come admin.
Stò rifacendo la grafica per la nuova versione del sito, ma il tuo plugin con 2.5 sembra non generare nessun output, qualche idea? Grazie.
@gofree: I don't know if it could work on WP2.5. Give me some days and I'll reply you.
Thanks for this great plug. btw, is this supporting WP 2.5?
when I go Run the SQL script from the plugin option menu, appears this message :The requested URL was not found on this server.My wordpres is 2.3.3 versionhow to create it manually. I don't see in the readme file. please HELP
very good plugin, thanks!
I have got a little problem. The output ist only a without any content.I use WP 2.3.3
Hi, It's wonderful plug-in. but I have problem. run sql script -> just fatal error. like this Fatal error: Call to undefined function: add_action() in /home/goodmanner/public_html/blog/wp-content/plugins/related-posts.php on line 290how can I fix it? or how can I make index table manualy?
็Hi,I have found some problem , it not show anything on www.envlog.comit's show only Related Headlinesthanksthanks
Very Cool. Gonna ake use of it now!
Sorry for asking so many questions, so let me just consolidate everything.Is it possible manually select post related? And how do you install the script on localhost, the scripts keeps saying that it can't be found.
Ok thats weird, I just put back visual text editor, and it somehow works again...

image-extractor image-manipulation wordpress-plugin

Image Extractor is a WordPress plugin that extract the first image from the post and display it. The "Image Extractor" main feature is the capability to resize the image found to a wanted size. The final image is cached in a folder, so you can obtain better performances. How to install Download the .zip file and extract it Upload the extrated […]

Hi! Do you know if they make any plugins to safeguard against hackers? I'm kinda paranoid about losing everything I've worked hard on. Any suggestions?my homepage; trading charts (
Thank you Mick !!
Is there any code to extract the videos from post which i have embed through "Viper's Video Quicktags" plugin
Thanks. I was getting the code mess at the top of my pages too. Running php5.3 and Wordpress 3.2The problem is that htmlParser.php is not using the current standard <?php opening for php code and the browser is showing the code as html.Mick - you should fix this in your source code and issue an update.Also, where is the recommend location for the thumb directory? Same as the http document root for our site?
That are "notices" and they aren't "errors". The messages mean that a variable wasn't initialized ($variable = "" ), but the script could run anyway.
Hello,Today I enabled WP_DEBUG on my wp-config.php file and I'm getting thousands of Uninitialized string offset errors in htmlParser.php. Actually it's a loop of these 3 errors below: PHP Notice: Uninitialized string offset: 171 in /var/www/html/wp-content/plugins/imageExtractor/htmlParser.php on line 115 PHP Notice: Uninitialized string offset: 171 in /var/www/html/wp-content/plugins/imageExtractor/htmlParser.php on line 126 PHP Notice: Uninitialized string offset: 171 in /var/www/html/wp-content/plugins/imageExtractor/htmlParser.php on line 138What those lines have in common is $line[$charsindex] but I'm a complete PHP n00b so I don't know what to do to fix this.Any ideas?Thanks!
Both, depends on the resize_type parameter. 2 and 0 resize, 1 crop the image.
Does this plugin only resizes the original image or it also crops it according to the size...?
lovelty tool and a great website too !
Open the imageExtractor.php file (you find in the wp-content/plugins/imageExtractor/) and edit the line 116. Change the following code: $thumbnail->save(getenv("DOCUMENT_ROOT").$dest,"png24"); with: $thumbnail->save(getenv("DOCUMENT_ROOT").$dest,"jpg"); where the change is the text "jpg" instead of "png24".Hope this could help you.
Sir, can you please explain how to change the output files to jpg? I use this code on my home page (as part of Visual Recent Posts) and the png thumbnails are too large. Thanks!
Nice Post. Thanks!
For those who have this problem:Fatal error: Image: Imagetype (jpg) not supported for readingThis is due to a php version >5.3. Fix this error by patching the class.ImageToolbox.php. Replate the line 203: if ($gd_info['JPG Support']) { with this: if ($gd_info['JPG Support'] or $gd_info['JPEG Support']) {Hope this could help u... Cheers
[...] ————————- often people just want to remove the first image in a post, with the above script, this is how. <?php ob_start(); the_content(‘Read the full post’,true); $postOutput = preg_replace(‘/]+./’,”, ob_get_contents(),1); ob_end_clean(); echo $postOutput; ?> —————————– <?php            $beforeEachImage = “<div>”;            $afterEachImage = “</div>”;            preg_match_all(“/(<img [^>]*>)/”,get_the_content(),$matches,PREG_PATTERN_ORDER);            for( $i=0; isset($matches[1]) && $i < count($matches[1]); $i++ ) {                  echo $beforeEachImage . $matches[1][$i] . $afterEachImage;            } ?> ——— [...]
Hi Thomas, honestly I do not have any ideas if it could be possible. The plugin uses Image Toolbox, an image manipulation library. You could study this file to find what you are searching.Cheers, Mick
Sorry, I mean of course Mick :)
Hello Mike, thanks for this great plugin! I have a question: Is it possible to positioning the image at the top and not to the center, if the image is filled with whitespace because of correct aspect ration? Thanks.
Hello. This may be an odd question but a situation has arisen that has made it such that I must extract/resize the first image in a post then display X number of other images as normal. My first image is being resized no problem but none of the other images show up. Can I override this by chance? Any way of showing the other images untouched?
@degreef wesley: Yes, u can. U have just to change the resizing method.
hellowhow can i make the thumbnails just smaller than the original post without cropping and changing the form of the imagethx
Certo che si può, basta metter mano ad una variabile all'interno del plugin di Image Extractor. Però non conosco così bene NextGen Gallery per poter dirti che vengono caricate anche nella galleria. Ciao!
Ciao Mick, avrei da farti un domandone: è possibile integrare il plugin "NextGen Gallery" con image extractor? Le immagini che vengono caricate su nextgen hanno una cartella di destinazione finale differente (/wp-content/gallery/) rispetto a quella dell'extractor (/mat/thumb/). E' possibile dargli in pasto anche la cartella gallery?
Nonostante la sua età, funziona ancora a meraviglia!
To lo, ale and anybody else who's getting the: html = “”; $this->html=$htmlcode; return true; } function LoadHTML($filename) error.Try to edit the htmlParser.php file inside imageExtractor dir and check 1st line: if it's <? change it to: <?phpThis worked for me in my WAMP environment.
guys, does anybody know how to change color from "white" to another, e.g. black..?
Ah ho risolto, sbagliavo nel cambiare il path delle immagini /math/thumb, ora ho corretto.
Buongiorno, a me viene fuori questo erroreWarning: imagejpeg() [function.imagejpeg]: Unable to open '/www/www/mat/thumb/72x73-foto021-150x150.jpg' for writing in /www/www/ivan/ivan-wordpress/wp-content/plugins/imageExtractor/class.ImageToolbox.php on line 679non sono molto esperto non so che fare
Hi, Image extractor is a great plugin but it doesnt currently work for my site.What happens is that for my blog template, on each of my posts, i have a bunch custom fields, one of them is called "img" where i put the url of the image i want to be displayed in my post. However Image Extractor doesnt take images in the custom fields in consideration, because they are not actually in the of the post's wysiwyg "content".The workaround for this is for me to post the image once in the wysiwyg, with a css class that hides the image, and then put the img url again in the "img" custom field that i use for my blog post templates. This is rather annoying and defeat the purpose of this plugin.So my question is this, is there a way for Image Extractor to be aware of the images in the post that are inserted with the custom fields ???
Il fix suggerito per evitare il problema di cropping funziona:[code] $thumbnail->setResizeMethod('workaround'); [/code]change it to this:[code] $thumbnail->setResizeMethod('resize'); [/code]Grazie, ottimo plugin, gira bene sulla 2.8
sto avendo dei problemi a far girare il plugin su un server windows. quando lo attivo mi appare un sacco di codice, faccio fatica a capire qual'è l'errore. help!il codice che mi appare è questo: html = ""; $this->html=$htmlcode; return true; } function LoadHTML($filename) { $this->html = ""; if (!file_exists ($filename)) { //return false; } //$filename=""; //echo $filename.""; $fh = @fopen (trim($filename), "r"); if ($fh!=false) { //flock($fh,2); while (!feof ($fh)) { $buffer = fgets($fh, 10240); if ($buffer!="") { $this->html.=trim($buffer); } } //flock($fh,3); fclose($fh); return true; } else return false; } function GetElements(&$result) { if (count($this->elements)==0) { return false; $result=array(); } $result=$this->elements; return true; } function Parse() { $ignorechar = false; $intag = false; $tagdepth = 0; $line=""; $text=""; $tag=""; if ($this->html=="") { return false;} $raw = split ("\r\n", $this->html); while (list($key, $line) = each ($raw)) { $htmlline = htmlentities($line); if ($line=="") { continue; } $line = trim($line); for ($charsindex=0;$charsindex<=strlen($line);$charsindex++) { if ($ignorechar==true) { $ignorechar=false;} if (($line[$charsindex]=="elements[]=$text; $text=""; } $intag = true; } else if (($line[$charsindex]==">") && ($intag)) { $tag .=">"; /* Tag Found */ $this->elements[]=$tag; $ignorechar = true; $intag=false; $tag=""; } if ((!$ignorechar) && (!$intag)) { $text .= $line[$charsindex]; } else if ((!$ignorechar) && ($intag)) { $tag .= $line[$charsindex]; } } } return true; } function download($file_source, $file_target) { $rh = @fopen($file_source, 'rb'); $wh = fopen($file_target, 'wb'); if ($rh===false || $wh===false) { return true; } while (!feof($rh)) { if (fwrite($wh, fread($rh, 1024)) === FALSE) { echo 'Download error: Cannot write to file ('.$file_target.')'; return true; } } fclose($rh); fclose($wh); return false; } function getAttributes($html) { //preg_match_all('/(\w+\s*=\s*"[^"]*")*|(\w+\s*=\s*\'[^\']*\')*/',$html,$attr); $attrWithDblQuote='((\w+)\s*=\s*"([^"]*)")*'; $attrWithQuote='((\w+)\s*=\s*\'([^\']*)\')*'; $attrWithoutQuote='((\w+)\s*=(\w))*'; preg_match_all('/'.$attrWithDblQuote.'|'.$attrWithQuote.'|'.$attrWithoutQuote.'/',$html,$attr); //echo "#";print_r($attr);echo ""; if (is_array($attr)) foreach ($attr as $count=>$attrArr) { if (is_array($attrArr)) foreach ($attrArr as $i=>$a) { if ($a!="" and $count==2) $res[$a]=$attr[3][$i]; if ($a!="" and $count==5) $res[$a]=$attr[6][$i]; if ($a!="" and $count==8) $res[$a]=$attr[9][$i]; } } return $res; } function linkAnalyzer($url) { $regexp = "(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?"; $regexp = "(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?"; eregi($regexp,$url,$ret); $r["url"]=$url; $r["scheme"]=$ret[2]; $r["authority"]=$ret[4]; $r["path"]=$ret[5]; $r["query"]=$ret[7]; $r["fragment"]=$ret[9]; return $r; } function getTagResource($tag="a") { global $elements; $tag="elements)){ if (strtolower(substr($code,0,strlen($tag)))==$tag) { $attribArr[]=$this->getAttributes($code); } } return $attribArr; } function includeImportCss($html,$path="",$level=1) { global $urlToGrabArr; preg_match_all('/@import\s[\"]*((http:\/\/[^\/]*){0,1}(.*?))[\"]{0,1};/i', $html,$result); //echo " #".dirname($path)."#";print_r($result);echo "";die; if (is_array($result[3])) foreach ($result[3] as $k=>$v) { $url=dirname($path)."/".$result[3][$k]; //echo "url ricavato: $url "; if ($this->url_exists($url)) { $css=@file_get_contents($url); //die ($css); $html=preg_replace('/@import\s[\"]*((http:\/\/[^\/]*){0,1}(.*?))[\"]{0,1};/i', $css, $html); //if (strstr($html,"@import")) $html=importCss($html,dirname($result[3][$k]),$level++); } } return $html; } function url_exists($url) { $handle = @fopen($url, "r"); if ($handle === false) return false; fclose($handle); return true; } } ?>
hii am getting below error once i activate pluginFatal error: Class 'htmlparser' not found in D:\training\wamp\www\wordpress\wp-content\plugins\image-extractor\imageExtractor\imageExtractor.php on line 91please help me out how to solve this issue
For anyone having the problem of no images showing up, here is a possible solution (works on cloud hosting with Wordpress 2.7.1)Edit the file: imageExtractor.php Find all instances of: getenv("DOCUMENT_ROOT") and replace with: $_SERVER["PHP_DOCUMENT_ROOT"]Apparently on _some hosts_, DOCUMENT_ROOT doesn't come through as the correct place on the server to put the files, so the plugin fails to create the thumbnails.Stef
Hi,Is there a way to override img tag attributes "alt" and "title" with the title of the post which the image is extracted from?cheers, valix
thnx for the plugin but how to make it to resize all images that I post from other sites not uploaded to wordpress... Can I resize that kind of images or not.. Please answer soon because I need it very much
how would i make it get thumbnails from images on my category page?
ciao, mi scuso per l'intrusione ma ho bisogno di aiuto e sono davvero in difficoltà. Mi spiego: fino a pochi giorni fa usavo la plugin "alakhnors-post-thumb" ma non so bene per quale motivo ha fatto esplodere il blog, ed è il caso di usare questo termine, visto che ha buttato giù il server aruba per 3 giorni :-( Però tante mi piacerebbe avere nella sidebar sx le iconcine delle foro degli ultimi 10 post con i relativi titoli lincati. Cosa posso fare? Non posso permettermi di buttare di nuovo giù il server aruba, hanno minacciato di sospendere il contratto! Questa plugin fa al caso mio ed è compatibile con WP 2.7.x? grazie con tutto il cuore per tutto l'aiuto che riuscirai a darmi
Is it possible to make this plugin work for external images ?
Hey, nice plugin. But I'm confused as to how to implement this on my blog. I'm using the livewire theme. Can you help me out?
This is a really good plugin
Thanks a lot for the plugin. It modified my blog nicely. However, you need to modify details of your plugin on wordpress site as it has the wrong syntax. imageextractor rather then image_extractor.Cheers,pluzz
I had a similar problem where resized images weren't working, the thumbnail wasn't being created in the cache file, when I moved hosting. I finally tracked down the problem to the plugin using DOCUMENT_ROOT which was giving the wrong result, I changed it to use PHP_DOCUMENT_ROOT and it all works fine again. Hope this info may help someone else having problems.
I had the same problem as Lindsey and a few others here when using the wonderful Image Extractor plugin on a Wordpress site in a subfolder.Solution: When entering your path in the imageExtractor.php, make sure you add the subfolder path in the beginning. For example for a site: and thumb-folder with correct permissions at wp-content/thumb it is:$destinationDir="/subfolder/wp-content/thumbWorks perfectly.
Question:I'm using the plugin on a testing subdomain and when I set the first attribute to "true" none of my images will show. But when I change to false, all the images immediately show, although since I have them set to resize they are becoming a bit distorted.I do indeed have the gd2 graphics plugin for PHP. I double checked with my host this evening.Funny thing is, I'm using same plugin on the root domain of another site (hosted on same host) and it works fine when set to "true".Any suggestions?
Per favore...?
Ciao, ho lo stesso problema di Io, c'è qualche soluzione a riguardo? Mi serverebbe veramente molto questo plugin.... Grazie per l'aiuto ...
Hi,I would love to use this plugin but when I try to activate it (wordpress 2.5) it generates an error:html = ""; $this->html=$htmlcode; return true; } function LoadHTML($filename) .................any ideas what may be wrong? I have looked everywhere for a solution but havent found an answer... your help would be much appreciatedThanks I
helloI'm having some trouble setting the cache folder$destinationDir="wpcontent/uploads/";what should i have here?thanks
yea, i figured it out.@ Jonas Smith: maybe a solution for you too! ;)If the pictures are not saved in the original wp-content/upload/ [...] folder, image-extractor doesn´t work. so, if your image-link in the post is something like "", image-extractor although work with "false", but the crop function is disabled.So, make sure, that your images always are linked to your upload folder! ;)
This is what i have been looking for :D
funny. i´ve got the same problem as Jonas Smith.Inserting the first image without resize works fine, the second image - if i have the resize option (TRUE) turned on - wont be shown. It will be empty.WP 2.6. Any ideas?thx