webové odkazy php překážka. Hacky a doplňky. Spoofing adresního řádku v aplikaci Microsoft Internet Explorer
V souboru /includes/joomla.php ve funkci cleanText je návrh na nahrazení řádku
$text = strip_tags($text); $text = strip_tags ( $text , "Tento hack je určen pouze pro obrázky, které se vkládají jako normální obrázky. U obrázků vložených mambotem (mosimage) tento hack nebude fungovat.
Jak zajistit, aby se v komponentě com_weblinks objevil přímý odkazV weblinks.html.php musíte nahradit řádek:
$link = sefRelToAbs( "index.php?option=com_weblinks&task=view&catid=" . $catid ."&id=" . $row ->id ) ; $odkaz = $řádek ->url ; Jak zajistit, aby Joomla fungovala na dvou hostitelích (doménách) současně. Tito. například v místní síti na 10.0.0.15 a z internetové stránky-firmy.ru. Nehledě na to, že obě adresy jsou přiřazeny stejnému stroji.Za prvé, celý problém je v tom, že Joomla zobrazuje všechny obrázky a soubory CSS (jejich cesty v šabloně) vzhledem ke své proměnné $mosConfig_live_site - základní adresa webu zadaná během instalace. A pokud se k ní někdo pokusí přistupovat s jinou adresou, pak se na logice jejího fungování nic nemění - základní adresa se bere z konfiguračního souboru. Pokud je například v konfiguraci uvedeno, že je Joomla umístěna na localhostu, pak přístup z místní sítě, a to i na správně nakonfigurovaný Apache naslouchající na adrese 192.168.0.1, na tom nic nezmění - src obrázků bude stále začínat s „localhost“, který pro ostatní stroje již bude mít svůj vlastní localhost Cílem řešení pro takové případy je nahradit proměnnou $mosConfig_live_site u požadovaného hostitele, aby všechny funkce mohly vydávat správné odkazy a již uživatele vedly na. buď jeden nebo druhý virtuální web (uveďte správné základní cesty k obrázkům a základní cesty k adresám, existuje mambot Auto live site, pokud vám to nějakým způsobem nevyhovuje, tak v zásadě může). opakujte, v konfiguraci.php, místo definice $mosConfig_live_site, musíte napsat svůj kód.
if ($_SERVER [ "HTTP_HOST" ] =="host1.ru" ) $mosConfig_live_site = "host1.ru" ; else $mosConfig_live_site = "host2.ru" ;Je nutné dát pozor, že pokud používáte cache, musíte mít také dva různé cachovací adresáře pro dva hostitele, protože se v cache mohou křížit odkazy na různé hostitele a uživatel ze špatné sítě se pak vůbec nikam nedostane . Proměnná $mosConfig_cachepath je zodpovědná za mezipaměť.
Jak zajistit, aby se na jedné stránce objevily dvě součásti současněHned vám řeknu - ne všechno je tak jednoduché. Koneckonců to není modul. Proto se za prvé vyplatí hledat alternativu, tzn. Oblíbená součást jistě přichází s moduly, které dokážou replikovat její funkčnost. Pokud nic takového neexistuje, pak je tato možnost. Může být vyroben jako modul, nebo teoreticky může být vložen do šablony. Myšlenka je taková - volání komponenty přes index2.php (co a proč - přečtěte si celou skutečnost). Tito. můžete vytvořit iframe s src="index2.php?option=com_component&no_html=1" na požadovaném místě vložení pro druhou komponentu. A tam se to zobrazí. Další věc je, že je nepravděpodobné, že bude možné plně zajistit funkčnost. Ale přesto je to cesta ven.
Nebo použijte konstrukci: mosLoadComponent("com_mycomp" ) ;
Ale pokud je komponenta spuštěna tímto způsobem, musíte pochopit, že neví o vašich manipulacích a bude pracovat podle svých $option a $task.
Jak zvýšit délku nadpisu v článkuV phpMyAdmin musíte spustit následující dva příkazy (existuje speciální stránka pro provádění SQL dotazů), stačí nahradit ###_ vaší skutečnou předponou tabulky. Maximální možný počet je 255. V příkladu je použito 200.
ALTER TABLE `###_content` ZMĚNA `alias_název` `alias_název` VARCHAR(200) NOT NULL; ALTER TABLE `###_content` CHANGE `title` `title` VARCHAR(200) NOT NULL;
Jak do RSS kanálu zahrnout celé texty zpráv, nejen jejich titulkyChcete-li to provést, musíte v souboru /components/com_rss/rss.php nahradit
$item_description = $řádek ->introtext ; $item_description = $row ->fulltext ; Jak mohu vytvořit dvě stránky Joomla pomocí stejné databáze nebo pomocí stejných souborů?Pokud jde o použití jedné databáze, musíte napsat jednu databázi v configuration.php pro dva motory, ale musíte rozumět tomu, co děláte. Protože udržování relací pro uživatele v tomto případě bude velmi problematické, protože domény jsou různé. Tito. přihlašovací záznamy v tabulce #__sessions se (mohou) překrývat.
Pokud chcete používat stejné soubory bez kopírování velké distribuce, pak v zásadě můžete použít příkaz „ln -s“ v Linuxu k vytvoření symbolických odkazů na existující soubory a nekopírovat je pro nový web.
Jak vytvořit virtuální stránku přístupnou na konkrétní adrese v obecném designu Joomla (http://site.ru/super_page)- Prvním způsobem je použití jakési komponenty SEF, ve které zadáte požadovanou virtuální cestu pro statickou stránku. Zde je mínus - tato komponenta začne předělávat všechny ostatní odkazy (a obecně jsou tyto komponenty velmi náročné na energii a vyžadují mnoho zdrojů, aby fungovaly).
- Vytvořte alias pro takovou stránku pomocí mod_rewrite a .htaccess. K tomu potřebujete:
- Vytvořte statickou stránku s textem, který potřebujete, zjistěte její ID a adresu (není nutné takovou stránku vytvářet, může již existovat a obecně se jedná o libovolnou komponentu, ne nutně com_content)
- Vymyslete alias, ať je to "super_puper"
- Otevřete .htaccess a před řádek "RewriteCond %(REQUEST_FILENAME) !-f" napište:
- A nyní, za předpokladu, že se Joomla nachází na site.ru, když otevřete odkaz http://site.ru/super_puper, otevře se požadovaná statická stránka s vašimi informacemi. Samotný odkaz "index.php?option=com_content&task=view&id=12" může být cokoli potřebujete, hlavní věc je, že odkaz není absolutní (tj. s http:/ /...), ale relativní (musí začínat indexem .php?...)
To může být nutné, pokud používáte mambot rd_addphp pro vkládání skriptů, které by měly pokaždé generovat náhodná čísla nebo náhodný text, bez ohledu na systém ukládání do mezipaměti Joomla. Chcete-li zakázat ukládání do mezipaměti určité položky, musíte zjistit její ID (v admin panelu se při úpravách podívejte do adresního řádku, bude to říkat něco jako "...&id=123..."). Takže 123 bude ID našeho článku. Je nutné nahradit v souboru /components/com_content/content.php přibližně na řádku 1600
$cache ->call ( "HTML_content::show" , $row , $params , $access , $page ) ; if ($row ->id !="123" ) $cache ->call ( "HTML_content::show" , $row , $params , $access , $page ) ; else HTML_content::show ($row, $params, $access, $page) ;Kde 123 je ID článku, které potřebujete.
Nainstaloval jsem mnoho komponent, ale seznam komponent v nabídce správce zobrazuje jejich snížený počet a pak se zobrazí „Další komponenty...“. Jak zobrazit všechny komponenty.Potřebujete řádek v souboru /administrator/modules/mod_fullmenu.php
$topLevelLimit = 19 ;nahrazen
$topLevelLimit = 199 ; Jak nainstalovat kopii součástiNutno říci, že úkol je to nesmírně obtížný. Pokud nerozumíte tomu, jak komponenta funguje, tak to raději ani nezkoušejte. Pro ty, kteří stále chtějí poznamenat hlavní body:
- V souboru XML přejmenujte název komponenty ve jmenovce
- Dále je potřeba přejmenovat použité tabulky (zaprvé v souboru XML a zadruhé ve všech dílčích souborech, kdekoli se používá databázový objekt $database a metoda setQuery)
- Přejmenujte také všechny cesty v komponentách. Cesty lze použít v odkazech na sebe nebo v názvech zahrnutých souborů. Nejčastěji se jedná o hledání podřetězce com_componentname a jeho nahrazení novým.
Tato metoda ale nic nezaručuje. U jednoduchých to možné je a přejde, ale u složitých to nikdo nezaručí.
Jak zajistit, aby jedna pozice náhodně zobrazovala jeden z modulů, které jsou k ní přiřazeny- Možnost 1 – hackněte funkci mosLoadModules. V šabloně na místo, kde je potřeba zobrazit jeden z N modulů, napíšeme (pozor na třetí argument):
A výše uvedenou funkci mírně opravíme:
function mosLoadModules( $position ="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $pozice ] ; else ( $modules = pole () ; ) //přidej sem if ($show_random && sizeof ($modules ) >0 ) ( $tmp = $modules [ rand (0 ,sizeof ($modules ) -1 ) ] ; $modules = array ($tmp ) ; // konec příkazu if ( count ( $modules ) ;< 1 ) { $style = 0 ; }Přidali jsme k němu třetí argument (který je použit v šabloně, kde jsme napsali true) a upravili kód.
- Možnost dvě je bezbolestnější, pouze upravujeme šablonu. Ale pracnější - musíme vytvořit několik pozic. Nejprve vytvoříme několik nových pozic modulu, například new1 ... new10. Uložit. Na správném místě v šabloně před voláním funkce mosLoadModules přidejte potřebný kód:
Tato možnost není standardně poskytována. Ale ve skutečnosti je možné, organizováním vyhledávání v souborech Joomla, nahradit jakýkoli výskyt takového slova vaším - tajné. Někdy se později mohou objevit chyby o nemožnosti přístupu k souborům, ale pokud znáte číslo souboru a řádku, lze je opravit. Problém je tedy v zásadě řešitelný.
I nadále s vámi sdílím malé, ale velmi užitečné skripty stránek, které pomáhají zlepšit přístup vyhledávačů k vašemu webu. Tentokrát si povíme o správném odkazování stránek.
Nejprve si vytvořte databázi adres stránek a možných kotev pro každou z nich. Jako základ použijeme soubor *.txt. Struktura souboru bude vypadat takto:
adresa_stránky_1, kotva_2, kotva_3,..., adresa_stránky_2 kotvy, kotva_2, kotva_3,..., adresa_1 kotvy, kotva_2, kotva_3,..., adresa_stránky_1, kotva_2; kotva_3, ..., kotva_n
Jak vidíte, další použití skriptu je možné s libovolným počtem adres stránek a jejich kotev. Adresa stránky se píše bez http://www.site.ru/, tzn. ihned od kořene bez prvního lomítka. Adresa je od kotev oddělena středníkem a kotvy jsou odděleny pouze čárkou. Můžete napsat i celou adresu, jen je to pro mě osobně pohodlnější, ale vyplnění a výstup výsledku si můžete změnit sami, myslím, že na to intuitivně přijdete sami.
A tak vznikla databáze odkazů a kotev pro ně, níže uvedu příklad PHP kódu pro přímé zobrazení odkazů pro odkazování na webu:
Tento kód vložíme kamkoli na web, kde se zobrazí 5 náhodných odkazů z databáze a náhodná kotva. Je lepší kotvy zředit, než psát pouze 1 do odkazu. Při správném prolinkování na vašem webu okamžitě zaznamenáte nárůst návštěvnosti a zlepšení ostatních ukazatelů webu.
Těším se na vaše dotazy v komentářích k tomuto příspěvku.
Datum zveřejnění: 3. března 2014- Recenze a komentáře:
Dmitriy:
Díky za scénář, implementuji ho. Není možné kopírovat zdrojový kód ze stránky, kopíruje se pouze po malých částech, pohodlnější by byl celý.
Kirill:
Díky za poznámku o kopírování, právě jsem to viděl, pokusím se to brzy opravit.
Alexey Pavlov:
Chyba v řádku $tex = explode(":",$sendlist[$count] Potřebujete středník, ne dvojtečku. Trochu jsem změnil kód, aby byl přehlednější: