Dynamically modify itemid based on current menu - joomla

I have a site where a series of articles need to show up under two different menus. Depending on the active menu, different modules are displayed. The problem is that the internal links in the articles have an itemid in them which ties them to only one menu.
The solution I have in mind is to modify index.php for the template I use for those menus, and do a search and replace for all internal links - setting the itemid based on the current id. Keeping in mind that mod_rewrite won't work in this situation, is there a graceful way to do this in Joomla?
I suspect that I'd need to take
<jdoc:include type="component" />
and, instead of just including the component, read the content into a variable, do the search and replace and spit it back out. How might I go about doing this?
Are there simpler approaches to this problem?

Just remove the item id from the internal links. By default, the item id should be inherited from the current item.

Related

Using one Wix Dynamic Page for various entries in the site menu

I am doing a site in Wix.com so my wife can maintain it without my input. The draft site is live at:
http://www.wingspan.info
IMPORTANT: The wife is not a techie.
Essentially, the site displays our art work in galleries of paintings, etc, filtered by artist.
I have coded one page, then duplicated that to create the galleries and filter the WixDataQuery according to Andrew or Helen and Categories like Painting, Drawing, Sculpture, iPad Art, etc. Also, where we have exhibited (Exhibitions menu) some of our paintings.
All working, but any change to design and I have to change 15 pages...
So, it now strikes me that it would be more efficient to design one dynamic page, and set up the menu to display the different categories, as it is set up in the live site:
However, I can't find any documentation that shows how to use just the one dynamic page rather than my coded page duplicated to produce 12 different pages. Not clever...
Any suggestions / tutorials where I can find how to do this?
Thanks!
Basically, you want to add the Content Manager to your site if you haven't already, and then set up a collection with all of your data in it. One row per eventual "page" that you want.
Next, you can take the page you already designed and convert it to a dynamic page. It will then have a dataset on the page which you need to connect to various elements on the page through their connect buttons.
Finally, you'll need to edit your menu to point to the various instances of your dynamic page instead of the regular pages you have them pointing to now.
You can read all about how dynamic pages work here and here.

Joomla 4 - View with multiple parents

I'm trying to setup the router configuration for the first time in Joomla 4 and ran into a problem. I want to show the same item below different parent views. The parent views generate lists with items and for details i want to show the items on the same url, below the parent.
There are three Views a user could add in the menu: Listing, Search and Item.
These URls should be possible to generate:
/search/item1
/listing/item1
/item1
The problem is that i can only generate these urls if i set something like
$itemView->setParent($searchView)
Or
$itemView->setParent($listingView)
But i need both, depending on the Menu-Item where the item should be displayed. Without setParent i get URLs like /search/?view=item&id=xx.
I'm happy for any ideas!

On Joomla, how to show multiple editable articles on the same page?

I have a static website, which I want to make editable by the client. So, I decided to rebuild the website using Joomla. The current static home page uses Zurb's Foundation to display the contents in the following layout.
1st Row: 1 column,
2nd Row: 2 columns,
3rd Row: 1 column
Using Joomal, I have thought of the following options.
the whole page is 1 article: the client would need to understand html, to be able to maintain div's and classes. Isn't it?
Each column on the page (1 column on the 1st row + 2 columns on the 2nd row + 1 column on the 3rd row) is an article that the client can edit. In effect, the page displays the full contents of 4 articles in the above layout.
I think the 2nd option is the way to go. However, I could not figure out how to display multiple, FULL, EDITABLE articles on the same page. I looked at the extension (Articles Anywhere - https://extensions.joomla.org/extension/articles-anywhere). However, it seems that although this extension can display articles, they won't be editable by authorised users.
Your effort and time to answer my question are highly appreciated...
Throughout the last few days, I managed to achieve what I asked about. I thought of documenting it here for the benefit of others.
Let's say we want to create a page, which looks like the following.
1st Row has 1 column: Part-r1-c1
2nd Row has 2 columns: Part-r2-c1 & Part-r2-c2
3rd Row has 1 column: Part-r3-c1
Basically, you need to do the following.
Create a template having module positions for each "Part" of your page layout. Let's call this template "Custom Template". So, you will need to create 4 positions:
Part-r1-c1
Part-r2-c1
Part-r2-c2
Part-r3-c1
Creating a custom template is an involved process with quite a learning curve. You need to be patient until you understand how Joomla templates work. I suggest referring to the official documentation and some tutorial videos/articles. I found the following useful.
Convert an HTML Template to Joomla 2.5/3.0 (3-parts YouTube Video): https://www.youtube.com/watch?v=E13QMWgvwlA&t=3s
https://docs.joomla.org/Creating_a_basic_Joomla!_template
As an alternative to creating your own template, you can use a Template Extension (or framework). I like T3-Framework http://www.t3-framework.org/.
However, in my opinion, investing time in understanding how Joomla templates work has much higher return on investment than understanding how to customise/customize an existing framework. To build your own template, you need to be comfortable with changing php and xml files though.
Create an empty article, and call it something like "Dummy Article".
Create a menu item for your page, e.g. "Services". The type of this menu item should be "single article". Choose the "Dummy Article", which you created above, as the article to be displayed. Assign "Custom Template" to this menu item.
Create an article for each Part of your page, in which you will write the contents, which your customer would be able to change.
Create a module for each Part, and assign it to the related position of the layout, and insert the related article into this module. Inserting articles into modules is not part of standard Joomla (at the current version 3.6.4). To insert articles into modules, you need to use a Joomla extension, like https://extensions.joomla.org/extensions/extension/news-display/articles-anywhere/.
That's it.
I discovered the need for another feature, which I missed asking about in my question. I wanted to make some Parts, which are not editable by the customer. Here's how I did it.
Create a category for articles, which you don't want your customer to change. Let's call it "Protected". Change the permissions for this category to Deny access to Editors (with the assumption that you are going to provide your customer with an Editor User ID.)
Create articles for each Part of your page, in which you will write the contents, which your customer CANNOT change. Categorise these articles as "Protected."
Good Luck!
To display multiple articles on a page you can use the category blog view or the featured view or (with customization) the tagged items view. However you must not use "read more" within the articles. Make sure that the option to display edit icon is turned on and that you are logged in as a user with edit privileges for all of the articles in question. If you are an administrator, publisher or editor by default you will have these.

Joomla 3.2 - Load Component View from Specific Menu Item ID inside Another Component

I'm trying to get my head around Joomla 3.2's new framework and develop a capability/feature in a custom component (lets call it com_custom) that can load com_content's category blog view within com_custom's view, using the category blog's menu item id!
There are quite a few codes that I saw here and around the web that only load the default view of the 'imported' component, rather than the view specified in the imported component's assigned menu parameters. Also, most of these codes use deprecated functions, so I'm quite lost now.
So what I need to be able to add is:
Include a category blog view (say from menu item id 223) within com_custom's current view.
It should import all of the parameter setting of the category blog's menu item.
It should not be in an iFrame
Any help is much appreciated!!!
You can't include com_content because it makes use of the JPATH_COMPONENT constant in 14 different places, most notably in content.php (the main file that's loaded, even before the controller) and in most views, in order to load helpers.
These are the first two ways that come to mind to overcome this limitation:
Instantiate the articles model, load the data, and use your view to display it; you'll need to dig into the menu table to find the params related to your menuid; Bewre: Search engines might consider the duplicate content as spam.
Insert a jquery ajax call to get the url of the menuid adding &tmpl=component i.e.
index.php?option=com_content&view=category&id=13&Itemid=522&tmpl=component
The latter will be much easier to implement. Search Engines will NOT see the different content under different urls, since it's ajax.
Regarding the limitation, see also this question:
Joomla how can i create model from other component

com_zoo related items depend on category

What I really want is to have in my com_zoo app items description page a custom block what is showing the related items to clicked one. So one I found out, that it can be made it manually adding to every specific item the related items. The problem is that is not generated dynamically.
My question would be:is it possible from the actual administration tasks to handle this or it has to be coded. If it has to be code, what is the shortest way to achieve results. should I build a custom element or there is another way to do it?
thanks
Your related products module may be based on your product tags, for example.

Resources