Přepis výstupu

Ernst
07. lis 2015 17:43 #124388
Při kliknutí na obrázek se mi otevře fotogalerie a já chci aby se mi otevřel profil uživatele.
Musím to najít ve zdroji nebo to lze udělat nějak elegantně přepisem výstupu. Nebo jak se tomu přesně říká?

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

Odpověď od Bong
07. lis 2015 21:11 #124394
A jak ty obrázky do článků vkládáte? Z fotogalerie pomocí pluginu fotogalerie? Pak se ale galerie samozřejmě bude objevovat.

Vložte obrázek do článku v rozlišení jaké požadujete a prolinkujte jej s profilem uživatele.

I'm sorry, my responses are limited...you must ask the right questions.

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

Odpověď od Ernst
08. lis 2015 11:12 #124403
ne, to bohužel ne, to by bylo jednoduché.
Upravuji koupený modul Love factory a v přehledu uživatelů je fotka a já při kliknutí na ní nechci skočit do fotogalerie ale do profilu uživatele.
Mám takové tušení, že to budu muset najít ve zdroji, což je ale značně časově náročné.
Myslel jsem, zda nejde použít nějaký "fígl", tedy až na výstupu ze serveru to přepsat na jinou url

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

Odpověď od Cony
08. lis 2015 22:35 #124418
Vždycky to budete muset "přepsat až na výstupu". Postup template override, který zmiňuje Bong, je výhodný v tom, že se nehrabete v kódech originálního modulu, ale v rámci šablony si odkopírujete jeho šablonu (to co je v adresáři tmpl) a v něm si upravíte co chcete. No a dohledání jednoho odkazu snad nebude nijak časově náročné...

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

Odpověď od Cony
08. lis 2015 22:35 #124419
Vždycky to budete muset "přepsat až na výstupu". Postup template override, který zmiňuje Bong, je výhodný v tom, že se nehrabete v kódech originálního modulu, ale v rámci šablony si odkopírujete jeho šablonu (to co je v adresáři tmpl) a v něm si upravíte co chcete. No a dohledání jednoho odkazu snad nebude nijak časově náročné...

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

Odpověď od Ernst
09. lis 2015 09:59 #124427
pokud to chápu dobře, tak Bong radil k obrázku v článku. Na to bych se opravdu ani neptal. Tady žádný článek není.

Doteď jsem asi přesně nepochopil "template override". Pokud tím myslíte že styly použité v modulu přepíšu v šabloně, tak to pak chápu, ale nedokážu si představit, jak bych to zde použil.

Složky tmpl jsou ve views, ale tam jsou vždy soubory *.tpl . A v tom views je 62 složek, které samozřejmě nemusím prohledat všechny.
Většinou si v developer tools najdu třídu ve které je to obsaženo a tu pak hledám. v tomto pomkrétním případě, je to však tost složité.
No nic, jdu hledat

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

Odpověď od Cony
09. lis 2015 10:13 #124429
Psal jste modul. Moduly jsou ve složce modules, ne components. Modul ve složce tmpl nebude mít žádnou podsložku, ale přímo soubory.

Pro jednodušší hledání správného View si zkuste vypnout SEF odkazy. V URL pak vždy uvidíte něco jako task=.... nebo view=... a ztoho odvodíte správné view.

Template override - popsáno např. zde .

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

Odpověď od Ernst
09. lis 2015 10:50 #124430
díky, tak Template override již chápu, vcelku šikovná věc.

To love factory je komponenta, a kódy jsou umístěny v \www\components\com_lovefactory
Asi jsem to napsal nesrozumitelně, ale myslel jsem, že složka www\components\com_lovefactory\views má 62 podsložek a každá má svoje tmpl.
URL mi u toho přehledu (ať zapnu či vypnu SEF) dá http://localhost/index.php?option=com_lovefactory&view=search&Itemid=447&lang=cs

Takže bych mel hledat v \www\components\com_lovefactory\views\search\tmpl
Tam je jen default.tpl
{extends "layout.tpl"}

{block "toolbar"}
  {toolbar toolbar="search" active=$viewName}
{/block}

{block "heading"}{/block}

{block "content"}
  {jhtml _='LoveFactory.BeginForm' url={jroute view=$viewName}|cat:$jumpToResults}
  {* <div class="lovefactory-search-form" style="display: {($request) ? 'none' : 'block'}">*}
     <div class="lovefactory-search-form" style="display: {($request) ? 'none' : ''}">
      {$renderer->render($page)}

      <div class="actions">
        <button type="submit" class="btn btn-small btn-primary">
          <span class="fa fa-fw fa-search"></span>{text text=$viewName|cat:'_submit_button'}
        </button>

        <button class="form-reset btn btn-small btn-link">
          <span class="fa fa-fw fa-times"></span>{text text='search_reset_form'}
        </button>
      </div>
    </div>

    {if $request}
      <a href="#" class="toggle-form btn btn-small btn-link">
        <span class="fa fa-fw fa-chevron-down"></span>{text text='search_toggle_form'}
      </a>
    {/if}

    {$viewResults}
  </form>
{/block}

a v tom je čert se vyznat.
v layout.tpl je jen
<div class="lovefactory-view view-{$viewName}">
  {block "toolbar"}{/block}

  <h2 class="heading">{block "heading"}{text text="page_heading_title_"|cat:$viewName}{/block}</h2>

  {block "content"}{/block}
</div>

Developer tools vypíše:
<div style="background-image: url('http://localhost/media/com_lovefactory/storage/photos/9/thumb_30f6df41ab7aae396f33e5f28215fde6.jpg');" class="lovefactory-thumbnail">
<a href="/index.php/cs/lide-hledat-2/photos?user_id=9" style="display: block; height: 100%;"></a>
</div>
<a href="/index.php/cs/lide-hledat-2/photos?user_id=9" style="display: block; height: 100%;"></a>
a to kde se generuje to href potřebuji najít a přepsat ho na:
<a href="/index.php/cs/lide-hledat-2/profile/9"><i class="factory-icon icon-user"></i>u1</a>

Pro mně se to najít nezdá být tak jednoduché

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

Odpověď od Cony
09. lis 2015 11:02 #124431
Znovu - psal jste modul, to NENÍ komponenta, a zdroje modulu NEJSOU v adresáři compnents ale modules. Pokud je to opravdu modul (tedy spravovaný v administraci přes menu Rozšíření - Správce modulů) - hledejte ho v adresáři modules.

Pokud chcete upravovat výstup komponenty a ne modulu, pak to bude opravdu v tom adresáři search, ale nejspíš bude vše "skryto" v řádku
{$viewResults}

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

Odpověď od Ernst
09. lis 2015 11:24 - 09. lis 2015 11:28 #124432
možná špatně používám názvosloví, ale všechny úpravy komponenty dělám v \www\components\com_lovefactory.
S tím $viewResults asi máte pravdu, ale kde se načítá?
na text "viewResults" mi to nic nenajde.

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

Odpověď od Cony
09. lis 2015 11:35 #124433
Ale špatným názvoslovím dost komplikujete jakoukoliv radu.
Komponenta je rozšíření Joomly, která má valstní URL adresu a (obvykle) umí cosi zobrazit v hlavní části stránek.
Modul je rozšíření Joomly spravovaný přes správce modulů. Nemá vlastní stránku, lze jej zobrazit v postranních sloupcích (např.) na stránkách jiných komponent apod. Obvykle se modul používá k zobrazení různých podružných informací, nebo navigací (menu)
Plugin je rozšíření Joomly které primárně obvykle nikde nic nezobrazuje, rozšiřuje obvykle (nebo upravuje) nějakou funkčnost nějaké komponenty. Spravovatelný je v adminisraci ve správci pluginů.

Dobře napsané komponenty v Joomle používají MVC (Model View Controller). Controller je obvykle v adresáři controllers dané komponenty. Zde by jste měl začít pátrání, pokud hledáte co se děje při určité akci. Controller sbírá vstupy od klienta (řekněme uživatele) a na jejich základě volá funkce modelu (v adresáři models, obvykle bude mít model stejné jméno jako controller) a výsledky zobrazuje pomocí View (adresář views, podadresář opět obvyke se stejným jménem jako controller), nebo provede přesměrování na jinou stránku. View si již jen načítá hodnoty z modelu a zobrtazí je pomocí šablony (standardně php soubor v podadresáři tmpl, u Vás je to ještě "rozšířené" o speciální template systém).

Takže ano, pravděpodobně se budete muset podívat do modelu, kde se tam bere viewResults, jak vzniká, zda nevolá nějakou jinou šablonu atd...

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

Odpověď od Ernst
09. lis 2015 11:52 - 09. lis 2015 12:03 #124436
Love factory - extensions.joomla.org/extensions/extensi...onships/love-factory
je komponenta, která má i moduly a pluginy, ty pluginy momentálně nepoužívám.
A ty moduly jsou tam zjevně jen proto, abych mohl zavolat určitou část nebo zobrazení love factory přímo z vlastního menu tedy přesněji z modulu
to rozdělení (komponenta,modul,plugin), co píšete chápu a vím, co zhruba každá dělá kde ji najít.
do controlleru jsem se díval jako první a nic jsem tam nenašel (již jsem v něm některé části upravoval)
tam je search.php
defined('_JEXEC') or die;

class FrontendControllerSearch extends FrontendController
{
	function search()
	{
	  $model = $this->getModel('search', 'FrontendModel');

	  if ('POST' == JFactory::getApplication()->input->getMethod())
	  {
	    $model->updateSearchQuery();
	  }

	  $type = JFactory::getApplication()->input->getString('type', 'quicksearch');

	  $settings = new LovefactorySettings();
	  $jump     = $settings->jump_to_results ? '#lovefactory-results' : '';

	  // Reset limitstart
	  $limitstart = JFactory::getApplication()->input->cookie->getInt('lovefactory_search_limitstart', 0);
	  if ($limitstart)
	  {
	    setcookie('lovefactory_search_limitstart', 0, null, '/');
	  }

	  $Itemid = JFactory::getApplication()->input->getInt('Itemid', 0);
	  $this->setRedirect(JRoute::_('index.php?option=com_lovefactory&view=' . $type . '&show=1&Itemid=' . $Itemid . $jump, false));
	}

	function changesort()
	{
	  $lovefactory_search_limitstart = JFactory::getApplication()->input->cookie->getInt('lovefactory_search_limitstart', 0);
    JFactory::getApplication()->input->set('limitstart', $lovefactory_search_limitstart);

	  $model = $this->getModel('search', 'FrontendModel');
	  $model->updateSortQuery();

	  $type = JFactory::getApplication()->input->getString('type', 'quicksearch');
	  $view = $this->getView($type, 'raw', 'FrontendView');

	  $view->display();

//	  $type = JRequest::getVar('type', 'quicksearch', 'REQUEST', 'string');
//
//	  $Itemid = JRequest::getVar('Itemid', 0, 'REQUEST', 'integer');
//	  $this->setRedirect('index.php?option=com_lovefactory&view='.$type.'&format=raw&show=1&limitstart='.$lovefactory_search_limitstart);
	}
}

prohledal jsem celý adresář lovefactory na text "viewResults" a nic
Nehledám samozřejmě hledáním windows, ale používám phpDesigner

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

Odpověď od Cony
09. lis 2015 13:40 #124437

ernst napsal: Love factory - extensions.joomla.org/extensions/extensi...onships/love-factory
je komponenta, která má i moduly a pluginy, ty pluginy momentálně nepoužívám.

Není. Love Factory je komponenta. Pluginy a moduly jsou samostatná rozšíření, která jsou určená pro komponentu Love Factory. Pro běh komponenty Love Factory nepotřebujete žádný z modulů, u pluginů to tak jednoznačně říct nelze, ale i to je možné. Moduly i pluginy mají svoje vlastní soubory, ve vlastních adresářích určených adresářovou strukturou Joomly.

To viewResults bude zřejmě někde v modelu, ne v controlleru. A nemusí být přímo v modelu search, ten zřejmě bude odvozen od nějakého obecnějšího modelu, ale v modelu search bude nějaké plnění daty, možná volání nějaké šablony nebo pod...

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

Odpověď od Ernst
09. lis 2015 14:25 - 09. lis 2015 14:27 #124438
dal jsem na ten text prohledat celý web a není to tam
Je tam pouze nadefinovaná array viewResults, ale není naplněna nebo jsou tam funkce getViewResults() nebo třída class FrontendViewResults extends FactoryView.

Už jsem takto něco několikrát hledal a vždy mi to zabralo pár dní, někdy až týden.
Tak to buď najdu, nebo přesvědčím zadavatele, že to tam tak nepotřebuje nebo si to potupně nechám od výrobce komponenty za 150 eur napsat

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