Jump to content

Recommended Posts

Posted

Hello everyone!

I have searched the forum for quite a long time and I tried some solutions for my topic but nothing seems to work.

I need to create a Settings Page and for a native feeling I want to create it under the main navigation on top. The settings page should hold the Main Logo, some styling and other settings. As I said nothing seems to work for me. I tried to create a Page under Admin with Admin Template and ProcessPageEdit but then I can't assign an image field. 

I don't want to write a module because it is to much work for only 3 settings.

I hope someone of the forum could help me out!

Have a nice day!

Posted

You only need to create a hidden page with blank template let say settings, then put all settings in that page:

$page->rootParent()->child('template=settings, include=hidden');

or put it in _init.php:

$mySettings = $page->rootParent()->child('template=settings, include=hidden');

Posted
18 hours ago, bernhard said:

Hi,

it would be helpful for everybody to list what you've tried and what did not work and why ? 

What about https://modules.processwire.com/modules/settings-factory/ ?

As I described in short, I tried it with a custom settings page (with a blank template) under admin. But then no Fields were assigned. I tried it this way because I want to have a native feeling for the settings and the page should appear under the main navigation.

Is there any detailed tutorial for my purpose? I didn't find any.

I didn't know the module "settings factory" I will give it a try.

Posted

Hi ... Jonathan Lahijani has a great tutorial on youtube that can help you

Simply put, you need to create an option template,
then add 2 pages, one in the page tree named options, to which you choose the option template, and under the admin add another page and change the name, for example (admin_options), so that the names are not identical. Choose a process named ProcessPageEdit and save the page ...
in admin.php paste the code

// Custom Options Page
if( page()->name == 'admin_options' ) input()->get->id = pages()->get('options')->id;

Finally, you can add some css to hide the options page in the page tree.

/** Hook Admin Custom CSS */
$wire->addHookAfter('Page::render', function($event) {
	if(page()->template != 'admin') return; // Check if is Admin Panel
	$value  = $event->return; // Return Content
	$templates = urls()->templates; // Get Template folder URL
	$style = "<link rel='stylesheet' href='{$templates}assets/css/admin.css'>"; // Add Style inside bottom head
	$event->return = str_replace("</head>", "\n\t$style</head>", $value); // Return All Changes
});

You can also download the profile that has the option page created and see how you can create your own options page
https://github.com/rafaoski/site-minimal

 

  • Like 3
Posted
18 hours ago, rafaoski said:

Hi ... Jonathan Lahijani has a great tutorial on youtube that can help you

Simply put, you need to create an option template,
then add 2 pages, one in the page tree named options, to which you choose the option template, and under the admin add another page and change the name, for example (admin_options), so that the names are not identical. Choose a process named ProcessPageEdit and save the page ...
in admin.php paste the code


// Custom Options Page
if( page()->name == 'admin_options' ) input()->get->id = pages()->get('options')->id;

Finally, you can add some css to hide the options page in the page tree.


/** Hook Admin Custom CSS */
$wire->addHookAfter('Page::render', function($event) {
	if(page()->template != 'admin') return; // Check if is Admin Panel
	$value  = $event->return; // Return Content
	$templates = urls()->templates; // Get Template folder URL
	$style = "<link rel='stylesheet' href='{$templates}assets/css/admin.css'>"; // Add Style inside bottom head
	$event->return = str_replace("</head>", "\n\t$style</head>", $value); // Return All Changes
});

You can also download the profile that has the option page created and see how you can create your own options page
https://github.com/rafaoski/site-minimal

 

Hello!!!

Thank you for the share. This is what I need!!!

What is the best way to get the fields in the template if you want to access them? 

Posted

The easiest way is to set the options page in the _init.php file:

$siteOptions = $pages->get('/options/');

// If you set setFunctionsAPI ( $config->useFunctionsAPI = true;  ) to true in the configuration file, you can display them in the template in this way

$siteOptions = pages()->get('/options/');

//or
$siteOptions = pages('/options/');

Then in the template just display the fields:

<h1><?= $siteOptions->site_name ?></h1>

<?php
// In the field settings you should select to display a single image
if ($siteOptions->logo): ?>

	<img src="<?= $siteOptions->logo->url ?>" width='100' alt="<?= $siteOptions->logo->description ?>">

<?php endif ?>

Or add new “Unique” status for pages https://processwire.com/blog/posts/pw-3.0.127/
Add this status to the Options page and in the _init.php file get this way:

$siteOptions = pages()->get('options');

// or
$siteOptions = pages('options');

 

 

  • Like 1
Posted
On 7/31/2019 at 7:54 AM, rafaoski said:

The easiest way is to set the options page in the _init.php file:


$siteOptions = $pages->get('/options/');

// If you set setFunctionsAPI ( $config->useFunctionsAPI = true;  ) to true in the configuration file, you can display them in the template in this way

$siteOptions = pages()->get('/options/');

//or
$siteOptions = pages('/options/');

Then in the template just display the fields:


<h1><?= $siteOptions->site_name ?></h1>

<?php
// In the field settings you should select to display a single image
if ($siteOptions->logo): ?>

	<img src="<?= $siteOptions->logo->url ?>" width='100' alt="<?= $siteOptions->logo->description ?>">

<?php endif ?>

Or add new “Unique” status for pages https://processwire.com/blog/posts/pw-3.0.127/
Add this status to the Options page and in the _init.php file get this way:


$siteOptions = pages()->get('options');

// or
$siteOptions = pages('options');

 

 

Hello!!!

Thank you very much for your help!!! It works now like a charm!

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...