Nem, csak a napokban a tutorial.hu-n próbáltuk üzembe helyezni a szép url-ek modot, és azért már nagyjából tudtam, hogy mit keresek
BlackY
Nem, csak a napokban a tutorial.hu-n próbáltuk üzembe helyezni a szép url-ek modot, és azért már nagyjából tudtam, hogy mit keresek
BlackY
Geeeeez, ezt el nem hiszem, vazze...
Kiugrok 5 percre, hogy bevásároljak a boltban, mire visszaérek, kapok egy komplett megoldást a problémára????
*** Merras leborul a földre ***
Jobb helyet találtam neki, így már tényleg többnyire csak a postokat fogja figyelni
A kód ugyanaz, csak a második sorban
És nem a class_display.php-be kerül, (és onnan a függvényhívást is érdemes kivenni), hanem a sources/action_public/topics.php-be, és a $this->autolinker(); aKód:$text =& $this->output;
sor (IPB 2.2.1-ben 680. sor körül) elé kell, hogy kerüljön. Még azt kéne megoldani, hogy HTML tagokon belül ne nézzen, valamint tényleg csak a postok szövegén belül nézelődjön, de ahhoz kell még kicsit nézegetnem a kódotKód:$this->ipsclass->print->add_output( $this->output );
BlackY
No, bocsánat, nagyon amatőr vagyok php-kód ügyében, szóval, lássuk, jól értelmezem-e, amit írsz:
Az alábbi kódot be kell raknom a sources/action_public/topics.php-be:
Az alábbi kód elé pedig:Kód:function autolinker() { $text =& $this->output; $this->ipsclass->DB->simple_construct( array ( 'select' => 'tid,title', 'from' => 'topics')); $this->ipsclass->DB->simple_exec(); $array = array('from' => array(), 'to' => array()); while($row = $this->ipsclass->DB->fetch_row()) { if($row['tid'] != @$_GET['showtopic']) { $array['from'] = $row['title']; $array['to'] = '<a href="' . $this->ipsclass->vars['board_url'] . '/index.php?showtopic=' . $row['tid'] . '">' . $row['title'] . '</a>'; } } $text = str_replace($array['from'], $array['to'], $text); }
Be kellene, hogy kerüljön egy ilyen:Kód:$this->ipsclass->print->add_output( $this->output );
Jól értelmezem?Kód:$this->autolinker();
Csak azért, mert én nem találom a
sort se a class_displayben, se a topics.phpben.Kód:$this->ipsclass->print->add_output( $this->output );
UPDATE: Hülye vagyok, elnézést... most látom, hogy 2.2.1-el tesztelted, nekem meg 2.1.7-em van... ezt a tesztet el fogom halasztani, mert legutóbb, amikor 2.1.7-ről akartam frissíteni, akkor elcsesződött minden, valszeg azért, mert valami összeakadt egyrészt az IPB bloggal, másrészt a Joomla bridge-el. Shit.
Azért köszönöm szépen.
Utoljára módosítva: Merras által : 2007-05-19 19:05
Nézd a dolog pozitív oldalát: mire eljutsz a tesztig talán megfejtem, hol és mikor tölti be a post-okat a motor, és át tudom írni, tehát már a legjobb változatot fogod belőle látni [+ lehet, hogy az 2.1.7-barát lesz, csak most az a változat nincs kéznél ]
BlackY
Köszi, de a 2.1.7 változattal szerintem ne vacakolj az én kedvemért - security szempontból amúgy is muszáj lesz egyszer felfrissítenem a rendszert, ASAP.
Be tudnád zippelni és fel tudnád tölteni valahova a sources/handlers/han_parse_bbcode.php-t a 2.1.7-ből? Akkor kapásból tudnám nézni, hogy abban a verzióban is működne-e jelenlegi állapotában. (Így már csak a post-ok szövegét, aláírásokat, ... nézi (tehát amik átmennek a BBCode parser-en, így esetleg le is tiltható egy-egy post-nál az autolinkelés ))
BlackY
Ha minden igaz, akkor csatoltam a mostani hozzászóláshoz...
Szerkesztés: csatolt file eltávolítása
Utoljára módosítva: Merras által : 2007-05-19 22:22
Remek, úgy tűnik ez nem - sokat - változott
A tényállás most az, hogy csak olyan dolgokon cserél, amik átmennek a BBParse-ren (postok, aláírások, ilyenek), azokon belül is case-sensitiven (tehát a "Merras" témát nem fogja kidobni a "merras" szövegre), HTML tagokon belülre nem nyúl (regexp-el megy).
Az egyetlen hátulütője, hogy sok témánál marhára lelassulhat: végülis egy oldalon mondjuk 10 postnál legrosszabb esetben 20-szor (post + aláírás) végig kell néznie a szöveget. Úgyhogy - bár sebességben nem hiszem, hogy sokat jelenteni - mielőtt ráküldöm a regexp-et ellenőrzöm simán strpos-al (innen a case-sensitive-itás, PHP 5 alatt már stripos is lenne). Ki kell próbálni, max ha nem megy így, akkor a topic DB-be mentésére és update-lésére kell beállítani ezt a módosítást, de ugye akkor lesz egy csomó olyan, hogy a kifejezés nem lesz linkesítve, és egy-egy téma törlésénél halott linkek...
Ami a CSS támogatás illeti, a linkek kaptak egy autogenerated class-t, így kiemelheted őket, és leírhatod a usereknek, hogy ezek miért azok, amik. Na, és akkor a kód:
Ezt másold be a parse_bbcode osztályba, aztán a pre_display_parse metódus első sorába (157. abban, amit linkeltél) ezt:Kód:function _autoTopicLink( $text ) { static $topicLinks = array(); if($this->parse_html) { $text = str_replace(array('<', '>'), array('<', '>'), $text); } if(count($topicLinks) == 0) { global $ipsclass; $db =& $ipsclass->DB; $db->simple_construct(array('select' => 'tid,title', 'from' => 'topics')); $db->simple_exec(); while($row = $db->fetch_row()) { $topicLinks[$row['title']] = '<a class="autogenerated" href="' . $ipsclass->vars['board_url'] . '/index.php?showtopic=' . $row['tid'] . '">' . $row['title'] . '</a>'; } } foreach($topicLinks as $pattern => $replace) { if(strpos($text, $pattern) !== false) { $text = preg_replace('/' . $pattern . '(?![^<]*?>)/', $replace, $text); } } if($this->parse_html) { $text = str_replace(array('<', '>'), array('<', '>'), $text); } return $text; }
BlackYKód:$text = $this->_autoTopicLink($text);
Utoljára módosítva: BlackY által : 2007-05-19 21:34 Oka: A DB jóval kevesebb zargatása... azért nem árt :)
Ooookkkk, köszönöm, most már csak egyetlen kérdésem van: hol a fenébe is adom meg ennek, hogy milyen kulcsszót milyen linkre változtasson?
Ill. priviben dobj már nekem egy kulcsszót meg egy URL-t, amit hálából beállítok Neked az SFportal fórumában. ;-)
Könyvjelzők