<t-itle> v kódu stránky

Ernst
07. zář 2019 15:45 #140653
Poradíte někdo, kde joomla vkládá <t-itle>?
Rád bych toto vypnul a dal si tam vlastní <t-itle>..............</title>,
ale nemohu na to přijít ani to vygooglit.

Díky předem za rady

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
07. zář 2019 19:28 #140654
jce
rsfirewall

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
07. zář 2019 20:56 #140657
Rudolfe, promiň, ale nerozumím.
Já prostě potřebuji adstranit <t-itle> ze zdroje stránky, abych si tam mohl dát svůj (dvakrát být nesmí).
Co s tím má společného JCE a rsfirewall?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 09:45 - 08. zář 2019 09:55 #140660
Jejda, já myslel, že je třeba zjistit proč je ve slově title pomlčka == kdo to tam vkládá == kde joomla vkládá <t-itle>.
Zapoměl jsem že pomlčku tam vkládá fórum automaticky, takže se jedná o slovo title bez pomlčky a otázka pak má jiný obsah.

Takže title má svoji funkci:
/libraries/src/Document/Document.php:893:	public function getTitle()

Generování je zde:
/libraries/src/Document/Renderer/Html/HeadRenderer.php:132:		$buffer .= $tab . '<t-itle>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '</title>' . $lnEnd;


Pro starší joomla najdete řešení zde:
forum.joomla.org/viewtopic.php?t=700576

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
08. zář 2019 10:22 - 08. zář 2019 10:23 #140661
super, díky za radu, než budu hledat dál, tak jestli ještě nevíš:
Když z té funkce vrátím prázdný řetězec, tak mi ve zdrojovém kódu zůstane
<t-itle></title>

jak z toho ven?

ps opět tam portál přidal pomlčku

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 10:28 #140662
Přidat if else s podmínkou zda je výstup prázdny == zakomentovat výstup do buferu?

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
08. zář 2019 10:37 #140663
už jsem na to přišel
1. nemůže být výstup prázdný, protože pak se to týká i třeba názvu okna prohlížeče a to asi nikdo rušit nechce.

2. Stačí v /www/libraries/src/Document/Renderer/Html/HeadRenderer.php
upravit řádek 132
na
$buffer .= "";//$tab . '<t-itle>' . htmlspecialchars($document->getTitle(), ENT_COMPAT, 'UTF-8') . '</title>' . $lnEnd;

ale teď mi řekni, jestli existuje vůbec nějaká možnost aby to bylo upgradeodolné

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 10:51 #140664
No celá myšlenka, že vznikne prázdný výstup je nesmysl.
Podle SEO tam vždy musí něco být, takže ta úprava je špatná.
Navíc do toho vstupuje další proměnná == a to že titulek je možné generovat taky pomocí dodatečně nainstalovaných aplikací, pomocí titulku u menu atd atd

Takže než bych tu úpravu udělal, přemýšlel bych co mě k tomu vede a zda třeba nepoužít vlastní funkci v komponentě na vytvoření title.

Prostě pokud bych tento problém řešil, šel bych na to jinak.
Navíc myslím že původní dotaz souvisel s vytvořením duplicitního titulku == kdo ten duplicitní titulek vytváří?
Tam bych hledal prvotní problém a hledal řešení jak odstranit duplicitní titulek.


A odpověď na otázku zda se to při upgradu Joomla přepíše.
Ano, přepíše.

Pokud my hackujeme cokoli na našich projektech, vše archivujeme do gitu a popíšeme, tak aby při upgradu bylo hned jasné co znovu upravit.
Pak je to otázka 5 minut jen projít seznam úprav a znovu nasadit (úpravy se jen vezmou z gitu).
Z toho důlvodu vydáváme i upravené verze aplikací (Artio, CustomFilters, Acymailing...)
Vše máme přehledně uložené v archívu s popisem proč se to upravilo.

Takže například obecně vím, že joomla neumí správně zobrazit položky submenu na aktivní položce menu při použití dalšího modulu nabídka, takže tam používáme hack. A při každém upgradu hack znovu nasazuji ručně.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
08. zář 2019 11:08 - 08. zář 2019 11:10 #140665
JASNĚ CHÁPU. ZMĚN NEMÁM TOLIK, ABYCH JE DÁVAL DO GITU, ALE MÁM JE POZNAMENÁNY. Takových věcí mám také víc.

Pokud mi navrhneš lepší řešení, budu rád.
Potřebuji aby v K2 se do <t-itle>...</title> dalo něco jiného než název itemu, v tomto případě obsah dodatečného pole. To si naprogramuji, ale musím se zbavit title, které tam dává joomla, aby to nebylo 2x

PS, titulek v menu nechci použít, musel bych přidat položku menu každému k2 itemu

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 12:04 #140666
Proč by proboha K2 sama vkládala duplicitní title?

Jak se tam ten duplicitní title dostane? Nějaké URL a popis k tomu je?

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 12:27 #140667
Pochopte, že Vás chci navést k tomu, že ta chyba se mí řešit jinak a podle mne vznikla zásahem programátora (domnívám se toho co vkládá vlastní title do K2).

Vy mi to ale neulehčujete a pořád se bráníte :)

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
08. zář 2019 16:53 #140668
tak znovu a ještě jednou srozumitelněji:

Potřebuji aby v K2 se do <t-itle>...</title> dalo něco jiného než název itemu, v tomto případě obsah dodatečného pole. To si naprogramuji, ale musím se zbavit title, které tam dává joomla, aby to nebylo 2x


Tedy já sám si přeprogramuji k2, aby mi ve výstupu dala title jaký chci (nechci název článku). proto jsem se musel zbavit title, který tam dává joomla, aby nebylo title 2x

Je to už jasné?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
08. zář 2019 17:45 - 08. zář 2019 17:54 #140669
Ernste,

mě je to jasné od začátku, ale logika Vaše je špatná.

Joomla poskytuje jen framework a zobrazuje to co má každá app/modul/plugin naprogramované.
Vypínat její základní funkce je nesmysl.
K2 je jen malý pidižvík co se v Joomle používá, takže správná logika je přeprogramovat K2.

Já jsem po Vás chtěl URL a informaci, že Joomla ve spojení s K2 duplikuje title.

Protože se pořád bráníte, donutil jste mně nainstalovat si K2 a oveřit si, že mám pravdu.
Na položce item K2 se žádné duplicitní title nezobrazuje.

Takže není třeba hackovat Joomla, ale je třeba hackovat K2.

Pokud je komponenta správně napsaná, generuje sama informaci co se má do titulku vložit a joomla jen tuto informaci vezme a vyrenderuje.

No a pokud znáte funkcionalitu Joomla MVC (viz dokukmentace Joomla), jste již jen krůček od pochopení správné logiky a tudíž nalezení místa, co máte upravit.

Já nejsem programátor, ale zkusil jsem podle této logiky postupovat a našel jsem tohle:

K2 item generuje

- metatitle
- title
- a pozor, také og:title

Tyto informace by se podle správného programování měly generovat na několika místech, ale nejlépe ve view.html daného zobrazení.

Pokud se bavíme o zobrazení (view) ITEM, je třeba tedy hledat zde:
components/com_k2/views/item/view.html.php

Zde najdete všechny potřebné kódy pro to aby jste stávající titulek položky vyměnil za svůj vlastní (například za obsah dodatečného pole),

TITLE:
Najdete od řádku 357 == // Set page title

Nejprve do parametru renderovaného dokumentu přidáte titulek pomocí příkazu set (zde např.):
($params->set('page_title', $item->cleanTitle);

aby jste ho následně definoval do dokumentu jako titulek:
$document->setTitle($params->get('page_title'));

METATITLE
Najdete od řádku 397 == // Set metadata

OG:TITLE
Najdete od řádku 456 == // Set Facebook meta data



Ukázka:
kolopark.easy.minion.cz/testovaci-clanek

MiniJoomla! - www.minijoomla.org - eshop s rozšířením
Virtuemart Mailing Manager - aplikace na správu šablon emailů pro VirtueMart
XML Easy Feeder - aplikace na generování feedů, napojení na ERP pro VirtueMart
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla!
Přílohy:
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
08. zář 2019 20:00 - 08. zář 2019 20:06 #140671
Pokud se vkládá novej "title" přes Joomla! document metodu, pak se neduplikuje, ale přepisuje. A pokud někdo nechce zasahovat do komponenty a někde si vést seznam změn, může to udělat přes systémovej plugin. Pokud se nahrazuje "title" např. něčím neměnným, je to celkem v pohodě, pokud už tam musí být nějaká logika, která vychází z url, pak to samozřejmě bude trochu více náročnější na prostředky, ale člověk pak nemusí při každým upgradu hlídat změny v core nebo v komponentě:
function onBeforeRender() {
		
		$document 	= JFactory::getDocument();
	
		// Zde je místo pro vytvoření nového title
		// a) může to být něco neměnného
		// b) může se pracovat s aktuálním title, je v proměnné: $document->title
		// c) nebo na základě URL a jeho parametrů se lze např. zeptat databáze, atd. atd.
		$newTitle = "New Title";
		$document->setTitle(htmlspecialchars($newTitle));
	}


Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
08. zář 2019 20:20 - 08. zář 2019 20:23 #140672
máš naprostou pravdu, že já jsem hledal co nejjednodušší řešení, ty uvádíš správné.

rád bych použil to tvoje, ale má to svá ale, kterým nerozumím a možná mi vysvětlíš.

To řešení v K2 (jak jsi zde psal), jsem si vyzkoušel a je to ok. Ale v tomto případě to musím změnit i v klasickém content (článcích) protože ty jsou na stránkách taky. A pak jsou tam i nějaké komponenty, které s title vůbec nepracují.
Jak tohle řešit?

Můj nápad byl to pro vše odstranit a řídit si title sám. V K a článcíchj si to doprogaramovat na jiných stránkách si title i description doplnit na stránky v modulu na hraném do head.

To H13, to co popisuješ, je super, ale bohužel takhle daleko moje znalosti nesahají, mohl by jsi mi to blíže vysvětlit?

dík

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.