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

Odpověď od H13
08. zář 2019 20:56 - 08. zář 2019 20:58 #140673

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


Místo toho, aby jsi dělal modifikace do každý komponenty, nebo do core Joomly!, je můžeš udělat jednou v tvým pluginu, kterej si prostě zapneš/vypneš/nainstaluješ/odinstaluješ podle potřeby.

Systémovej plugin v podstatě může přepsat cokoliv na stránce. Většinou obsahuje dva soubory: php a xml (php s kódem, který se vykonává, xml s definicí a informací o pluginu).

Pokud by jsi ho vytvářel, stačí vzít nějajej stávající plugin a prostě ho zkopírovat a modifikovat podle svých potřeb. Můžeš se např. podívat na systémovej plugin Phoca Upgrade - www.phoca.cz/phoca-upgrade-system-plugin - ten se snaží přepsat bootstrap 2 výstup na bootstrap 3. Podobně tak můžeš postupovat při přepisování title.

V Joomla! dokumentaci si najdeš metody systémovejch pluginů. Jednou z nich je např:
function onBeforeRender() {

Prostě meníš kód ještě před vykreslením.

V tvým případě stačí jedna methoda, a to ta onBeforeRender()

A jakmile takovej plugin bude nainstalovanej a zapnutej, pak se jeho metoda onBeforeRender provádí při každým zobrazování jakýkoliv stránky v Joomle!

Má to výhody i nevýhody:

- Na jednom místě můžeš ovlivňovat veškerý výstup pro všechny části systému (články, k2, galerie, atd.)
- Ale protože to není v každý komponentě, nemáš tam např. proměnný z každý komponenty. Např. systémovej plugin při zobrazení článku nemá údaje o článku. Ty má jen content plugin. Jenže content plugin pracuje vždy jen ve článcích, už by nejel v k2, galerii, atd.

Proto je otázka, co se má dát do title. Pokud by to byla konstanta, nebo nějaká proměnná stejné pro všechny části (kterou by jsi např. dostal z databáze), pak je system plugin Ok. Pokud by ale byl pro každou část jinej - např. z článku by bral to, z galerie něco jinýho, z K2 taky, pak to bude složitější.

Pokud si ale systémovej plugin už jednou vytvoříš, pak ho můžeš používat všude a můžeš do něj přidávat různý nový vlastnosti, včetně parametrů, atd.

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,...
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 21:29 #140674
díky moc za vysvětlení, jak zbyde čas, vyzkouším to

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

Odpověď od Rudolf
09. zář 2019 08:47 #140675

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?


Ale to nebylo součástí původního dotazu, jinak bych navrhl jiné řešení...

Tohle mi dělají zákazníci taky. V půlce projektu si jakoby náhodou vzpomenou že ještě to a ještě to. A myslí si že to je jen drobnost. A přitom to věděli hned, jen se báli to říct aby to nestálo víc.
Nechápu proč je třeba měnit něco v content článcích, které neobsahují extra pole z K2 a vůbec jak souvisí s K2.
A taky nechápu jak s tím souvisí jiné aplikace.

Pokud je třeba na webu ještě něco jiného, myslím že by stálo za to příště odhalit o jakýn web jde a co je cílem.
Neúplné zadání - jen jsem ztreatil zbytečně čas.

Použít systémový plugin je totiž taky možnost, jen se musí zase vědět proč a jak ho správně použít == opět jsme u zadá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!
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
09. zář 2019 11:18 #140676
Já děkuji za všechny informace i ty navíc, na které jsem se výslovně neptal.

Hledal jsem radu pro jeden konkrétní problém a na to jsem odpověď dostal vyčerpávající.

Nehledal jsem, jak řešit celý kompletní web, tím jsem nechtěl otravovat a o tom mám jasnou představu.

Kdybych hledal kompletní řešení webu, tak to sem snad ani nepatří a za druhé by muselo být dlouhé vysvětlení zadání.

Prostě zadání znělo: odebrat zadávání title z joomly a plně ho řídit manuálně, třeba v modulech pro jednotlivé stránky.

Je to pravda nezvyklé, ale zákazník to tak chce a určitou logiku to má.

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

Odpověď od Cony
09. zář 2019 18:35 #140677
Ještě by to šlo řešit přímo v šabloně:
- pomocí n3t Fields dodefinovat pole sef_title k článkům / K2 článkům / kategoriím / položkám menu nebo všude kde to chcete zadávat
<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="n3tfields">
        <fieldset name="jmetadata">
          <field name="sef_title" type="text" label="SEF ttiulek" />
        </fieldset>
    </fields>
</form>
- v šabloně příslušné komponenty (pro článek tedy např. v /html/com_content/article/default.php) doplnit něco jako
JFactory::getDocument()->setTitle(n3tFields::article($this->item, 'sef_title'));
Poděkovali: Ernst

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